软件工程试卷(论文)
2014—2015学年 第1学期
题 目:停车场管理系统的分析和设计 学生姓名:王琦
系 别:信息与计算科学系 专业年级:2012级计算机科学与技术 指导教师:刘兆辉
2015年 1 月 1 日
1
目 录
第一章 项目概述 …………………………………………………………………3 1。1 开发背景 ………………………………………………………………………3 1。2 开发目的 ……………………………………………………………………3 1。3 开发运行境 ……………………………………………………………………3 1.4 系统功能 ………………………………………………………………………3 第二章 需求分析…………………………………………………………………4 2。1 系统需求 ………………………………………………………………………4 2。2 功能需求 ………………………………………………………………………4 2.3 业务流图 ………………………………………………………………………4 第三章 总体设计…………………………………………………………………6 3.1 基本设计概念和处理流程 ……………………………………………………6 3.2 系统层次模图…………………………………………………………………6 第四章 数据库计…………………………………………………………………7 4。1 数据库的逻辑设计 ……………………………………………………………7 4.2 数据库的配置…………………………………………………………………10 第五章详细设计…………………………………………………………………13 5。1主菜单模块的设计与实现……………………………………………………13 5。2 初始化模块的设计与实现:…………………………………………………14 5。3 车辆进入模块的设计与实现…………………………………………………14 5。4 车辆离开并收费模块的设计与现……………………………………………15 第六章 测试及提交 ………………………………………………………………16 七 附: 模块源代码 ………………………………………………………………17 参考文献……………………………………………………………………………20
2
第一章 项目概述
1.1 开发背景:
近年来,随着我国经济的快速发展,人们生活水平的不断提高,物质需求和生活方式也发生着深刻的变化,以前属于奢侈品的汽车己经逐步走入了市民的日常生活。伴随汽车消费大众化和各种机动车辆大范围内的迅速普及,车辆对其配套设施特别是停车场提出了更高的要求.停车是”速度为零的交通”,停车场及附属相关设施是静态交通的重要组成部分。停车场收费管理系统是伴随着公用收费停车场这一新生事物而诞生的。 目前的多数停车场存在着以下几个问题,管理漏洞、系统的可靠性、独立性强、收费过程比较繁琐、劳动强度高、停车场利用率低下、票款易流失等。针对这些问题该停车场系统从以下方面进行设计。针对管理进行了优化,采用划卡消费和现金支付相结合,系统计时计费。采用Java高级编程语言和WEB相关技术开发设计管理系统软件,实现网络管理操作。优化后的系统使用方便、服务高效、收费透明、防止票款的流失,提高可靠性同时也提高了操作者的工作效率.
1。2 开发目的:
随着计算机技术的发展,在各行各业的应用越来越广泛,停车场管理由原来的人工管理进入计算机系统管理那是个必然趋势,计算机系统管理可以大大提高管理的效率和正确性
设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车站。停车站内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车站为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序.编制一程序模拟该停车场的管理。
1.3 开发运行环境:
开发工具:java语言 开发环境:JDK
1.4 系统功能:
(1) 登录、注册功能。 (2) 车辆离开查询功能
3
(3) 车辆进入查询功能
第二章 需求分析
2.1 系统需求
根据题目要求,因为停车场是一个单条的序列,可以用结构体实现;在程序中,需要知道每辆来车的具体停放位置,应提供提示、查找、标记工作。车辆离开要计时计费。另外,每天开始时,停车场要初始化.
2。2 功能需求
实现停车场的现代化管理,记录车辆信息,动态分配车位,停车费用结算,查看停车场车位的使用状况,退出系统等功能,解决车辆停放难,乱收费等问题.
2。3 业务流程图
4
以堆栈来模拟停车场和以堆栈里的数据元素我设计成汽车的车牌号 初始化车站, 初始化让路的临时栈, 初始化通道 车辆到达 车场已满,车进便道 车场未满,车进车场 判断车场是否已满 输入车子到达时间,车牌号
5
未满 车进入车场 判断车场内是否有车 不做任何计算 无点有 输入离开车辆的离开时间,进行停车费用的计算 此车后面的车辆退出并进入临时栈 车子离开 图 3—1
第三章 总体设计
3。1 基本设计概念和处理流程
互联网技术的飞速发展,Java等设计工具的方便实用,以及数据库技术的发展给本系统的设计和实现提供了技术上的支持.
系统基本的流程是:用户登录->主界面-〉选择各项子系统。
3。2 系统层次模块图
停车场管理系统 车辆到达信息车辆离开信息6 计算停车费用查看车位使用状况退出系统
车牌号到达时间该车使用的车位号车牌号离开时间
该车腾出的车位号车牌号到达时间离开时间每小时所需停车费用有空余车位无空余车位
第四章 数据库设计
4。1数据库的逻辑设计:
下面给出各个表的详细结构。
表4—1—1 卡信息表
新到来车辆停放新到来车辆在便道上等候有车离开时新到来车辆停放 字段名 id cardid cardno cardtype cardmoney sendtime activetime 描述 自增 卡编号 卡号 卡类型 余额
发卡时间 有效时间 类型 int varchar varchar varchar money datetime datetime
7
长度 4 20 20 20 8 8 8 是否为空 否 是 是 是 是 是 是 是否主键 是 否 否 否 否 否 否
sendflag loseflag
字段名 id parkname parktotal entertotal exittotal parktel parkadd
已发 挂失 tinyint tinyint 1 1 是 是 否 否
表4-1—2 停车场参数表
描述 自增 停车场名字 总车位 入口车道数 出口车道数 停车场电话 停车场地址 类型 int varchar int int int varchar varchar 长度 4 20 4 4 4 20 20 是否为空 否 是 是 是 是 是 是 是否主键 是 否 否 否 否 否 否
表4—1—3 用户表
字段名 id name sex tel cardno carno address
描述 编号 用户名 性别 电话 卡号 车牌 地址 类型 varchar varchar char varchar varchar varchar varchar 长度 20 20 2 20 20 20 20 是否为空 否 是 是 是 是 是 是 是否主键 是 否 否 否 否 否 否
表4—1-4 车信息表
字段名 id carid carno cartype
描述 自增 编号 车牌号 车类型 类型 int varchar varchar varchar 长度 4 20 20 20 是否为空 否 否 是 是 是否主键 是 是 否 否
表4—1-5 权限表
字段名 id poperatorid poperatorname poperatorsex 描述 自增 编号 姓名 性别 类型 int varchar varchar char
8
长度
4 20 20 10 是否为空 否 否 是 是 是否主键 是 是 否 否
poperatorpsw poperatorright 密码 权限 varchar varchar
20 20 是 是 否 否
表4-1-6时收费表
字段名 id timeno starttime endtime 描述 自增 时间号 开始时间 结束时间 类型 int int char char
长度 4 4 10 20 是否为空 否 否 是 是 是否主键 是 是 否 否
表4-1—7 次收费表
字段名 id times_no starttime endtime 描述 自增 时间号 开始时间 结束时间 类型 int int char char
长度 4 4 10 10 是否为空 否 否 是 是 是否主键 是 是 否 否
表4-1—8 入场表
字段名 id encardid encardno encarno enway entime enposition
描述 自增 入场编号 卡号 车牌 入场车道 入场时间 指定车位 类型 int varchar varchar varchar varchar datetime varchar 长度 4 20 20 20 20 8 20 是否为空 否 否 是 是 是 是 是 是否主键 是 否 否 否 否 否 否
表4-1—9 出场表
字段名 id exited excardno excarno exway extime
描述 自增 出场编号 卡号 车牌 出场车道 出场时间 类型 int varchar varchar varchar varchar datetime 长度 4 20 20 20 20 8 是否为空 否 否 是 是 是 是 是否主键 是 否 否 否 否 否
表4—1—10 交班表
字段名 id tnoperator tnlogintime 描述 自增 操作员 登录时间 类型 int varchar datetime
9
长度
4 20 8 是否为空 否 否 是 是否主键 是 否 否
tnturntime entimes extimes totalmoney 交班时间 进场次数 出场次数 金额总计 datetime int int money
8 4 4 8 是 是 是 是 否 否 否 否
表4—1—11 收费表
字段名 id chargeid chcardno chcarno chmoney
描述 自增 收费编号 卡号 车牌 收费金额 类型 int varchar varchar varchar money 长度 4 20 20 20 8 是否为空 否 否 是 是 是 是否主键 是 否 否 否 否
表4-1-12 车位表
字段名 id cpcarno positionstate
描述 自增 车牌 车位状态 类型 int varchar varchar
长度 4 20 20 是否为空 否 是 是 是否主键 是 否 否
表4-1-13 收费标准表
字段名 id chargestid cardtype cartype chargetype timeno unittime unitsum mostsum
描述 自增 标准编号 卡类型 车类型 收费类型 时间编号 单位时间 单位金额 最大金额 类型 int int varchar varchar varchar int int int int 长度 4 4 20 20 20 4 4 4 4 是否为空 否 是 是 是 是 是 是 是 是 是否主键 是 否 否 否 否 否 否 否 否
4。2数据库设置模块:
此模块只有超级管理员才能进行相关的操作,一般用户无法进入该页面进行操作.所有的管理员级别的用户都有该超级管理员进行授权产生。
10
图 4-2—1 系统设置界面
管理员进入档案管理界面,查询操作员的权限档案信息,并可以进行添加删除修改。数据流程图
4-2-2档案管理界面
数据管理页面主要是对停车场的数据进行管理,场内车辆管理信息的查询,进出场数据的查询,操作员收费金额信息的查询,以及操作员交班记录的查询。在设计交班数据表中的数据时候,考虑到该表中的记录会在上班的过程中随时发生变化,所以在本系统中,所有与该表数据关联的模块中都实现了对交班记录表数据的更新。由于这些记录可能会出现很多,所以在页面进行了分页显示。实现对停车场和操作员的综合管理
11
4—2-3数据管理页面
操作员登录该界面进行档案管理的功能,包括卡档案、车档案以及用户的档案管理实现对以上档案的编辑。
4—2-4用户档案管理界面
如果有车入场,首先要检测一下是否还有空闲的车位,如果没有空闲车位,入场不成功.这一过程的实现通过设置每个车位的状态来进行实现,每个车位的信息都存储在车位信息表中。入场管理需要手动输入一些信息,提交之后要进行必要的判断之后按照指定车位进入停车场,在指定车位的时候是根据车位在车位表中的顺序来进行指定的。为了记录停车场的一些人员操作的信息,入场时的操作员实行自动签名的方式,实现该方式是根据其登陆时候的名称在入场模块中有系统写入.
4-2—5入场数据页面
用户取车时操作员使用该功能,手动输入出场车辆的卡号,输入出场车道编号.
12
4—2—6出场数据页面
收费管理是停车场管理系统最重要的功能之一,综合以上入场时提供的信息,根据设置的计费标准计算出收费金额,并打印出收费清单。
4-2-7收费管理界面
第五章 详细设置
程序系统的结构
main()函数体内包含了界面选则部分menu(),并单独开始 抽出来作为一个独立函数,目的在于系统执行每部分模块后能够方便返回到系统界面。即main()函数写为
如下: 显示一系列选项功能
void main()/*主函数*/ {
输入n,判断 menu();/*菜单函数*/
n是不是1-4? }
13
Y 根据n的值调用各功能模块函结束
N 5。1主菜单模块的设计与实现:
14
5.2初始化模块的设计与实现:
5.3车辆进入模块的设计与实现:
以上分别举例0,1,2三个车的进场情况
15
5。4车辆离开并收费模块的设计与实现:
第六章 测试及提交
16
七 附:模块源代码
7.1 菜单函数
void menu() {
int n,w; do { puts(\"\\**************MENU**************\\n\\n”); puts(”\\\ 1.初始化”); puts(”\\\ 2。有车进入”); puts(”\\\ 3.有车离开”); puts(”\\\ 4。退出\"); puts(”\\n\\n\\*********************************\\n”); printf(”Please choice your number(1—4): [ ]\\b\\b\"); scanf(”%d\",&n);
17
}
if(n〈1||n〉4) /*对选择的数字作判断*/ { w=1; getchar(); } else w=0; }while(w==1);
switch(n) { case 1:chushi();break; /*初始化函数*/ case 2:jinru();break; /*车辆进入函数*/ case 3:likai();break; /*车辆离开函数*/ case 4:exit(0); /*退出*/ }
7.2初始化模块设计
struct changnei/*场内车道信息*/ {
int neikong; }chn[N—1];
struct changwai/*场外车道信息*/ {
int waikong; }chw[M—1];
N和M分别是停车场和便道的车位预设值,用宏定义.用户可根据实际情况改变。 #define N 100/*预设停车场有100个车位*/ #define M 100/*预设便道有100个出位*/
void chushi()/*初始化函数*/ {
int i,j;
for(i=0;i〈=N-1;i++)
chn[i]。neikong=0;/*将场内车道设置为空*/ for(j=0;j〈=M-1;j++)
chw[i].waikong=0;/*将便道车道设置为空*/ printf(”\\n\\n\\已初始化\\n\\n”); menu(); }
函数出示化后将回到菜单界面.
18
7.3车辆进入函数
struct car/*车辆信息*/ {
int car_num;/*车辆次序号*/ int car_arr;/*车辆到达时间*/ int car_lef;/*车辆离开时间*/ int car_stay;/*车辆停放位置*/ }car[CIXUHAO];
void jinru()/*车辆进入函数*/ {
int i,a; int h=0;
printf(\"\\n\\n请输入该车次序号(从0号开始):\"); scanf(\"%d\",&a); for(i=0;i menu(); } 程序执行完后回到菜单。 7.4车辆离开函数 void likai()/*车辆离开函数*/ { int i,k,choi,time; double fee; printf(\"请输入离开车辆次序号[ ],并将此车之后的车先全部退出停车场!\"); scanf(\"%d\",&i); 19 printf(”\\n请输入离开车辆的离开时刻(24小时整点计时):\\n\"); scanf(\"%d\",&car[i].car_lef); fee=D*(car[i]。car_lef—car[i].car_arr); time=car[i].car_lef-car[i]。car_arr; printf(\"次序号为%d的车停车时间%d小时,应收费%f元\\n”,i,time,fee); printf(”\\n\\n\\n请让场内退出的车再依次进场!\\n\\n\\n”); printf(”便道上现在有车吗?(请选择1或2)\\n1.有\\n2。没有\\n\");/*因便道上可能没有车,因此要做选择*/ scanf(\"%d\; if(choi==2) { menu(); } if(choi==1) { printf(\"请让便道上的第一辆车进场\\n”); printf(\"该车次序号为:\\n”); scanf(”%d”,&k); printf(\"请输入该车进场时间:\\n\"); scanf(”%d\",&car[k]。car_arr); menu(); } } 参考文献 [1] 梁建全,周力,孟志勇,田利军.精通轻量级Java EE框架整合方案[M].人民邮电出 版社,2008. [2] 夏昕,曹晓刚,唐勇.深入浅出Hibernate[M].电子工业出版社,2005. [3] 吕凤翥,马皓.Java语言程序设计[M].清华大学出版社,2006. [4] 孙更新,宾晟,周峰.Struts框架结构的Java Web开发技术基础与实践教程[M].电子 工业出版社,2008. [5] 明日科技,梁冰,苏宇,吕继迪.JavaScript技术开发大全[M].人民邮电出版社,2008. [6] 王俊标.精通Java Web开发—基于Struts、EJB、Hibernate、JBuilder[M].人民邮电 出版社,2007. 20 因篇幅问题不能全部显示,请点此查看更多更全内容