资源描述
课程设计报告
课程名称 Java语言程序设计
设计题目 汽车租赁管理系统
专业班级
姓 名
学 号
成 绩 评 定
考核
内容
设计
表现
设计
报告
答辩
综合评
定成绩
成 绩
计算机技术与工程学院
和谐 勤奋 求是 创新
课程设计考核和成绩评定办法
1. 课程设计的考核由指导教师根据设计表现、设计报告、设计成果、答辩等几个方面,给出各项权重,综合评定成绩。该设计考核教研室主任审核,主管院长审批备案。
2. 成绩评定采用五级分制,即优、良、中、及格、不及格。
3. 参加本次设计时间不足三分之二或旷课四天以上者,不得参加本次考核,按不及格处理。
4. 课程设计结束一周内,指导教师提交成绩和设计总结。
5. 设计过程考核和成绩在教师手册中有记载。
课程设计报告内容
课程设计报告内容、格式各专业根据专业不同统一规范,经教研室主任审核、主管院长审批备案。
注: 1. 课程设计任务书和指导书在课程设计前发给学生,设计任务书放置在设计报告封面后和正文目录前。
2. 为了节省纸张,保护环境,便于保管实习报告,统一采用A4纸,实习报告建议双面打印(正文采用宋体五号字)或手写,右侧装订。
目录
引言 任务书及报告要求 4
第一部分 系统描述 7
第二部分 系统分析与设计 8
1. 软件需求 8
2. 功能设计 8
3. 数据库设计 8
4. 系统详细设计文档 9
5. 各个模块实现方法描述 10
第三部分 主要源代码 11
第四部分 运行结果截图 34
第五部分 设计总结 38
第六部分 参考文献 38
l 此处是本课程设计任务书
指导教师: 秦忠 赵洁红 张东辉 张秀坤 班级:计算14412 地点:机房
一、 课程设计目的
1、综合运用Java程序设计课程和其他相关课程的理论和知识,掌握面向对象程序设计的一般方法、常用技术及技巧,树立良好的软件设计思想,培养分析问题和解决实际问题的能力;
2、学会从OOP程序设计的方法及要求出发,认真分析题目,做好总体设计,根据要求科学地设计包、类、接口等,正确设计算法,合理安排界面,规范开发过程,仔细调试程序,做好设计总结;
3、充分利用互联网资源,提高学生获取知识,实践知识的能力。
二、 课程设计内容
1、 基于数据库的管理信息系统设计及实现
如: 学籍管理系统; 成绩管理系统;
学生学习、生活管理系统; 学生就业信息管理系统;
图书管理系统; 超市商品管理系统;
汽车租赁管理系统; 药店管理系统;
游泳馆售票管理系统; 计算机维修店管理系统等。
主要设计内容:根据题目需求进行数据库设计,软件结构设计、软件功能设计,软件主要功能:主界面设计;信息的录入/增加、删除、修改、查找、统计及业务功能实现设计等。
2、记事本程序设计及实现
记事本程序主要设计内容:菜单设计,记事本各功能项的实现。
计算器程序:界面设计,各种计算功能的实现。
3、网络通讯软件或游戏软件设计
注:以上3类题目任选其一或自选其它题目(必须由指导老师审核批准)。
三、 时间及任务安排
序号
完成内容
时间
1
设计准备(查阅文献、资料、确定方案)
1天
2
总体设计
2天
3
详细设计、编码、调试
5天
6
编写设计报告书
1.5天
7
验收和答辩
0.5天
8
合计
10天
四、 基本要求
1、 根据题目做好总体设计、详细设计;
2、 列出程序中的主要类(包括类中的成员变量、类变量和主要方法)、接口或画出类图等;
3、 编写程序,调试、运行程序;
4、 能够积极上网查询所需资料;
5、 提交设计报告书,可以选择打印和手写;
6、 设计报告书要求A4幅面,如果采用打印稿,正文采用5号宋体;
7、 答辩。
五、课程设计报告内容要求:
1. 格式见“模板”
2.报告内容:
1)系统描述:介绍开发的系统的功能和解决的问题;
2)分析与设计
功能模块划分;
数据库结构描述;
系统详细设计文档(类的划分及相互关系、接口设计等)
各个模块的实现方法描述;
3)源代码:符合Java编码规范;
4)运行结果截图
5)参考文献:参考文献的书写格式要符合如下规范;
a.期刊文献书写格式:
作者﹒论文篇名[J]﹒期刊名﹒出版年,卷(期
b.著作文献书写格式:
作者﹒书名[M]﹒出版地:出版社,出版年
六、验收及成绩评定
验收方式:检查程序运行、程序实现功能情况及答辩。成绩评定:结合设计表现(30%)、设计报告(成果质量等)(40%)和答辩情况(30%)按优秀、良好、中等、及格、不及格给出成绩。
l 课程设计报告正文要求如下:
一、系统描述
一.功能需求
需求分析是发现需求,分析求精,逻辑建模,需求规约的过程,其的目的是为了全面获取软件需求,准确理解业务逻辑。车辆租赁系统具有以下基本功能。
1. 用户管理:
包括用户的注册,注销等,没有账户的用户可以注册会员,登录,通过分类查询车辆,以及查看其详细信息。
2. 车源管理:
包括车辆信息的删除,添加,修改等,管理员能够向数据库中发布车辆信息,包括车辆的车型,价格,车主等信息。
3. 车源信息查找
用户可以在窗口上直接浏览车辆基本信息,也可以按照不同的要求方式对车辆信息进行查询,如按车辆类型查找(客车,货车),这样用户可以方便的找到自己想要的车源,人性化的查找方式为用户带来了极大的便利。
二.系统解决的问题
本系统主要完成前台浏览(用户注册,信息修改,车辆浏览),后台管理(车辆信息的录入,管理员登录)等功能。通过以上功能实现简单,便捷的租车系统。
车辆浏览:所有人都可以操作,顾客可以随意浏览车辆信息,按照车辆的序号排序,在点击按钮后,可以在表格中显示出可以租用车辆的信息,可以让用户选择。
车辆租用:顾客在浏览车辆信息后,可以根据自身需求选择所需租用的车辆,输入车辆的序号后,点击确定按钮,可以成功租用车辆,并且该车辆是否被租用的信息会自动更改为已被租用,如果用户租用已被租用的车辆则租用失败,无法租用成功。
车辆管理:该功能只能由管理员完成,由管理员完成对车辆信息的录入包括录入车辆的车主,价格,是否被租用等信息,并可以删除车辆信息。
会员管理:该功能由管理员完成,管理员可以注册其他的用户帐号,并将帐号密码录入数据库中。
二、系统分析与设计
软件需求;
时代在发展潮流在进步,个人的私家车已经逐渐的不能满足人们出行的要求
所以汽车租赁公司应运而生,越来越多的人选择租车来满足自己外出游玩的乐趣和兴趣,所以相应的租车系统就会产生。
功能设计;
实现系统由可以由管理员来录入车辆信息,包括车辆的价格,车型,车主等,并可以实现车辆信息的修改,查找和删除功能。
实现管理者可以为用户申请系统的使用权限,为用户申请帐号和密码。
用户可以登录自己的账户和密码,可以浏览车辆的信息和是否能被租用,同时选择自己所需的车型和相应的价格。在租用了相关车辆后,车辆是否被租用的信息就会被修改,实现其他与用户的租用。
数据库设计(或数据结构设计);
数据库内创建一个数据库,数据库中有三个表,分别记录车辆的信息,管理员的帐号和密码信息,最后一个记录用户的帐号和密码信息,车辆租用信息的修改也会写入到数据库中。
系统详细设计文档(类的划分及相互关系、接口设计、算法设计等);
整个系统分为6个类,从登录的类创建新的管理者类和用户端的类,用户端可以创建录入信息的界面,实现数据的录入和上传到数据库中,管理者可以在管理界面中为新用户注册新的界面,在新界面上录入到新的数据库中。
各个模块的实现方法描述;
车辆租赁系统登录界面
客
户
端
界
面
管
理
员
界
面
选择所要租用的车辆
车辆信息浏览
车辆信息录入
车辆信息删除
新用户注册
车辆信息浏览
查找所要租用的汽车
三、主要源代码
package gg ;
import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
import javax.swing.filechooser.*;
import java.io.FileInputStream;
public class Denglu extends JFrame implements ActionListener {
JButton jb3,jb4;
JTextField a1;
JPasswordField a2;
JLabel j1,j2,j3;
JPanel jp1,jp2,jp3,jp4;
Car c;
Connection con;
PreparedStatement sql;
ResultSet rs;
public Denglu(String s){
super(s);
j2=new JLabel("账号:");
j3=new JLabel("密码:");
jb3=new JButton("客户端登陆");
jb4=new JButton("管理员登陆");
jb3.addActionListener(this);
jb4.addActionListener(this);
a1=new JTextField(20);
a2=new JPasswordField(20);
j1=new JLabel("车辆租赁登陆界面");
jp1=new JPanel(); //界面按钮对象的实现和监听的添加
jp1.setLayout(new FlowLayout());
jp1.add(j2);jp1.add(a1);
jp2=new JPanel();
jp2.add(j3);jp2.add(a2);
JPanel jp3=new JPanel();
jp3.setLayout(new BorderLayout());
add(jp1,BorderLayout.NORTH);
add(jp2,BorderLayout.CENTER);
jp4=new JPanel();
jp4.setLayout(new FlowLayout());
jp4.add(jb3);
jp4.add(jb4);
add(jp4,BorderLayout.SOUTH); //完成界面布局
setSize(550,400);
setVisible(true);
this.setLocation(360,250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==jb3){
String DBDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String url="jdbc:sqlserver://127.0.0.1:1433;databaseName=xinxi";
String ming=a1.getText();
String mima=a2.getText();
try{
Class.forName(DBDriver);
}catch(ClassNotFoundException ev){}
try{
con=DriverManager.getConnection(url,"sa","123");
sql=con.prepareStatement("Select * From zhanghao where usersName='"+ming+"' and userskey='"+mima+"'");
rs=sql.executeQuery();
if(rs.next()){
this.dispose();
new Car("主菜单");
}
else{
JOptionPane.showMessageDialog(null,"账户名或密码错误","警告",JOptionPane.INFORMATION_MESSAGE,null );
}
con.close();
repaint();
}catch(SQLException ex){ex.printStackTrace();}
}
if(e.getSource()==jb4){
String DBDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String url="jdbc:sqlserver://127.0.0.1:1433;databaseName=xinxi";
String ming=a1.getText();
String mima=a2.getText();
try{
Class.forName(DBDriver);
}catch(ClassNotFoundException ev){}
try{
con=DriverManager.getConnection(url,"sa","123");
sql=con.prepareStatement("Select * From guanliyuan where usersName='"+ming+"' and usersKey='"+mima+"'");
rs=sql.executeQuery();
if(rs.next()){
this.dispose();
new guanliyuan();
}
else{
JOptionPane.showMessageDialog(null,"账户名或密码错误","警告",JOptionPane.INFORMATION_MESSAGE,null );
}
con.close();
repaint();
}catch(SQLException ex){ex.printStackTrace();}
} //对两个按钮具体的程序实现
}
public static void main(String args[]){
Denglu d=new Denglu("登陆界面");
}
}
package gg;
import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
import javax.swing.filechooser.*;
import java.io.FileInputStream;
public class Car extends JFrame implements ActionListener {
JButton jb1,jb2,jb3,jb4,jbb,jb5;
JLabel jl1,jl2,jl3;
JPanel jp1,jp2,jp3,jp4,jpn,jpc;
JTextField a1,a2;
JTable jt1=null;
Object a[][];
Object titles[]=null;
Connection con;
PreparedStatement sql;
ResultSet rs;
public Car(String s){
super(s);
jl1=new JLabel("车辆租赁系统(用户端)");
Object titles[]={"序号","车型","车主","价格","是否被租用"};
a=new Object[10][5];
jt1=new JTable(a,titles);
JScrollPane pane3 = new JScrollPane (jt1);
jl1.setForeground(Color.red);
jb2=new JButton("租车信息浏览");
jb2.addActionListener(this);
jl3=new JLabel("选择所要租用的汽车:");
jb3=new JButton("确定");
jb3.addActionListener(this);
a1=new JTextField(10);
jb4=new JButton("退出");
jb4.addActionListener(this);
jb5=new JButton("可租用的车辆"); //按钮的实现和添加监听
jb5.addActionListener(this);
jp2=new JPanel();
jp3=new JPanel();
jp4=new JPanel();
jpc=new JPanel();
jp3.setLayout(new FlowLayout(FlowLayout.CENTER));
jp3.add(jl3);
jp3.add(a1);
jp3.add(jb3);
jpc.setLayout(new BorderLayout());
jpc.add(jb5,BorderLayout.NORTH);
jpc.add(jb4,BorderLayout.CENTER);
jp4.setLayout(new BorderLayout());
jp4.add(jb2,BorderLayout.NORTH);
jp4.add(jp3,BorderLayout.CENTER);
jp4.add(jpc,BorderLayout.SOUTH);
jp2.setLayout(new BorderLayout());
jp2.add(jl1,BorderLayout.NORTH);
jp2.add(pane3,BorderLayout.CENTER);
this.setLayout(new BorderLayout());
add(jp4,BorderLayout.WEST);
add(jp2,BorderLayout.CENTER); //界面的布局
this.setSize(800,150);
this.setVisible(true);
this.setResizable(false);
this.setLocation(360,250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
String DBDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String url="jdbc:sqlserver://127.0.0.1:1433;databaseName=xinxi";
if(e.getSource()==jb2){
int i=0;
while(i<10){
a[i][0]=" ";
a[i][1]=" ";
a[i][2]=" ";
a[i][3]=" ";
a[i][4]=" ";
i++;
}
i=0;
try{
Class.forName(DBDriver);
}catch(ClassNotFoundException ev){}
try{
con=DriverManager.getConnection(url,"sa","123");
sql=con.prepareStatement("Select * From biao");
rs=sql.executeQuery();
while(rs.next()){
String xh=rs.getString("序号");
String cx=rs.getString("车型");
String cz=rs.getString("车主");
String jg=rs.getString("价格");
String zy=rs.getString("是否被租用");
a[i][0]=xh;
a[i][1]=cx;
a[i][2]=cz;
a[i][3]=jg;
a[i][4]=zy;
i++;
}
con.close();
repaint();
}catch(SQLException ex){ex.printStackTrace();}
} //车辆信息的浏览
if(e.getSource()==jb3){
try{
Class.forName(DBDriver);
}catch(ClassNotFoundException ev){}
try{
String first=a1.getText();
con=DriverManager.getConnection(url,"sa","123");
sql=con.prepareStatement("update biao set 是否被租用='是' where 序号='"+first+"'");
sql.executeUpdate();
con.close();
repaint();
}catch(SQLException ex){ex.printStackTrace();}
int i=0;
while(i<10){
a[i][0]=" ";
a[i][1]=" ";
a[i][2]=" ";
a[i][3]=" ";
a[i][4]=" ";
i++;
}
i=0;
try{
Class.forName(DBDriver);
}catch(ClassNotFoundException ev){}
try{
String first=a1.getText();
con=DriverManager.getConnection(url,"sa","123");
sql=con.prepareStatement("Select * From biao where 序号='"+first+"'");
rs=sql.executeQuery();
while(rs.next()){
String xh=rs.getString("序号");
String cx=rs.getString("车型");
String cz=rs.getString("车主");
String jg=rs.getString("价格");
String zy=rs.getString("是否被租用");
a[i][0]=xh;
a[i][1]=cx;
a[i][2]=cz;
a[i][3]=jg;
a[i][4]=zy;
i++;
}
JOptionPane.showMessageDialog(this,"租用成功","提示",JOptionPane.INFORMATION_MESSAGE,null );
con.close();
repaint();
}catch(SQLException ex){ex.printStackTrace();}
} //租用车辆的信息修改机制
if(e.getSource()==jb4){
this.dispose();
}
if(e.getSource()==jb5){
int i=0;
while(i<10){
a[i][0]=" ";
a[i][1]=" ";
a[i][2]=" ";
a[i][3]=" ";
a[i][4]=" ";
i++;
}
i=0;
try{
Class.forName(DBDriver);
}catch(ClassNotFoundException ev){}
try{
con=DriverManager.getConnection(url,"sa","123");
sql=con.prepareStatement("Select * From biao where 是否被租用='否'");
rs=sql.executeQuery();
while(rs.next()){
String xh=rs.getString("序号");
String cx=rs.getString("车型");
String cz=rs.getString("车主");
String jg=rs.getString("价格");
String zy=rs.getString("是否被租用");
a[i][0]=xh;
a[i][1]=cx;
a[i][2]=cz;
a[i][3]=jg;
a[i][4]=zy;
i++;
}
con.close();
repaint();
}catch(SQLException ex){ex.printStackTrace();}
}
} //可以被租用的车辆的信息浏览
public static void main(String[] args){
Car k=new Car("用户端");
}
}
package gg;
import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
import javax.swing.filechooser.*;
import java.io.FileInputStream;
public class guanliyuan extends JFrame implements ActionListener{
JButton jb1,jb2,jb4,jbb,jbc;
JLabel jl1,jl2;
JPanel jp1,jp2,jp3,jp4,jp5;
JTextField a1,a2;
JTable jt1=null;
Object a[][];
Object titles[]=null;
Connection con;
PreparedStatement sql;
ResultSet rs;
public guanliyuan(){
jl1=new JLabel("车辆租赁系统(管理员)");
jl1.setForeground(Color.red);
Object titles[]={"序号","车型","车主","价格","是否被租用"};
a=new Object[10][5];
jt1=new JTable(a,titles);
JScrollPane pane3 = new JScrollPane (jt1);
jl1.setForeground(Color.red);
jb1=new JButton("车辆信息录入");
jb1.addActionListener(this);
jl2=new JLabel("选择所要删除的车辆:");
jbb=new JButton("删除");
jbb.addActionListener(this);
a2=new JTextField(10);
jb2=new JButton("租车信息浏览");
jb2.addActionListener(this);
jbc=new JButton("新用户注册");
jbc.addActionListener(this);
a1=new JTextField(10);
jb4=new JButton("退出"); //按钮的实现和监听的添加
jb4.addActionListener(this);
jp1=new JPanel();
jp3=new JPanel();
jp2=new JPanel();
jp4=new JPanel();
jp5=new JPanel();
jp3.setLayout(new FlowLayout());
jp3.add(jl2);
jp3.add(a2);
jp3.add(jbb);
jp5.setLayout(new BorderLayout());
jp5.add(jp3,BorderLayout.CENTER);
jp5.add(jb2,BorderLayout.NORTH);
jp4.setLayout(new BorderLayout());
jp4.add(jbc,BorderLayout.NORTH);
jp4.add(jb4,BorderLayout.CENTER);
jp1.setLayout(new BorderLayout());
jp1.add(jb1,BorderLayout.NORTH);
jp1.add(jp5,BorderLayout.CENTER);
jp1.add(jp4,BorderLayout.SOUTH);
jp2.setLayout(new BorderLayout());
jp2.add(jl1,BorderLayout.NORTH);
jp2.add(pane3,BorderLayout.CENTER);
this.setLayout(new BorderLayout());
add(jp1,BorderLayout.WEST);
add(jp2,BorderLayout.CENTER); //完成布局
this.setTitle("管理员界面");
this.setSize(800,180);
this.setVisible(true);
// this.setResizable(false);
this.setLocation(360,250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e){
String DBDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String url="jdbc:sqlserver://127.0.0.1:1433;databaseName=xinxi";
if(e.getSource()==jb1){
this.dispose();
new Input();
} //录入功能的实现
if(e.getSource()==jbb){
int i=0;
while(i<10){
a[i][0]=" ";
a[i][1]=" ";
a[i][2]=" ";
a[i][3]=" ";
a[i][4]=" ";
i++;
}
i=0;
try{
Class.forName(DBDriver);
}catch(ClassNotFoundExceptio
展开阅读全文