数组代码和经典案例

数组特点和经典代码案例

数组特点:

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 }
时间: 2024-07-29 01:54:08

数组代码和经典案例的相关文章

多线程十大经典案例之一 双线程读写队列数据

本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5136035 转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8646902 欢迎关注微博:http://weibo.com/MoreWindows 在<秒杀多线程系列>的前十五篇中介绍多线程的相关概念,多线程同步互斥问题<秒杀多线程第四篇一个经典的多线程同步问题>及解决多线程同步互斥的常用方法

秒杀多线程第十六篇 多线程十大经典案例之一 双线程读写队列数据

版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5136035 转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8646902 欢迎关注微博:http://weibo.com/MoreWindows 在<秒杀多线程系列>的前十五篇中介绍多线程的相关概念,多线程同步互斥问题<秒杀多

网络机器人的识别与攻防的经典案例

本文我们介绍一个网络机器人的识别与攻防的经典案例.使用到的代码见本人的superword项目: https://github.com/ysc/superword/blob/master/src/main/java/org/apdplat/superword/tools/ProxyIp.java 我们的目的是要使用机器人自动获取站点http://ip.qiaodm.com/ 和站点http://proxy.goubanjia.com/ 的免费高速HTTP代理IP和端口号. 不过他们未对机器人进行识

javascript的理解及经典案例

js的简介: JavaScript是一种能让你的网页更加生动活泼的程式语言,也是目前网页中设计中最容易学又最方便的语言. 你可以利用JavaScript轻易的做出亲切的欢迎讯息.漂亮的数字钟.有广告效果的跑马灯及简易的选举,还可以显示浏览器停留的时间.让这些特殊效果提高网页的可观性. javascript现在可以再网页上做很多很多事情,网页特效,操作dom,html5游戏(基于html5和JavaScript的结合),动画等等特效,还可以实现拉去后台数据(通过ajax),不仅可以做前台还可以做后

多线程面试题系列(16):多线程十大经典案例之一 双线程读写队列数据

前十五篇中介绍多线程的相关概念,多线程同步互斥问题(第四篇)及解决多线程同步互斥的常用方法--关键段.事件.互斥量.信号量.读写锁.为了让大家更加熟练运用多线程,将会有十篇文章来讲解十个多线程使用案例,相信看完这十篇后会让你能更加游刃有余的使用多线程. 首先来看第一篇--第十六篇 多线程十大经典案例之一 双线程读写队列数据 <多线程十大经典案例之一双线程读写队列数据>案例描述: MFC对话框中一个按钮的响应函数实现两个功能:显示数据同时处理数据,因此开两个线程,一个线程显示数据(开了一个定时器

HTML5 CSS3 经典案例:无插件拖拽上传图片 (支持预览与批量) (二)

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/31513065 上一篇已经实现了这个项目的整体的HTML和CSS: HTML5 CSS3 经典案例:无插件拖拽上传图片 (支持预览与批量) (一) 这篇博客直接在上篇的基础上完成,最终效果: 效果图1: 效果图2: 好了,请允许我把图片贴了两遍,方便大家看效果了~ 可以看出我们的图片的li的html其实还是挺复杂的,于是我把html文档做了一些修改: <span style=&quo

Hadoop经典案例Spark实现(七)——日志分析:分析非结构化文件

相关文章推荐 Hadoop经典案例Spark实现(一)--通过采集的气象数据分析每年的最高温度 Hadoop经典案例Spark实现(二)--数据去重问题 Hadoop经典案例Spark实现(三)--数据排序 Hadoop经典案例Spark实现(四)--平均成绩 Hadoop经典案例Spark实现(五)--求最大最小值问题 Hadoop经典案例Spark实现(六)--求最大的K个值并排序 Hadoop经典案例Spark实现(七)--日志分析:分析非结构化文件 1.需求:根据tomcat日志计算ur

Apache-rewrite+13个经典案例

Apache 重写规则的常见应用 (rewrite) 一:目的 本文旨在提供如何用Apache重写规则来解决一些常见的URL重写方法的问题,通过常见的 实例给用户一些使用重写规则的基本方法和线索. 二:为什么需要用重写规则? 一个网站,如果是长期需要放在internet上提供服务,必定会有不断地更新和维护,如临 时转移到其它服务器进行维护,重新组织目录结构,变换URL甚至改变到新的域名等等, 而为了让客户不会因此受到任何影响,最好的方法就是使用Apache Rewrite Rule(重写 规则)

Visual C NET数据库开发经典案例解析 附书光盘免费下载

为了让更多的朋友学得更快我共享出这代码(由于文件太大,我只上传了第二章人事管理的代码): 下载地址:http://www.cnblogs.com/Files/meta/Chap2.rar 配套光盘使用说明 (1)  本光盘是<Visual C#.NET数据库开发经典案例解析>的配套光盘,与图书一起发行,不得单独出售. (2)  本光盘的主要内容包括各章示例程序的代码及数据库文件.光盘的说明文件为Readme.txt,就是本文件. (3)  示例程序是按照它们出现的章顺序编排的. (4)  光盘