本篇文章主要讲的是:上一周通过做《数组版DVD租借系统》的编程思想及冒泡排序
摘要:作为一名程序员要知道一点,没有做不到的只有想不到的。只有先把思路想好了,后面的实现就不是什么大问题了。那么要怎么理清思路呢?
无非程序设计包括以下几大点:1.数据的存储2.数据的操作3.数据的显示。得到了数据,然后逻辑实现对数据的操作,最后显示出来。
下面以DVD租借系统为例细说:
一.整体框架思路
1.数据存储
*找出需要存储的数据:
1)DVD编号 2)DVD的名称 3)DVD的状态 4)DVD的租出日期 5)DVD的租金(元/天)
(这是拿到要求后初步得出的数据)
2.数据的操作
*找出需要操作的功能:
1)查看 :查看当前库里面存在的DVD所有信息
2)添加 :添加一条DVD信息进入库里
3)删除 :从库里删除一条或多条DVD信息
4)借出 :修改DVD的状态(以借出/可借),并加上借出日期
5)归还 :清楚借出日期,修改DVD状态为(可借),并清算租借金额
6)排行榜:根据租金的贵低排行
7)退出 :结束程序
3.数据的显示
在操作台显示所需要的DVD数据,具体显示具体出来。
例如,我要查找可借的DVD,可删的DVD,查看所有的DVD信息。查看排行最高的DVD。
等等。
二.框架的具体内容
1.存储定义已知信息:
//初步可知需定义的数据
int id []=new int[100]; //存储编号
String name []=new String[100]; //存储DVD名
String state []=new String[100]; //存储状态
String date []=new String[100]; //存储时间,我是初始时间
double money []-new double[100]; //存储租金
//---------------------------
//根据需求添加的定义
Scanner sc=new Scanner(System.in);//定义一个输入的对象sc
2.定义功能方法
public void show(){} //查看功能
public void add(){} //添加功能
public void delete(){} //删除功能
public void loan(){} //借出功能
public void giveback(){} //归还功能
public void crollife(){} //排行榜
public void quit(){} //退出功能
3.具体显示
1)主菜单:首先我们需要作出一个主菜单来,并拥有对功能方法选择的功能,也就是用户输入对应的按键,调用对应的功能方法,例如按1调用==add()==方法,利用switch选择结构做选择。具体生活中需要
public void mainmenu(){
System.out.println("提示信息");
System.out.println("按1查看");
//取到用户输入的值
int selectnumber=sc.nextInt();
//选择的功能显示界面
switch(selectnumber){
case 1:
addWindows();
break;
...//其他功能就不一一书写了
}
}
2).返回菜单:通过调用主菜单
public void gomainmenu(){
//为了不会调用立马调转,添加一个按任意键返回的操作
System.out.print("提示信息");
String n=sc.next();
mainmenu();
}
3).界面显示:把显示和功能实现分开来写,更加的清晰明了,并且能够节省时间,因为显示代码大同小异,可以重复利用。
public void addWindows(){
//显示啥就打印啥
System.out.println("要显示的内容");
//逻辑实现放下的方法里面
add();
//操作完成返回主菜单调用返回主菜单方法
gomainmenu();
...
//根据需要显示的功能的个数来定义多个方法
}
4).初始化:为了可以直观的看到效果,先给系统添加了几条信息
public void into() {
id[0] = 1;
state[0] = "已借出";
name[0] = "罗马假日";
date[0] = "2019-02-13";
money[0] = 2;
id[1] = 2;
state[1] = "可借";
name[1] = "美国队长";
date[1] = "\t";
money[1] = 4;
id[2] = 3;
state[2] = "可借";
name[2] = "安徒生童话";
date[2] = "\t";
money[2] = 6;
}
三.具体功能的实现
选择的是排行榜功能。
排行榜分析:1)不能打乱原有库的内容。2)找到需要排序的数据,并重新定义新数组,存储这些信息。3)如何排序,并修改数据在数组中的位置。(利用冒泡排序的方法)
1.重新定义两个数组临时保存排行榜数据
//在外层定义两个新数组
double sortmoney[]=new double[100];
String sortname[]=new String[100];
2.得到库里面的数据。初始化新数组
//初始化新数组
public void init(){
for(int i=0;i<id.length;i++){
if(id[i]==0){
break;
}
sortmoney[i]=money[i];
sortName[i]=name[i];
}
}
3.排序:利用冒泡排序的思想,对sortmoney数组进行排序,联动修改sortname数组,同步排序。
//冒泡排序由大到小排列
public void Sort(){
//调用初始化数组方法
init();
for (int i = 0; i < id.length-1; i++) {
for(int j=0;j<id.length-1-i;j++){
if(sortmoney[j]<sortmoney[j+1]){
//排序交换,大的就往前换
double tmp;
tmp=sortmoney[j];
sortmoney[j]=sortmoney[j+1];
sortmoney[j+1]=tmp;
String Str;
Str=sortName[j];
sortname[j]=sortName[j+1];
sortname[j+1]=Str;
}
}
}
学习总结:本周的收货,一个设计程序的套路,无套不欢,套套更轻松。
也就是以上的设计框架啦:把功能、显示、初始化等。每一个涉及到的相同意义或相同分类的方法写在一起。即方便查看,又方便修改。减少来代码的重复,和耦合性,让思路更清晰。让我们一起期待下一周的到来吧。