十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
需求:

创新互联致力于网站设计制作、成都网站设计,成都网站设计,集团网站建设等服务标准化,推过标准化降低中小企业的建站的成本,并持续提升建站的定制化服务水平进行质量交付,让企业网站从市场竞争中脱颖而出。 选择创新互联,就选择了安全、稳定、美观的网站建设服务!
完成一个和用户互动的租车管理系统,当中包括基础的增删改查,以及输出实时地热度排行榜!
功能设计:
在工程的包com.Test02中,搭建4个类,分别是程序启动(carSysStart)、控制台(carConsole)、数据存储内存库(carData_base)、系统的功能类(carFunction)
具体代码如下:
1.程序启动
package com.Test02;
public class carSysStart {
public static void main(String[] args) {
carConsole p=new carConsole();
p.setP(100);
p.getP().initBaseinfo();
p.getInfo();
}
}2.控制台
package com.Test02;
import java.util.Scanner;
public class carConsole {
private Scanner cin=new Scanner(System.in);
private carFunction p;
private boolean isBase=false;
public static void Prompt(){ //声明静态方法,之后其他类调用也不用先new
System.out.println("欢 迎 使 用自助车辆 管 理 系统");
System.out.println("-------------------------------------");
System.out.println("1. 新 增 车辆");
System.out.println("2. 查 询 车辆");
System.out.println("3. 删 除 车辆");
System.out.println("4. 借 出 车辆");
System.out.println("5. 归 还 车辆");
System.out.println("6. 排 行");
System.out.println("7. 退 出 ");
System.out.print("--------------------------------------\n");
}
public void setP(int maxSize) {
if(maxSize>0){
this.p=new carFunction(maxSize);
this.isBase=true;
}
else{
System.out.println("对不起,您要申请的内存规模有误!");
}
}
public carFunction getP(){
return p;
}
public void getInfo(){
if(isBase){
Prompt();
boolean isStart=true;
while(isStart){
System.out.println("请选择:");
int choice=cin.nextInt();
switch(choice){
case 1:
System.out.println("请输入新增车辆的名称:");
p.car_Add(cin.next());
break;
case 2:
p.car_book_Find();
break;
case 3:
System.out.println("请输入要删除车辆的名字:");
p.car_Delete(cin.next());
break;
case 4:
System.out.println("请输入要借出的车辆名称:");
String name=cin.next();
System.out.println("请输入借出的日期:");
String date=cin.next();
p.car_lend(name, date);
break;
case 5:
System.out.println("请输入要归还的车辆:");
String name1=cin.next();
System.out.println("请输入归还的日期:");
String date1=cin.next();
p.car_return(name1, date1);
break;
case 6:
p.car_print_Rank();
break;
case 7:
isStart=p.exit();
System.out.println("借车系统退出成功!欢迎您下次继续使用本系统!");
break;
default:
System.out.println("输入有误,请重新输入!");
Prompt();
break;
}
}
}
else
System.out.println("对不起,目前该系统的数据库程序员小哥还在拼命打造中!详情请联系工作人员...");
}
}3.数据存储内存库
package com.Test02;
public class carData_base {
String[] name;
String[] date;
boolean[] isLoan;
long[] loanSize;
public carData_base(int maxSize) {
this.name =new String[maxSize];
this.date =new String[maxSize];
this.isLoan =new boolean[maxSize];
this.loanSize =new long[maxSize];
}
}4.系统各功能类
package com.Test02;
import java.util.*;
//import java.text.ParseException;
import java.text.SimpleDateFormat;
public class carFunction {
carData_base car;
public carFunction(int m){
car=new carData_base(m);
}
public void initBaseinfo(){
car.name[0] = "陆巡";
car.isLoan[0] = true;
car.date[0] = "2017-7-1";
car.loanSize[0] = 30;
car.name[1] = "霸道";
car.isLoan[1] = false;
car.loanSize[1] = 30;
car.name[2] = "汉兰达";
car.isLoan[2] = false;
car.loanSize[2] = 30;
}
public void returnMain(){
Scanner cin =new Scanner(System.in);
System.out.println("*********************");
System.out.print("输入0返回:");
if (cin.nextInt() == 0){
carConsole.Prompt();
} else {
System.out.println("输入错误, 异常终止!");
System.exit(0);
}
}
/*
* 汽车系统的功能类
* 1.增加车辆信息
* 2.删除车辆信息
* 3.改动车辆信息(包括借出、归还)
* 4.查询车辆信息
* */
public void car_Add(String name){
for (int i = 0; i < car.name.length; i++) {
if(car.name[i]==null){
car.name[i]=name;
car.date[i]=null;
car.isLoan[i]=false;
car.loanSize[i]=0;
System.out.println("新增车辆"+"\""+name+"\""+"成功!");
break;
}
}
returnMain();
}
public void car_Delete(String name){
//功能:删除目前在库中的所有名字与name相同的车辆信息
//具体思路两个游标:i表示当前要操作(覆盖,查询)的下标,j表示之后可以往前移动的元素下标; 时间复杂度 ≈ O(n)
boolean isYes=false,flag=false;
for (int i = 0,j = 0; i < car.name.length; i++) {
if(car.name[i]==null){
break;
}
else if(isYes){
if(car.isLoan[j] && name.equals(car.name[j])){
System.out.println("\""+name+"\""+"处于借出状态,不能删除!正在查找其他符合要求的车辆...");
}
car.name[i]=null;
car.date[i]=null;
car.isLoan[i]=false;
car.loanSize[i]=0;
}
else if(name.equals(car.name[i]) && !car.isLoan[i]){
j=j==0?i+1:j+1;
flag=true;
while(j 查看---------->\n");
System.out.println("序号\t状 态\t名称\t\t借出日期");
for (int i = 0; i < car.name.length; i++) {
if (car.name[i] == null) {
break;
} else if (car.isLoan[i] == true) {
System.out.println((i + 1) + "\t已借出\t" + car.name[i] + "\t\t"
+ car.date[i]);
} else if (car.isLoan[i] == false) {
System.out.println((i + 1) + "\t可 借\t" + car.name[i]);
}
}
returnMain();
}
public void car_print_Rank(){
String[] Name=new String[car.name.length];
long[] loanSize=new long[car.name.length];
int i;
for (i = 0; i < car.name.length; i++) { //copyArray
if(car.name[i]==null){
break;
}
else{
Name[i]=car.name[i];
loanSize[i]=car.loanSize[i];
}
}
System.out.println("名次\t\t名称\t\t热度");
for (int j = 0,flag; j < i; j++) { //选择排序+打印排行榜
flag=j;
for (int j2 = j+1; j2 < i; j2++) {
if(loanSize[flag] 总结:
对于面向对象的学习在这两天有更近一步的学习,学会了封装类中的成员,其实就是将其权限设为私有,然后设置接口即声明一个对其操作的方法以及得到它的方法。
在系统的编码中遇到以下几点问题需要改进自己:
1.类似于C/C++中的结构体排序的内容,Java也有sort的自定义排序compare的方法,本来思路是想直接用集合的sort类排序,奈何不会用这个compare,就调转船头改用选择排序了,日后还是要把这块内容掌握的;
2.时间的计算Java中也有对应的DATE类,不过自己只是粗略学了计算两个日期的差的运算(用声明的格式将string转为Date,然后利用getTime计算1970年1月1号到所设日期的差值,注意的点是单位是毫秒,要得到天数还要进行单位转化,并且返回的类型是long);
3.Java中有try..catch..finally..捕捉异常,这点是之前没学过的,在转化时间的时候为了防止异常终止程序,将其放在try中执行!
4.还有一个类中如果没有main方法就不要运行它。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。