原标题:Java课程设计/大作业合集
目录
前言
一、需求描述
二、功能介绍
三、具体实现
四、测试运行
写在最后:
最近很多小伙伴私聊博主问有没有小系统之类的Java课程设计,为响应广大同学的需求,今天给大家分享几个博主初学时写的小demo,并以汽车租赁系统为例详细列出(其他项目或者定制可以私信我,没有全栈博主解决不了的),希望能够帮到大家。
根据以上要求,用Java编程实现一个汽车租赁管理系统。
结合需求描述并适当拓展,主要实现以下功能:
1.普通用户能够通过系统租赁、查询车辆,并能够查看自己的租赁订单。
2.管理员登录后可以查看当前系统的所有车辆和用户租赁订单,可以增加、删除、修改系统中的车辆。
1.抽象父类Company
public abstract class Company{//抽象父类
private String brand;//品牌
private int id;//车辆编号
private float price;//租赁价格
private String license;//车牌号
private int days;//租赁天数
private double payMoney;//应付租金金额
public Company(){
}//空构造
public int getDays() {
return days;
}
public void setDays(int days) {
this.days = days;
}
public double getPayMoney() {
return payMoney;
}
public void setPayMoney(double payMoney) {
this.payMOney= payMoney;
}
public String getLicense() {
return license;
}
public void setLicense(String license) {
this.license = license;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public abstract float RecentFee(int days);//抽象支付计算方法
}
2.货车类GoodsVehicle
public class GoodsVehicle extends Company{
private String tonnage;
public String getTonnage() {
return tonnage;
}
public void setTonnage(String tonnage) {
this.tOnnage= tonnage;
}
public GoodsVehicle(String brand, String tonnage, float price, int id, String license){//有参构造
setBrand(brand);
setTonnage(tonnage);
setPrice(price);
setId(id);
setLicense(license);
}
@Override
public float RecentFee(int days) {//重写支付计算方法
// TODO Auto-generated method stub
float mOney= this.getPrice()*days;//得到折扣前应付租金
if(days > 3 && days <=7) {
money *= 0.8f;
}else if(days > 7 && days <= 15) {
money *=0.7f;
}else if(days > 15 && days <= 30) {
money *= 0.6f;
}else if(days > 30 && days <= 150) {
money *= 0.5f;
}else if(days > 150) {
money *= 0.4f;
}
return money;//返回打折后应付金额
}
}
3.客车类Sedan
public class Sedan extends Company{
private String seat;//子类独有属性:车辆座位
public String getSeat() {
return seat;
}
public void setSeat(String seat) {
this.seat = seat;
}
public Sedan(String brand, String seat, float price, int id,String license){//有参构造
setBrand(brand);
setSeat(seat);
setPrice(price);
setId(id);
setLicense(license);
}
@Override
public float RecentFee(int days) {//重写支付计算方法
float mOney= this.getPrice()*days;//得到折扣前应付金额
if(days >= 3 && days <7) {
money *= 0.9f;
}else if(days >= 7 && days <30) {
money *=0.8f;
}else if(days >= 30 && days <150) {
money *= 0.7f;
}else if(days >= 150) {
money *=0.6f;
}
return money;//返回折扣后应付金额
}
}
4.轿车类Truck
public class Truck extends Company {
private String model;//子类独有属性:车辆型号
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public Truck(String brand, String model, float price, int id, String license){//有参构造
setBrand(brand);
setModel(model);
setPrice(price);
setId(id);
setLicense(license);
}
@Override
public float RecentFee(int days) {//重写支付计算方法
// TODO Auto-generated method stub
float mOney= this.getPrice()*days;//得到折扣前应付租金
if(days > 7 && days <=30) {
money *= 0.9f;
}else if(days > 30 && days <= 150) {
money *=0.8f;
}else if(days > 150) {
money *= 0.7f;
}
return money;//返回打折后应付金额
}
}
5.管理系统主类ManagerSys
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class ManagerSys {//管理系统类
private static List
private static List
private static List
public static void main(String []args){
//默认添加管理系统4种轿车
listCar.add(new Truck("宝马","X5",800,1001,"湘FQ9456"));
listCar.add(new Truck("奥迪","A6",600,1002,"湘FQ8888"));
listCar.add(new Truck("大众","CC",300,1003,"湘FQ6666"));
listCar.add(new Truck("别克","GL8",600,1004,"湘FQ6688"));
//默认添加管理系统4种客车
bus.add(new Sedan("金杯","16",800,1001,"湘FQ12345"));
bus.add(new Sedan("金杯","16",800,1002,"湘FQ23456"));
bus.add(new Sedan("亚星","32",1500,1003,"湘FQ34567"));
bus.add(new Sedan("亚星","32",1500,1004,"湘FQ45678"));
//默认添加管理系统2种货车
GoodsCar.add(new GoodsVehicle("福田","10",500,2001,"湘AQ20211"));
GoodsCar.add(new GoodsVehicle("东风","24",1000,2002,"湘AQ20212"));
show();//系统选择交互界面
}
public static void show() {//系统选择交互界面方法
while (true) {
System.out.println("--------欢迎进入汽车之家--------");
System.out.println("1-进入管理员系统");
System.out.println("2-进入普通租赁用户系统");
System.out.println("3-退出");
System.out.println("请输入您想要进行的操作:");
Scanner user = new Scanner(System.in);
int temp = user.nextInt();
//输入命令判断
switch (temp) {
case 1:
CheckPwd(user);//管理员登录验证
break;
case 2:
UserSys.User(listCar,bus,GoodsCar, user);//用户系统
break;
case 3:
System.out.println("感谢您的信任与支持,再见!");
System.exit(0);
break;
default:
System.out.println("请做个遵守规则的用户哦\n");
}
}
}
private static void CheckPwd( Scanner user) {//登录验证方法
while (true) {
System.out.println("请输入管理员账号:");
int id = user.nextInt();
System.out.println("请输入管理员密码:");
String pwd = user.next();
if ((pwd.equalsIgnoreCase("abc123")) && (id == 1024)) {
Manager(user);//管理员交互界面
break;
} else {
System.out.println("账号或密码错误,请重新输入!");
}
}
}
private static void Manager( Scanner user) {//管理员交互界面方法
while (true) {
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("请输入您想要进行的操作:");
int manage = user.nextInt();
//输入命令判断
switch (manage) {
case 1:
queryCar();//查询当前系统车辆
break;
case 2:
queryOrder(UserSys.customerCar, UserSys.customerBus,UserSys.customerGoods);//查询用户租赁订单
break;
case 3:
addCar( user);//增加车辆
break;
case 4:
deleteCar(user);//删除车辆
break;
case 5:
updatePrice(user);//修改车辆租金
break;
case 6:
show();//主页面
break;
default:
System.out.println("请做个遵守规则的用户哦\n");
}
}
}
private static void updatePrice( Scanner user) {//修改车辆租金
int userIn=checkCar(user);//提示用户输入租赁车辆类型并检测合法性
System.out.println("请输入您需要修改租金车辆的编号");
int userId=user.nextInt();
System.out.println("请输入您需要修改的租金金额:");
float carPrice=user.nextFloat();
if (userIn==1){//修改轿车租金
for (int i=0;i
System.out.println("车辆:"+listCar.get(i).getBrand()
+listCar.get(i).getLicense()+"的租金已成功修改为"+carPrice);
listCar.get(i).setPrice(carPrice);
return;
}else if(i==listCar.size()-1){
System.out.println("对不起,没有找到您想要修改租金的车辆!");
}
}
}else if (userIn==2){//修改客车租金
for (int i=0;i
System.out.println("车辆:"+bus.get(i).getBrand()
+bus.get(i).getLicense()+"的租金已成功修改为"+carPrice);
bus.get(i).setPrice(carPrice);
return;
}else if(i==bus.size()-1){
System.out.println("对不起,没有找到您想要修改租金的车辆!");
}
}
}else if (userIn==3){//修改货车租金
for (int i=0;i
System.out.println("车辆:"+GoodsCar.get(i).getBrand()
+GoodsCar.get(i).getLicense()+"的租金已成功修改为"+carPrice);
GoodsCar.get(i).setPrice(carPrice);
return;
}else if(i==GoodsCar.size()-1){
System.out.println("对不起,没有找到您想要修改租金的车辆!");
}
}
}
}
private static void deleteCar(Scanner user) {//删除车辆方法
System.out.println("当前您的车辆清单如下:");
queryCar();//打印当前系统车辆
int userIn=checkCar(user);//提示用户输入租赁车辆类型并检测合法性
System.out.println("请输入您需要删除车辆的车牌编号");
int userId=user.nextInt();
if (userIn==1){//删除轿车
for (int i=0;i
System.out.println("车辆:" + listCar.get(i).getBrand()
+ listCar.get(i).getLicense() + "成功删除!");
listCar.remove(listCar.get(i));
return;
} else if (i == listCar.size() - 1) {
System.out.println("对不起,没有找到您想要删除的车辆!");
}
}
}else if (userIn==2){//删除客车
for (int i=0;i
System.out.println("车辆:"+bus.get(i).getBrand()
+bus.get(i).getLicense()+"成功删除!");
bus.remove(bus.get(i));
return;
}else if (i == bus.size() - 1) {
System.out.println("对不起,没有找到您想要删除的车辆!");
}
}
}else if (userIn==3){//删除货车
for (int i=0;i
System.out.println("车辆:"+GoodsCar.get(i).getBrand()
+GoodsCar.get(i).getLicense()+"成功删除!");
GoodsCar.remove(GoodsCar.get(i));
return;
}else if (i == GoodsCar.size() - 1) {
System.out.println("对不起,没有找到您想要删除的车辆!");
}
}
}
}
private static void addCar( Scanner user) {//添加车辆方法
int userIn=checkCar(user);//提示用户输入租赁车辆类型并检测合法性
System.out.println("请您输入要添加车辆的品牌");
String brand = user.next();
System.out.println("请您输入要添加车辆的型号/座位/吨www.yii666.com位");
String select = user.next();
System.out.println("请您输入要添加车辆的租价");
float price = user.nextFloat();
System.out.println("请您输入要添加车辆的编号");
int id = user.nextInt();
System.out.println("请您输入要添加车辆的车牌号");
String license = user.next();
switch (userIn) {
case 1:
listCar.add(new Truck(brand, select, price, id,license));//添加轿车对象
break;
case 2:
bus.add(new Sedan(brand, select, price, id,license));//添加客车对象
break;
case 3:
GoodsCar.add(new Sedan(brand, select, price, id,license));//添加货车对象
break;
}
System.out.println("车辆:"+brand+select+"添加成功!");
}
public static int checkCar(Scanner user) {//用户输入租赁车辆类型方法
boolean flag=true;
int sc=0;
while (flag) {
System.out.println("请您输入要操作车辆的类型,1-轿车,2-客车,3-货车");
int userIn = user.nextInt();
if (userIn==1||userIn==2||userIn==3){
sc=userIn;
flag=false;
}else {
System.out.println("您输入的类型有误!");
}
}return sc;
}
public static void queryCar() {//查询打印当前系统车辆
System.out.println("------轿车类(7天以上9折,30天以上8折,150天以上7折)------");
System.out.println("车辆品牌\t\t"+"车辆型号\t\t"+"租赁价格\t\t"+"车辆编号\t\t"+"车牌号码");
for (Company com:listCar) {
Truck com1=(Truck)com;
System.out.println(com.getBrand()+"\t\t"+com1.getModel()+"\t\t\t"
+com.getPrice()+"\t\t"+com.getId()+"\t\t"+com.getLicense());
}
System.out.println("-----客车类(3天及以上9折,7天及以上8折,30天及以上7折,150天及以上6折)-----");
System.out.println("车辆品牌\t\t"+"车辆座位\t\t"+"租赁价格\t\t"+"车辆编号\t\t"+"车牌号码");
for (Company com:bus) {
Sedan com1=(Sedan) com;
System.out.println(com.getBrand()+"\t\t"+com1.getSeat()+"\t\t\t"
+com.getPrice()+"\t\t"+com.getId()+"\t\t"+com.getLicense());
}
System.out.println("-----货车类(3天及以上8折,7天及以上7折,15天及以上6折,30天及以上5折,150天及以上4折)-----");
System.out.println("车辆品牌\t\t"+"车辆吨位\t\t"+"租赁价格\t\t"+"车辆编号\t\t"+"车牌号码");
for (Company com:GoodsCar) {
GoodsVehicle com1=(GoodsVehicle) com;
System.out.println(com.getBrand()+"\t\t"+com1.getTonnage()+"\t\t\t"
+com.getPrice()+"\t\t"+com.getId()+"\t\t"+com.getLicense());
}
}
public static void queryOrder(List
List
System.out.println("*******订单信息*******");
System.out.println("车辆品牌\t\t"+"车辆型号/座位/吨位\t\t"+"租赁天数\t\t"+"租赁金额\t\t"+"车牌号码");
for (Company com : customerCar) {//遍历输出轿车
Truck com1 = (Truck) com;
System.out.println(com.getBrand() + "\t\t\t" + com1.getModel() + "型\t\t\t\t\t"
+ com.getDays() + "\t\t" + com.getPayMoney() + "\t\t" + com.getLicense());
}
for (Company com : customerBus) {//遍历输出客车
Sedan com1 = (Sedan) com;
System.out.println(com.getBrand() + "\t\t\t" + com1.getSeat() + "座\t\t\t\t\t"
+ com.getDays() + "\t\t" + com.getPayMoney() + "\t\t" + com.getLicense());
}
for (Company com : customerGoods) {//遍历输出货车
GoodsVehicle com1 = (GoodsVehicle) com;
System.out.println(com.getBrand() + "\t\t\t" + com1.getTonnage() + "吨\t\t\t\t\t"
+ com.getDays() + "\t\t" + com.getPayMoney() + "\t\t" + com.getLicense());
}
}
public static void removeCar(Company trunk) {//在管理系统中移除用户创建的轿车对象,代表车已经租出
for (int i=0;i
listCar.remove(i);
return;
}
}
}
public static void removeBus(Company sedan) {//在管理系统中移除用户创建的客车对象,代表车已经租出www.yii666.com
for (int i=0;i
bus.remove(i);
return;
}
}
}
public static void removeGoodsCar(Company goodVehicle) {//在管理系统中移除用户创建的货车对象,代表车已经租出
for (int i=0;i
GoodsCar.remove(i);
return;
}
}
}
}
6.普通用户系统类UserSys
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class UserSys {//用户系统类
public static List
public static List
public static List
public static void User(List
List
while (true) {
//打印
System.out.println("*****欢迎光临汽车租赁公司*****");
System.out.println("1-租赁车辆");
System.out.println("2-查询当前系统车辆");
System.out.println("3-查看我的租赁订单");
System.out.println("4-返回主页面");
System.out.println("请输入您想要进行的操作:");
int using = user.nextInt();
//判断用户输入命令
switch (using) {
case 1:
recentCar(listCar, bus,GoodsCar, user);
break;
case 2:
ManagerSys.queryCar();//管理系统所有现存车辆
break;
case 3:
ManagerSys.queryOrder(customerCar,customerBus,customerGoods);//用户租赁订单
break;
case 4:
ManagerSys.show();//主界面
break;
default:
System.out.println("请做个遵守规则的用户哦\n");
}
}
}
private static void recentCar(List
List
ManagerSys.queryCar();//打印管理系统所有现存车辆
int userIn= ManagerSys.checkCar(user);//提示用户输入租赁车辆类型并检测合法性
String userModel="";//车辆型号初始化
String userSeat="";//车辆座位初始化
String userTOnnage="";//车辆吨位初始化
System.out.println("车辆的品牌/型号如下:");
if (userIn==1){
for (Company com:listCar) {//遍历打印所有轿车品牌供用户选择
Truck com1=(Truck)com;
System.out.println(com.getBrand()+":"+com1.getModel()+" ");
}
System.out.println("请输入您想要租赁的车辆品牌名称:");
String userBrand=user.next();
System.out.println("请输入您想要租赁的车辆型号:");
userModel=user.next();
Company truck=CarFactory(userBrand,userModel,userSeat,
userTonnage,listCar,bus,GoodsCar,userIn);//工厂创建一个新的轿车对象
if (truck.getId()==0){//管理系统中找不到用户输入的轿车
System.out.println("您输入的车辆品牌或型号有误!");
}else {//管理系统中找到了用户输入的轿车
System.out.println("请输入您想要租的天数:");
truck.setDays(user.nextInt());//租车天数存入轿车对象
truck.setPayMoney(truck.RecentFee(truck.getDays()));//计算租车费用并存入轿车对象
customerCar.add(truck);//在全局轿车集合中添加创建的轿车对象
ManagerSys.removeCar(truck);//在管理系统中移除创建的轿车对象,代表车已经租出
System.out.println("租赁成功!您租赁的是:" + truck.getBrand()
+ userModel + ",车牌号为:" + truck.getLicense());
System.out.println("共租赁"+truck.getDays()+"天,需要支付的租金为:¥"+truck.getPayMoney());
}
}if (userIn==2){
for (Company com:bus) {//遍历打印所有客车品牌供用户选择
Sedan com1=(Sedan) com;
System.out.println(com.getBrand()+":"+com1.getSeat()+"座");
文章来源地址14680.html }
System.out.println("请输入您想要租赁的车辆品牌名称:");
String userBrand=user.next();
System.out.println("请输入您想要租赁的车辆座位数量:");
userSeat=user.next();
Company sedan=CarFactory(userBrand,userModel,userSeat,
userTonnage,listCar,bus,GoodsCar,userIn);//工厂创建一个新的客车对象
if (sedan.getId()==0){//管理系统中找不到用户输入的客车
System.out.println("您输入的车辆品牌或型号有误!");
}
else {//管理系统中找到了用户输入的客车
System.out.println("请输入您想要租的天数:");
sedan.setDays(user.nextInt());//租车天数存入客车对象
sedan.setPayMoney(sedan.RecentFee(sedan.getDays()));//计算租车费用并存入客车对象
customerBus.add(sedan);//在全局客车集合中添加创建的客车对象
ManagerSys.removeBus(sedan);//在管理系统中移除创建的客车对象,代表车已经租出
System.out.println("租赁成功!您租赁的是:" + sedan.getBrand()
+ userSeat + "座,车牌号为:" + sedan.getLicense());
System.out.println("共租赁"+sedan.getDays()+"天,需要支付的租金为:¥"+sedan.getPayMoney());
}
}if (userIn==3){
for (Company com:GoodsCar) {//遍历打印所有客车品牌供用户选择
GoodsVehicle com1=(GoodsVehicle) com;
System.out.println(com.getBrand()+":"+com1.getTonnage()+"吨");
}
System.out.println("请输入您想要租赁的车辆品牌名称:");
String userBrand=user.next();
System.out.println("请输入您想要租赁的车辆吨位数量:");
userTOnnage=user.next();
Company goodsvegicle=CarFactory(userBrand,userModel,userSeat,
userTonnage,listCar,bus,GoodsCar,userIn);//工厂创建一个新的客车对象
if (goodsvegicle.getId()==0){//管理系统中找不到用户输入的客车
System.out.println("您输入的车辆品牌/型号/吨位有误!");
}
else {//管理系统中找到了用户输入的客车
System.out.println("请输入您想要租的天数:");
goodsvegicle.setDays(user.nextInt());//租车天数存入客车对象
goodsvegicle.setPayMoney(goodsvegicle.RecentFee(goodsvegicle.getDays()));//计算租车费用并存入客车对象
customerGoods.add(goodsvegicle);//在全局客车集合中添加创建的客车对象
ManagerSys.removeGoodsCar(goodsvegicle);//在管理系统中移除创建的客车对象,代表车已经租出
System.out.println("租赁成功!您租赁的是:" + goodsvegicle.getBrand()
+ userSeat + "吨,车牌号为:" + goodsvegicle.getLicense());
System.out.println("共租赁"+goodsvegicle.getDays()+"天,需要支付的租金为"
+ ":¥"+goodsvegicle.getPayMoney());
}
}
}
public static Company CarFactory(String userBrand,String userModel,String userSeat,String userTonnage,
List
String brand = "";//初始化
String seat = "";
String model = "";
String tOnnage= "";
float price = 0;
int id = 0;
String license = "";
if (useIn == 1) {//创造轿车
for (Company com : listCar) {
Truck com1 = (Truck) com;
if (userBrand.equalsIgnoreCase(com.getBrand())//寻找系统是否存在该轿车
&& userModel.equalsIgnoreCase文章来源站点https://www.yii666.com/(com1.getModel())) {
brand = com.getBrand();
model = com1.getModel();
price = com.getPrice();
id = com.getId();
license = com.getLicense();
break;
}
}return new Truck(brand, model, price, id, license);//返回一个新的轿车对象
} else if (useIn == 2) {
for (Company com : bus) {
Sedan com1 = (Sedan) com;
if (userBrand.equalsIgnoreCase(com.getBrand()) //寻找系统是否存在该客车
&& userSeat.equalsIgnoreCase(com1.getSeat())) {
brand = com.getBrand();
seat = com1.getSeat();
price = com.getPrice();
id = com.getId();
license = com.getLicense();
break;
}
}return new Sedan(brand, seat, price, id, license);//返回一个新的客车对象
}else if (useIn == 3) {
for (Company com : GoodsCar) {
GoodsVehicle com1 = (GoodsVehicle) com;
if (userBrand.equalsIgnoreCase(com.getBrand()) //寻找系统是否存在该货车
&& userTonnage.equalsIgnoreCase(com1.getTonnage())) {
brand = com.getBrand();
tOnnage= com1.getTonnage();
price = com.getPrice();
id = com.getId();
license = com.getLicense();
break;
}
}return new GoodsVehicle(brand, tonnage, price, id, license);//返回一个新的货车对象
}else {
return null;
}
}
}
(1)初始状态
(2)初始车辆情况
(3)用户租赁业务-轿车
(4)用户租赁业务-客车
(5)用户租赁业务-货车
(6)用户租赁业务完成后车辆查询
(7)用户租赁订单查询
(8)返回主页面
增加业务部分展示(管理员系统增删改查):
(1)登录验证及主界面
(2)查询当前系统现存车辆
(3)查询用户租赁订单
(4)增加车辆
(5)删除车辆
正在上传…重新上传取消
(6)修改车辆租金
(7)操作后的系统车辆状态
五、其他小demo
由于篇幅有限,还有很多类似的小demo就不一一贴出来了,大家浅看一下:
1.超市管理系统
2.个账务系统
3.员工管理系统
4.薪酬管理系统
另外如果是JavaWeb或者是要求整合Spring全家桶或者Redis、Du文章来源地址14680.htmlbbo微服务等任何中间件的项目可以移步博主的其他博客,需要定制化功能需求的小伙伴可以私信我,没有全栈博主解决不了的,有任何问题可以在评论区提,我会一一回复。如果大家觉得有用,就点赞、收藏、转发吧,创作不易,点赞是最好的鼓励。
来源于:Java课程设计/大作业合集