数组代码和经典案例

数组特点和经典代码案例

数组特点:

1、  数组是一段连续的内存空间,下标从0开始,最大下标长度-1。

2、  数组元素都是变量,变量的类型为定义数组的类型。

3、  数组元素在创建数组时,会完成初始化。

4、  数组创建后,长度不可改变。

经典代码案例

学生管理系统

要求实现登陆,学生信息的添加、显示,删除,修改,查询,排序,退出功能。

实现流程:

1、  弹出欢迎界面

 

2、  登陆业务:

要求用户输入用户名和密码

 

 

如果用户名和密码输入错误,给予提示,并让用户重新输入。

 

如果用户三次以上没有输入正确信息,提示“非法用户”,并结束程序

 

 

如果登陆成功。进入学生管理系统的主界面

 

 

3、  选择操作。

根据用户选择的选项,分别执行添加、删除、修改、查询,几个功能模块。要求使用函数调用实现。分别建立三个数组,分别保存学号、姓名、成绩。

4、  添加

分别提示用户输入学号、姓名、成绩,分别保存在三个数组中。

 

 

 

5、  显示

当用户添加完成后,回到主界面,选择显示选项后,显示现在所有学生信息。

 

6、  删除

提示用户输入要删除学生的姓名

 

如果没有该学生,给予提示。

 

完成删除操作,在现有的数组中移除数据。并显示删除后的结果。

 

7、  查找

提示用户输入要查找学生的姓名

 

完成查找后,显示查找后的结果

 

如果没有找到,给予提示

 

8、  修改

提示用户输入要修改学生的姓名

 

如果没有该学生,给予提示。

 

 

找到该学生后,提示用户重新输入学号、姓名、成绩

 

 

 

 

完成数据录入后,显示修改后的结果

 

9、  排序

    按成绩降序显示输出

10、              退出

选择退出后,结束程序。

 代码:

  1 package Myhomework;
  2 /**
  3  * 学生管理系统
  4  */
  5 import javax.swing.JOptionPane;
  6 
  7 public class Myhomework11 {
  8     /** 学号数组 */
  9     public static int[] student = new int[1000];
 10     /** 姓名数组 */
 11     public static String[] name = new String[1000];
 12     /** 成绩数组 */
 13     public static int[] grade = new int[1000];
 14     public static int number = 0 ;
 15 
 16     public static void main(String[] args) {
 17         JOptionPane.showMessageDialog(null, "欢迎光临");
 18         boolean isLand = login();
 19         if (isLand == false) {
 20             JOptionPane.showMessageDialog(null, "非法用户");
 21             System.exit(0);
 22         }
 23     
 24     while(true){
 25         String s=JOptionPane.showInputDialog(null,"1、添加  2、显示 3、删除 4、查找 5、修改 6、排序 7、退出");
 26         int item=Integer.parseInt(s);
 27         switch(item){
 28         case(1):
 29         add();//添加
 30         break;
 31         case(2):
 32         show();//显示
 33         break;
 34         case(3):
 35         del();//删除
 36         break;
 37         case(4):
 38         find();//查找
 39         break;
 40         case(5):
 41         amend();//修改
 42         break;
 43         case(6):
 44         rank();//排序
 45         break;
 46         case(7):
 47         System.out.print("退出");//退出
 48         System.exit(0);
 49         }
 50         
 51     }
 52         
 53     }
 54     
 55     
 56     /**
 57      * 查找
 58      */
 59     public static void find() {
 60         int index = findName();
 61         if(index!=-1){
 62         JOptionPane.showMessageDialog(null,"学号为:"+student[index]+" "+"姓名为:"+name[index]+" "+"成绩为:"+grade[index]);
 63         }
 64         }
 65     /**
 66      * 删除
 67      */
 68     public static void del(){
 69         int index = findName();
 70         if(index!=-1){
 71         for(int i = index ; i < number ; i++){
 72         student[i] = student[i+1];
 73         name[i] = name[i+1];
 74         grade[i] = grade[i+1];
 75 
 76         }
 77         number--;
 78         show();
 79         }
 80     }
 81     /**
 82      * 修改
 83      */
 84     
 85     public static void amend(){
 86         int index = findName();
 87         if(index!=-1){
 88         String newstudent = JOptionPane.showInputDialog(null,"请重新输入学号");
 89         String newname = JOptionPane.showInputDialog(null,"请重新输入姓名");
 90         String newgrade = JOptionPane.showInputDialog(null,"请重新输入成绩");
 91         student[index] = Integer.parseInt(newstudent);
 92         name[index] = newname;
 93         grade[index] = Integer.parseInt(newgrade);
 94         show();
 95         }
 96     }
 97     /**
 98      * 排序
 99      */
100     
101     public static void rank(){
102         for(int i = 0; i < number; i++){
103             for(int j = i+1; j < number; j++){
104             if(grade[i]<grade[j]){
105             int num1 = student[i];
106             student[i] = student[j];
107             student[j] = num1;
108             String num2 = name[i];
109             name[i] = name[j];
110             name[j] = num2;
111             int num3 = grade[i];
112             grade[i] = grade[j];
113             grade[j] = num3;
114             }
115             }
116         }
117             show();
118     }
119     /**
120      * 显示
121      */
122     public static void show(){
123         String str="学号  姓名  成绩\n";
124         for(int i=0;i<number;i++){
125         str +=student[i]+"     "+name[i]+"    "+grade[i]+"\n";
126         }
127         JOptionPane.showMessageDialog(null, str);
128     }
129     /**
130      * 添加
131      */
132     public static void add(){
133     String student1 =JOptionPane.showInputDialog(null,"请添加学号");
134     String name1=JOptionPane.showInputDialog(null,"请输入姓名");
135     String grade1=JOptionPane.showInputDialog(null,"请输入成绩");
136     student[number]=Integer.parseInt(student1);
137     name[number]=name1;
138     grade[number]=Integer.parseInt(grade1);
139     number++;
140     }
141     /**
142      * 登录
143      * @return 登录是否成功
144      */
145     
146     public static boolean login(){
147         for(int i=0;i<3;i++){
148     String code=JOptionPane.showInputDialog(null,"请输入用户名");
149     String pwd=JOptionPane.showInputDialog(null,"请输入密码");
150     if(code.equals("张二狗")&&(pwd.equals("123456"))){
151         return true;
152     }else{
153         JOptionPane.showMessageDialog(null, "用户名或密码错误");
154         if(i<=1){
155         JOptionPane.showMessageDialog(null, "你还有"+(2-i)+"次机会");
156     }else{
157         JOptionPane.showMessageDialog(null, "你已经连续三次输错,已无机会");
158     }
159     }    
160         }
161         return false;
162         
163     }
164     /**
165      * 寻找姓名在该姓名下的下标,如果没有找到返回-1
166      * @param name 
167      * 
168      * @return 姓名对应的下标
169      */
170 
171 public static int findName(){
172     String nameStr = JOptionPane.showInputDialog(null,"请输入姓名");
173     for(int i = 0 ; i <number;i++ ){
174     if(nameStr.equals(name[i])){
175     return i;
176     }
177     }
178     JOptionPane.showMessageDialog(null,"查无此人");
179     return-1;
180     }
181 }

 

posted @ 2017-04-23 23:03  赵大侠1  阅读(1676)  评论(0编辑  收藏  举报