数据库课设.docx
- 文档编号:18466316
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:44
- 大小:318.60KB
数据库课设.docx
《数据库课设.docx》由会员分享,可在线阅读,更多相关《数据库课设.docx(44页珍藏版)》请在冰点文库上搜索。
数据库课设
北华航天工业学院
课程设计报告(论文)
课程名称数据库原理与应用
报告(论文)题目:
停车场管理
系统数据库设计
作者所在系部:
计算机科学与工程系
作者所在专业:
计算机科学与技术专业
作者所在班级:
B10512
作者姓名:
易伟皎
指导教师姓名:
张春娥贾振华
完成时间:
2012年6月14日
北华航天工业学院教务处制
课程设计任务书
课题名称
《数据库原理与应用》课程设计
完成时间
2012.6.14
指导教师
贾振华张春娥
职称
副教授
学生姓名
易伟皎
班级
B10512
总体设计要求
总体设计要求:
1、明确课设任务,复习与查阅相关资料。
2、根据老师给出的设计题目,在两周时间内完成其中某一个题目的从用户需求分析、数据库设计到上机编程、调试和应用等全过程的数据库系统设计。
如果学生自拟题目,需经指导教师同意。
3、每位学生必须独立完成课程设计任务,不能抄袭,设计完成后,将所完成的工作交由老师检查;要求写出一份详细的设计报告。
4、按要求完成课设内容,课设报告要求文字和图工整、思路清楚、正确。
5、应用程序应具有一定的实用性和健壮性。
工作内容及时间进度安排
第一周、周1:
设计动员,分组,布置课程设计任务。
第一周、周2:
查阅资料,制定方案,进行程序总体设计。
第一周、周3~第二周2:
详细设计,系统调试。
第二周、周3:
整理,撰写设计报告。
第二周、周4-周5:
验收,提交设计报告,评定成绩。
课程设计成果
1、课程设计报告书一份
2、源程序清单一份
3、成果使用说明书一份
摘要
在当代社会中,车辆已经成为我们生活中必不可少的一部分,无论是工作,游玩等。
各种形式的停车场也越来越多。
停车场的工作量也越来越大,本系统就是针对停车场管理而设计的。
实现了停车,收费,车位管理,保存历史纪录等功能,能够更方便的管理停车场,操作简单,功能俱全。
能够为现在停车场提供很大方便,节省人力物力。
使停车场管理方便灵活,不易出错。
并且通过历史纪录可以很方便的跟政府部门合作。
本系统采用java来做前台使用SQLserver创建的数据库,使用Myeclipse面向对象制作,保密性强。
实现了四个表面的功能停车,开除并收费,查询历史纪录,现在停车场厂情况一览。
后台功能有,车位管理,价钱结算。
关键词:
JAVASQLSERVER停车场管理收费Myeclipse面向对象编程。
第1章绪论
1.1课程设计的目的
1)要求学生能够熟练掌握SQL语言的基本知识和技能。
2)熟悉利用编程语言连接数据库对数据库进行操作的基本思路和方法。
3)能够利用所学的基本知识和技能,解决简单的数据库设计的问题。
4)理论结合实际,是学生通过课程设计更好地掌握数据库的知识。
5)学会分析实际问题,为实际情况制作软件,学会独立思考。
1.2课程设计的背景和意义
1.2.1课程设计的背景
1.理论研究基础
(1)一个学期的SQL数据库的系统学习
(2)一个学期的Java面向过程程序设计的系统学习
2.技术层面的支持
图书馆五楼,计算机科学与工程系实验室
1.2.2课程设计的意义
通过一学期的学习,自己的知识得到了积累,通过本次设计检验自己学习成果。
并且利用这次设计的机会锻炼自己解决问题的能力。
真正意义上的做一个软件。
1.3课程设计环境
Myeclipse6.0.1、MicrosoftSQLServer2005、windowsXP、Word
第2章系统需求分析
2.1问题描述
停车场管理系统:
根据系统的需求设计好数据库,然后利用编程语言连接数据库设计前台,使用户可以利用此系统查询停车场现在的信息、停车场的历史记录,并且实现停车进入停车场,车辆开出停车场根据闲时忙时收费,在系统后台对车位进行管理,更为车辆分配车位,并且实现车位查询,看看是否有空余的车位。
2.2信息要求
登录信息:
登录账号、密码。
车辆信息:
车牌号、颜色,品牌。
车位信息:
车位号,空否。
停车场现状:
车牌号,颜色,品牌,停车时间,车位号。
历史记录:
车牌号,颜色,品牌,停车时间,开出时间,收费。
基础收费:
时间段,价格
2.3处理要求
1)停车:
可以查询现在车位能否停车。
停车进入这个车位,停车场现状中添加这个车的停车信息
2)开车:
开出车辆,根据停车时间段和停车时间收费,空出车位。
添加进入历史记录中。
3)现在停车场状况:
显示停车场现在停着的车的所有状况,并且可以实现用车牌号查询某一辆车的详细情况。
4)历史记录:
能够查询曾经停车场的所有数据,并且能利用车牌号定向查询;
5)基础收费:
能根据停车的时间判断闲时还是忙时再根据时间段来收取费用。
2.4安全性和完整性要求
对车辆信息的主要是通过车牌号这一属性实现内部的链接,车辆进入停车场,在停车场现状中添加记录,当开出时删除记录。
同时停车记录里面添加相应的记录。
通过两个时间之差收取费用。
同时进车出车时车位与之相应的变化。
管理员利用用户名密码登录。
2.5问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
1、数据库分析
1)需求分析:
根据实际需要确定所需的信息;
2)概念结构设计:
根据信息的内容和信息之间的联系,画出E-R图,对数据进行综合、归纳和抽象;
3)逻辑结构设计:
将概念结构转换成数据库所支持的数据模型,并对其进行优化;
4)物理设计:
为逻辑结构选取适合的应用环境;
5)数据库实施:
利用SQL语言创建数据库。
2、前台程序的设计
1)应用系统分析,建立该系统的功能模块框图;
2)根据数据库中各个实体及它们之间的关系进行界面的组织和设计;
3)根据问题描述,设计系统的类层次;
4)完成类层次中各个类的描述;
5)完成类中各个成员函数的定义;
6)完成系统的应用模块;
7)功能调试;
3、完成系统总结报告。
第3章系统设计
3.1概念结构设计
实体及其属性E-R图设计
图3-1管理员及其属性
图3-2车位及其属性
图3-3基础收费及其属性
图3-4现在停车场情况及其属性
图3-5停
图3-5车记录及其属性
图3-6停车时间及其属性
1
N
1MN
1
1
N
1
图3-10实体之间的关系
3.2逻辑结构设计
3.2.1数据模型
(说明:
主键用下划线标出)
车辆信息(车牌号,颜色,品牌)
车位(车位号,空否)
基础收费(时间段,价格)
现在停车场情况(车牌号,颜色,品牌,停车时间,车位号)
历史记录(车牌号,颜色,品牌,停车时间,开出时间,收费)
登陆(用户名,密码)
3.2.2数据模型优化
由于停车时间,开出时间需要进行复杂的计算,所以需要进行优化,从而减轻运算负担。
历史记录(车牌号,颜色,品牌,停车月份,停车日期,停车时间,开出月份,开出日期,开出时间,收费)
现在停车场情况(车牌号,颜色,品牌,停车月份,停车日期,停车时间,车位号)
3.3数据库物理结构设计
管理员登录表格:
表3-3-1denglu表格
字段名
数据类型
长度
完整性约束
字段说明
用户名
Char
20
Notnull
主键
密码
Char
20
Notnull
登录密码
固定收费表格:
表3-3-2shoufei表格
字段名
数据类型
长度
完整性约束
字段说明
时间段
Int
系统内定
Notnull
主键
价格
Float
系统内定
Notnull
闲时忙时的价格
现在停车场情况表格:
表3-3-3xianzai表格
字段名
数据类型
长度
完整性约束
字段说明
车牌号
Char
20
Notnull
主键
颜色
Char
20
Notnull
车的颜色
品牌
Char
20
Notnull
车的品牌
停车月份
Int
系统内定
Notnull
停车时的月份
停车日期
Int
系统内定
Notnull
停车时的日期
停车时间
Int
系统内定
Notnull
停车的时间
车位
Int
系统内定
Notnull
停车的车位
车位信息表格:
表3-341chewei表格
字段名
数据类型
长度
完整性约束
字段说明
车位号
Int
***
Notnull
主键
空否
Int
***
Notnull
用0表示空1表示不空
历史记录表格:
表3-3-5lishi表格
字段名
数据类型
长度
完整性约束
字段说明
车牌号
Char()
20
Notnull
主键
颜色
Char()
20
Notnull
车的颜色
品牌
Char()
20
Notnull
车的品牌
停车月份
Int
系统内定
Notnull
停车时的月份
停车日期
Int
系统内定
Notnull
停车时的日期
停车时间
Int
系统内定
Notnull
停车的时间
开车月份
Int
系统内定
Notnull
开车时的月份
开车日期
Int
系统内定
Notnull
开车时的日期
开车时间
Int
系统内定
Notnull
开车的时间
收费
Float
系统内定
Notnull
开车时收取的费用。
有后台计算得出
3.4数据库实施
1).CREATETABLEdenglu
(
用户名char(100)notnull
密码char(100)
)
2)
.CREATETABLEshoufei
(
时间段intnotnull
价格floatnotnull
)
3).CREATETABLExianzai
(
车牌号char(100)notnull
颜色char(100)notnull
品牌char(100)
停车月份intnotnull
停车日期intnotnull
停车时间intnotnull
车位intnotnull
)
4)
.CREATETABLElishi
(
车牌号char(100)notnull
颜色char(100)notnull
品牌char(100)notnull
停车月份intnotnull
停车日期intnotnull
停车时间intnotnull
开车月份intnotnull
开车日期intnotnull
开车时间intnotnull
收费floatnotnull
)
5)CREATETABLEchewei
(
车位号intnotnull
空否intnotnull
)
3.5数据库应用系统的实施和维护
1)停车进入模块
设计思路:
车辆进入停车场,首先要先查看是又有空车位,如果有的话,输入车辆的信息,在停车场现状里添加这条记录。
相应的车位应变成有车的状态。
主要功能代码:
if(e.getSource()==jbutton1)
{
if(text1.getText().length()!
=0&&text2.getText().length()!
=0&&text3.getText().length()!
=0)
{try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
try{
conn=DriverManager.getConnection("jdbc:
odbc:
tingche","","");
}catch(SQLExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
try{
stm=conn.createStatement();
}catch(SQLExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}//创建Statement对象
Stringsql="insertintoxianzai(车牌号,颜色,品牌,停车月份,停车日,停车时间,车位)values('"+text1.getText()+"','"+text3.getText()+"','"+text2.getText()+"','"+c1.get(Calendar.MONTH)+"','"+c1.get(Calendar.DAY_OF_MONTH)+"','"+c1.get(Calendar.HOUR_OF_DAY)+"','"+k+"')";
try{
stm.executeUpdate(sql);
}catch(SQLExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
Stringsql1="deletefromcheweiwhere车位like'"+k+"'";
try{
stm.executeUpdate(sql1);
}catch(SQLExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
Stringsql2="insertintochewei(车位,空否)values('"+k+"','"+1+"')";
try{
stm.executeUpdate(sql2);
}catch(SQLExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
k=0;
carcar1=newcar();
JOptionPane.showMessageDialog(null,"完成");}
else{JOptionPane.showMessageDialog(null,"各项均不能为空");}
}
截图:
图3-5-1停车界面
2)开出停车场收费模块
设计思路:
开出车辆,应先从停车场现状表格中调出存车的记录,根据现在时间和存车时间之差计算停车时间的收费再根据停车时刻属于闲时还是忙时收取基础收费。
相应车位置空。
停车场现状中删除记录。
历史记录中添加记录。
主要功能代码:
if(e.getSource()==jbutton1)
{Strings=text1.getText();
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
try{
conn=DriverManager.getConnection("jdbc:
odbc:
tingche","","");
}catch(SQLExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
try{
stm=conn.createStatement();
}catch(SQLExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}//创建Statement对象
try{
rs=stm.executeQuery("select*fromxianzaiwhere车牌号='"+s+"'");
}catch(SQLExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
try{
if(rs.next())
{
try{
car1.carno=rs.getString
(1);
car1.Carcolor=rs.getString
(2);
car1.carsb=rs.getString(3);
m=rs.getInt(4);
d=rs.getInt(5);
t=rs.getInt(6);
k1=rs.getInt(7);
}catch(SQLExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
if(t<=12)
{sss="闲";}
else{sss="忙";}
rs1=stm.executeQuery("select*from价格where时间段='"+sss+"'");
rs1.next();
price=rs1.getInt
(2);
eee=((c1.get(Calendar.MONTH)-m)*30*24+(c1.get(Calendar.DAY_OF_MONTH)-d)*24+c1.get(Calendar.HOUR_OF_DAY)-t);
fei=((c1.get(Calendar.MONTH)-m)*30*24+(c1.get(Calendar.DAY_OF_MONTH)-d)*24+c1.get(Calendar.HOUR_OF_DAY)-t)*1+price;
jlabel3.setText("收取费用:
"+fei+"元");
jlabel4.setText("停车用时:
"+eee+"小时");
Stringsql="insertintohis(车牌号,颜色,品牌,停车月份,停车日,停车时间,开出月份,开出日,开出时间,收费)values('"+car1.carno+"','"+car1.Carcolor+"','"+car1.carsb+"','"+m+"','"+d+"','"+t+"','"+c1.get(Calendar.MONTH)+"','"+c1.get(Calendar.DAY_OF_MONTH)+"','"+c1.get(Calendar.HOUR_OF_DAY)+"','"+fei+"')";
try{
stm.executeUpdate(sql);
}catch(SQLExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
Stringsql2="deletefromxianzaiwhere车牌号='"+s+"'";
try{
stm.executeUpdate(sql2);
JOptionPane.showMessageDialog(null,"完成");
}catch(SQLExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}}
else{JOptionPane.showMessageDialog(null,"不存在这辆车");}
}catch(HeadlessExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}catch(SQLExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
Stringsql11="deletefromcheweiwhere车位like'"+k1+"'";
try{
stm.executeUpdate(sql11);
}catch(SQLExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
Stringsql22="insertintochewei(车位,空否)values('"+k1+"','"+0+"')";
try{
stm.executeUpdate(sql22);
}catch(SQLExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
}
截图:
图3-5-2开出车辆模块
3)历史记录查询模块
设计思路:
有两种查询方式,一种是全部显示,一种是按车牌号查询单个显示,按要求从表中调出数据,在java中建立一个表格界面显示。
主要功能代码:
try{
if(e.getSource()==b1){//上一页
num=num-10;
inta1=0;
inta2=0;
for(a1=0;a1<10;a1++)
for(a2=0;a2<10;a2++)
history1[a1][a2]="";
if(tt==0){
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库