java习题-面向对象封装-春节晚会最喜爱节目评选模拟程序

要求:
1、功能描述:春节晚会有四类节目,每类节目的类型名称及代号分别为 小品 X, 舞蹈 W,独唱 D,杂技 Z。程序操作员将每张观众的选票上所填的代号(X、W、D、或Z)循环输入电脑,输入字母E结束输入,然后将所有节目的得票情况显示出来,并显示最终获奖节目的信息。
2、具体要求如下:
(1)要求用面向对象方法,编写节目类JieMu,将节目的类型名称、代号和票数保存到类JieMu的对象中,并实现相应的getXXX 和 setXXX方法。
(2)编写主程序class OneTest(请考试学员统一使用主类名称:OneTest)
(3)输入数据之前,显示出各类节目的代号及类型名称:(提示:建立一个节目类型数组)如下图所示。
(4)循环执行接收键盘输入的节目代号,直到输入的数字为E,结束选票的输入工作,如下图所示
(5)在接收每次输入的选票后要求验证该选票是否有效,即:如果输入的数不是X,D,W,Z,E这5个字母之一,应显示出错误提示信息:此选票无效,请输入正确的节目代号!并继续等待输入。
(6)输入结束后显示所有节目的得票情况,如图所示
(7)输出最终获奖节目的相关信息,如图所示。
(8)建议用函数实现获得最终获选节目的功能(提示:以节目数组为参数,返回类型为:节目类型)
(9)从控制台接受输入数据,可以参考使用下面的代码
(10)只要提交源代码OneTest.java 和 JieMu.java
三、参考图示:

 

 

 

 JieMu.java

 1 package partyprogram;
 2 
 3 public class JieMu {
 4     private String name;//类型名称
 5     private String code;//代号
 6     private int ticketNum=0;//票数
 7     //构造方法
 8     public JieMu(String name, String code) {
 9         super();
10         this.name = name;
11         this.code = code;
12     }
13     public JieMu() {
14         super();
15         // TODO Auto-generated constructor stub
16     }
17 
18     public String getName() {
19         return name;
20     }
21     public void setName(String name) {
22         this.name = name;
23     }
24     public String getCode() {
25         return code;
26     }
27     public void setCode(String code) {
28         this.code = code;
29     }
30     public int getTicketNum() {
31         return ticketNum;
32     }
33     public void setTicketNum(int ticketNum) {
34         this.ticketNum = ticketNum;
35     }
36     
37     
38     /**
39      * 参数1: code :name
40      * 参数2:name:ticket
41      * 参数不是1也不是2:输出观众最喜欢的节目
42      * 
43      */
44     public String show(int select){
45         if(select ==1)
46             return code+" : "+name;
47         else if(select==2){
48             return name+" : "+ticketNum;
49         }
50         else 
51             return "观众最喜欢的节目是:"+name+"  获得了"+ticketNum+"票";
52         
53     }
54     //用于进行票数的增加
55     public void addticketnum(){
56         ticketNum++;
57     }
58     //用于判断当前id是否存在
59     public boolean isSame(String code){
60         return this.code.equalsIgnoreCase(code);
61     }
62     
63 }

 

OntTest.java

 1 package partyprogram;
 2 
 3 import java.util.Scanner;
 4 
 5 public class OntTest {
 6     public static void main(String[] args) {
 7         //准备数据,创建一个所有名称的数组
 8         String[] names={"小品","舞蹈","独唱","杂技"};
 9         //创建一个代号的数组
10         String[] codes={"X","D","W","Z"};
11         //利用以上数组创建节目数组 null null null null
12         JieMu[] jiemu=new JieMu[names.length];
13         //给数组得每一个元素进行实例化对象操作
14         for(int i = 0;i<jiemu.length;i++){//给null new对象
15             jiemu[i]=new JieMu(names[i],codes[i]);
16         }
17         //打印节目单
18         System.out.println("选举开始,节目代号和名称如下");
19         //打印信息 
20         for(JieMu jm:jiemu){
21             System.out.println(jm.show(1));
22         }
23         //接收输入指令
24         Scanner sc = new Scanner(System.in);
25         do{
26             System.out.print("请选择你喜欢的节目前的代号进行投票(输入E结束):");
27             String jge = sc.next();
28             //判断输入指令是否为E     equalsIgnoreCase忽略大小写
29             if("E".equalsIgnoreCase(jge)) break;
30             boolean flag =false;//表示不正确的指令
31             for(JieMu jm:jiemu){
32                 if(jm.isSame(jge)){
33                     jm.addticketnum();
34                     flag=true;//表示选票指令正确
35                     break;
36                 }
37             }
38             //如果执行循环结束后,flag还是flase 表示指令输入错误
39             if(!flag) System.out.println("输入的指令错误");
40             
41         }while(true);
42         System.out.println("选举结束");
43         //对选票结果进行排序,不考虑同票
44         //利用冒泡排序
45         for(int i=0;i<jiemu.length-1;i++){
46             for(int j=0;j<jiemu.length-1-i;j++){
47                 if(jiemu[j].getTicketNum()<jiemu[j+1].getTicketNum()){
48                     JieMu jm = jiemu[j+1];
49                     jiemu[j+1]=jiemu[j];
50                     jiemu[j]=jm;
51                 }
52             }
53         }
54         for(JieMu jm:jiemu){
55             System.out.println(jm.show(2));
56         }
57         System.out.println(jiemu[max].show(0));
58     
59     }
60 }

 

posted @ 2020-03-12 01:02  shellxx  阅读(277)  评论(0)    收藏  举报