1、 软件实训报告书题 目: 停车场管理系统 小组成员: 系 别: 软件工程121 指导教师: 2016年1月13日1 目录第1章 项目概述11.1 开发背景:11.2 开发目的:11.3 开发运行环境:11.4 系统功能:2第2章 需求分析22.1 系统需求22.2 功能需求22.3 业务流程图3第3章 概要设计43.1 基本设计概念和处理流程43.2 系统层次模块图4第4章 详细设计54.1数据库的逻辑设计:54.2数据库设置模块:8第5章 测试及提交125.1主菜单模块的设计与实现:125.3车辆进入模块的设计与实现:135.4车辆离开并收费模块的设计与实现:13第6章 模块源代码146.1
2、 菜单函数146.3车辆进入函数156.4车辆离开函数16总结19 第1章 项目概述1.1 开发背景: 随着计算机技术的发展,在各行各业的应用越来越广泛,停车场管理由原来的人工管理进入计算机系统管理那是个必然趋势,计算机系统管理可以大大提高管理的效率和正确性。1.2 开发目的:设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车站。停车站内如有某辆车要开走,在
3、它之后进入停车场的车都必须先退出停车站为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。1.3 开发运行环境:开发工具:java语言开发环境:JDK1.4 系统功能:(1) 登录、注册功能.(2) 车辆离开查询功能(3) 车辆进入查询功能 第2章 需求分析2.1 系统需求根据题目要求,因为停车场是一个单条的序列,可以用结构体实现;在程序中,需要知道每辆来车的具体停放位置,应提供提示、查找、标记工作
4、。车辆离开要计时计费。另外,每天开始时,停车场要初始化。2.2 功能需求实现停车场的现代化管理,记录车辆信息,动态分配车位,停车费用结算,查看停车场车位的使用状况,退出系统等功能,解决车辆停放难,乱收费等问题。2.3 业务流程图车进入车场车辆到达以堆栈来模拟停车场和以堆栈里的数据元素我设计成汽车的车牌号初始化车站, 初始化让路的临时栈, 初始化通道车场未满,车进车场车场已满,车进便道判断车场是否已满车输入车子到达时间,车牌号未满判断车场内是否有车不做任何计算无点x有输入离开车辆的离开时间,进行停车费用的计算此车后面的车辆退出并进入临时栈车子离开 图 3-1第3章 概要设计3.1 基本设计概念和
5、处理流程互联网技术的飞速发展,Java等设计工具的方便实用,以及数据库技术的发展给本系统的设计和实现提供了技术上的支持。系统基本的流程是:用户登录主界面选择各项子系统。3.2 系统层次模块图停车场管理系统退出系统查看车位使用状况计算停车费用车辆离开信息车辆到达信息车牌号到达时间离开时间该车腾出的车位号无空余车位有空余车位每小时所需停车费用到达时间车牌号离开时间车牌号该车使用的车位号有车离开时新到来车辆停放新到来车辆在便道上等候新到来车辆停放 第4章 详细设计 4.1数据库的逻辑设计:下面给出各个表的详细结构。表4-1-1 卡信息表字段名描述类型长度是否为空是否主键id自增int4否是cardi
6、d卡编号varchar20是否cardno卡号varchar20是否cardtype卡类型varchar20是否cardmoney余额money8是否sendtime发卡时间datetime8是否activetime有效时间datetime8是否sendflag已发tinyint1是否loseflag挂失tinyint1是否表4-1-2 停车场参数表字段名描述类型长度是否为空是否主键id自增int4否是parkname停车场名字varchar20是否parktotal总车位int4是否entertotal入口车道数int4是否exittotal出口车道数int4是否parktel停车场电话va
7、rchar20是否parkadd停车场地址varchar20是否表4-1-3 用户表字段名描述类型长度是否为空是否主键id编号varchar20否是name用户名varchar20是否sex性别char2是否tel电话varchar20是否cardno卡号varchar20是否carno车牌varchar20是否address地址varchar20是否表4-1-4 车信息表字段名描述类型长度是否为空是否主键id自增int4否是carid编号varchar20否是carno车牌号varchar20是否cartype车类型varchar20是否表4-1-5 权限表字段名描述类型长度是否为空是否主键
8、id自增int4否是poperatorid编号varchar20否是poperatorname姓名varchar20是否poperatorsex性别char10是否poperatorpsw密码varchar20是否poperatorright权限varchar20是否表4-1-6时收费表字段名描述类型长度是否为空是否主键id自增int4否是timeno时间号int4否是starttime开始时间char10是否endtime结束时间char20是否表4-1-7 次收费表字段名描述类型长度是否为空是否主键id自增int4否是times_no时间号int4否是starttime开始时间char10
9、是否endtime结束时间char10是否表4-1-8 入场表字段名描述类型长度是否为空是否主键id自增int4否是encardid入场编号varchar20否否encardno卡号varchar20是否encarno车牌varchar20是否enway入场车道varchar20是否entime入场时间datetime8是否enposition指定车位varchar20是否表4-1-9 出场表字段名描述类型长度是否为空是否主键id自增int4否是exited出场编号varchar20否否excardno卡号varchar20是否excarno车牌varchar20是否exway出场车道varc
10、har20是否extime出场时间datetime8是否表4-1-10 交班表字段名描述类型长度是否为空是否主键id自增int4否是tnoperator操作员varchar20否否tnlogintime登录时间datetime8是否tnturntime交班时间datetime8是否entimes进场次数int4是否extimes出场次数int4是否totalmoney金额总计money8是否表4-1-11 收费表字段名描述类型长度是否为空是否主键id自增int4否是chargeid收费编号varchar20否否chcardno卡号varchar20是否chcarno车牌varchar20是否c
11、hmoney收费金额money8是否表4-1-12 车位表字段名描述类型长度是否为空是否主键id自增int4否是cpcarno车牌varchar20是否positionstate车位状态varchar20是否表4-1-13 收费标准表字段名描述类型长度是否为空是否主键id自增int4否是chargestid标准编号int4是否cardtype卡类型varchar20是否cartype车类型varchar20是否chargetype收费类型varchar20是否timeno时间编号int4是否unittime单位时间int4是否unitsum单位金额int4是否mostsum最大金额int4是否
12、4.2数据库设置模块: 此模块只有超级管理员才能进行相关的操作,一般用户无法进入该页面进行操作。所有的管理员级别的用户都有该超级管理员进行授权产生。图 4-2-1 系统设置界面 管理员进入档案管理界面,查询操作员的权限档案信息,并可以进行添加删除修改。数据流程图4-2-2档案管理界面 数据管理页面主要是对停车场的数据进行管理,场内车辆管理信息的查询,进出场数据的查询,操作员收费金额信息的查询,以及操作员交班记录的查询。在设计交班数据表中的数据时候,考虑到该表中的记录会在上班的过程中随时发生变化,所以在本系统中,所有与该表数据关联的模块中都实现了对交班记录表数据的更新。由于这些记录可能会出现很多
13、,所以在页面进行了分页显示。实现对停车场和操作员的综合管理4-2-3数据管理页面操作员登录该界面进行档案管理的功能,包括卡档案、车档案以及用户的档案管理实现对以上档案的编辑。4-2-4用户档案管理界面 如果有车入场,首先要检测一下是否还有空闲的车位,如果没有空闲车位,入场不成功。这一过程的实现通过设置每个车位的状态来进行实现,每个车位的信息都存储在车位信息表中。入场管理需要手动输入一些信息,提交之后要进行必要的判断之后按照指定车位进入停车场,在指定车位的时候是根据车位在车位表中的顺序来进行指定的。为了记录停车场的一些人员操作的信息,入场时的操作员实行自动签名的方式,实现该方式是根据其登陆时候的
14、名称在入场模块中有系统写入。4-2-5入场数据页面 用户取车时操作员使用该功能,手动输入出场车辆的卡号,输入出场车道编号。4-2-6出场数据页面 收费管理是停车场管理系统最重要的功能之一,综合以上入场时提供的信息,根据设置的计费标准计算出收费金额,并打印出收费清单。4-2-7收费管理界面 程序系统的结构main()函数体内包含了界面选则部分menu(),并单独抽出来作为一个独立函数,目的在于系统执行每部分模块后能够方便返回到系统界面。即main()函数写为如下:开始显示一系列选项功能输入n,判断n是不是1-4?Y 根据n的值调用各功能模块函数结束void main()/*主函数*/menu()
15、;/*菜单函数*/N 第5章 测试及提交5.1主菜单模块的设计与实现:5.2初始化模块的设计与实现:5.3车辆进入模块的设计与实现: 以上分别举例0,1,2三个车的进场情况5.4车辆离开并收费模块的设计与实现: 第6章 模块源代码6.1 菜单函数void menu()int n,w;doputs(tt*MENU*nn);puts(ttt 1.初始化);puts(ttt 2.有车进入);puts(ttt 3.有车离开);puts(ttt 4.退出);puts(nntt*n);printf(Please choice your number(1-4): bb);scanf(%d,&n);if(n4
16、) /*对选择的数字作判断*/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); /*退出*/6.2初始化模块设计struct changnei/*场内车道信息*/int neikong;chnN-1;struct changwai/*场外车道信息*/int waikong;chwM-1;N和M分别是停车场和便道的车位预设值,用宏定义。用户
17、可根据实际情况改变。#define N 100/*预设停车场有100个车位*/#define M 100/*预设便道有100个出位*/ void chushi()/*初始化函数*/int i,j;for(i=0;i=N-1;i+)chni.neikong=0;/*将场内车道设置为空*/for(j=0;j=M-1;j+)chwi.waikong=0;/*将便道车道设置为空*/printf(nntt已初始化nn);menu();函数出示化后将回到菜单界面。6.3车辆进入函数struct car/*车辆信息*/int car_num;/*车辆次序号*/int car_arr;/*车辆到达时间*/in
18、t car_lef;/*车辆离开时间*/int car_stay;/*车辆停放位置*/carCIXUHAO;void jinru()/*车辆进入函数*/int i,a;int h=0;printf(nn请输入该车次序号(从0号开始):);scanf(%d,&a);for(i=0;iN;i+)if(chni.neikong=0);/*无车标记0*/if(chni.neikong=1)/*有车标记1*/h=h+1;if(h=N)printf(停车场内已停满,请停在便道上n);else cara.car_stay=h;chnh.neikong=1;printf(该车应该停在停车场内第道%d(从0道开
19、始记)n,h);printf(请输入该车进停车场时刻(24小时整点计时):n);scanf(%d,&cara.car_arr);便道上还有车吗?menu();程序执行完后回到菜单。 6.4车辆离开函数void likai()/*车辆离开函数*/int i,k,choi,time;double fee;printf(请输入离开车辆次序号 ,并将此车之后的车先全部退出停车场!);scanf(%d,&i);printf(n请输入离开车辆的离开时刻(24小时整点计时):n);scanf(%d,&cari.car_lef);fee=D*(cari.car_lef-cari.car_arr);time=c
20、ari.car_lef-cari.car_arr;printf(次序号为%d的车停车时间%d小时,应收费%f元n,i,time,fee);printf(nnn请让场内退出的车再依次进场!nnn);printf(便道上现在有车吗?(请选择1或2)n1.有n2.没有n);/*因便道上可能没有车,因此要做选择*/scanf(%d,&choi);if(choi=2)menu();if(choi=1)printf(请让便道上的第一辆车进场n);printf(该车次序号为:n);scanf(%d,&k);printf(请输入该车进场时间:n);scanf(%d,&cark.car_arr);menu();
21、 参考文献1 梁建全,周力,孟志勇,田利军精通轻量级Java EE框架整合方案M人民邮电出版社,20082 夏昕,曹晓刚,唐勇深入浅出HibernateM电子工业出版社,20053 吕凤翥,马皓Java语言程序设计M清华大学出版社,20064 孙更新,宾晟,周峰Struts框架结构的Java Web开发技术基础与实践教程M电子工业出版社,20085 明日科技,梁冰,苏宇,吕继迪JavaScript技术开发大全M人民邮电出版社,20086 王俊标精通Java Web开发基于Struts、EJB、Hibernate、JBuilderM人民邮电出版社,2007 总结 (姓名 )教师评语:成绩: 指导教师: 总结 (姓名 )教师评语:成绩: 指导教师: 总结 (姓名 )教师评语:成绩: 指导教师:22