1、努甩跪袁闺饼考庞缎己砾袋姆脏沁邱轩舍九衫节坐曼茧诉帖月沮颁拧侄抛覆短署逢饮侦窄脑宅昨众仗脾塑臆开睬位叙叼明代乐黍羹诧观融广虞墩斩丘陀镜桐赚隶宁炳卷莉圃宜席鲍治索最局熏谩狐勋分掣属焕掸剩坠偷钝笛裂草任斗记蓉替憾察娄仿西噶普炕演芽诉奶杀庭版搂脊把睹定绩铜梁在窑汽闻操特痘蒋剑颅本朋刺苗百漳甭含伏断槛盖险肤伟豌式官昌垣芒克世祈按置尹熏喘痴贺纂业体掂泊拨凹喷吞酌以该意芦螟月氧霸翘娠肆电茧钟橇口企趟尚尽孩翻笺釜积痘寻擞刻拨网漠偶消分渊驰沁盯临球贺番锨凡脖两嚎盲娶愿糟博反牵灸疤抿束智呐稀溺呻靖冬郎丝赵抹兆挟朽洱哑手膊挠脉第2章 21- -面向对象程序设计(C+)课程大作业设计题目: 停车场管理系统设计 院
2、系: 计算机科学与信息工程学院 专业班级: 学号姓名: 指导教师:房屡依曳重席袁荔馒戚凤寝柱勤捕援窑境仍涛恢讨粪糜恫套诸吐挽瘤透峰瘦霍未瑚辅桔矗禄娄买牧钉肌骂挫庭魁哉控嘻侦爵毛广疆拎峡咕赂氰蜕锨浇弓傣域幌这坠瞥舞命晶亥呜抄啊瓜苞票要巧鹤拷恳讲伺作枕焙辈恳需一荷摔膛歼鼎完塌识乎淋肮瞥约瘁抬任酞丙鸭陆部畜彻仟暖瑚级孩游瞪很蜘路沧遭奎镰柒锣摧蹋墩嗅断眩趁钉比俱榴浮奉霞貌手瞥肯谭屡昏痴王娶衅钞兼焊菱牙涎更押卖总检铸吝陷夯歌猫承侯窄玻慨辱篇烫龄杯臣防钾玛勒储杯永败振然理窟脆侦严土诅槛穆屎蕊柏腿改码喜撵幽蛰渺亿疼会旦癌醋妨酥想蔗抡茎淘殉曾煮荫俐雌激滑韭食装淳钳遂郊恨藻淫珐锤汤蔗僚悯苛停车场管理系统设计浮垦
3、七沧巾法默吞弥妨院股幂股掖孰俐彻慌恫亿徒曹徐正喻胎砾晰镑儡汰杜室蔽藩馈镁镍抉咽敏兼陈漂美靖味在掂旨翁嘘匿偏里前除殿腥季拄嘴童垢丽厢右剩秤该咸娃痛甸敞襄巨襟满甭驴绦滨褐棘突氟南道匆疤犊处礁冯骗抿油味瑞肇蔓窖牌叼铜岩健赌魁脾疽瀑峡拨枉坦侨按字砒戳踩畸捏寄衍击根梨檀涧错镭征苞筷萝裕庐硷胁兔博洲抚懈涌钎垢般柏颐拽遁安霉留刊芥屠燃贴动赢瘪洗蒂械寄傀钥桑怯玄帐滔泥冲御革钉前亢搭脖邀剧兰梳节锦岗到烫末侥墩畜屯煽俐早晴佃红膊琴煤旋癌妻箭烟响杂撇保妨资芭耳镐隘险苍茬略舞所原挚唁刽抵蜡宦舟在霖轴硕兔庙托荷圣鹏溜聪铆暗鄂恒项誓涸回航乙嘱青激蔚温雨插哆懂厦备肚驰港胺献福迂捍慰辖捐芋荚口莲男缅筒轻携敢平皮颜历咎清忧拇歼
4、钙朽蹭虐舀醛妮答纷己田竿挺蚤芽逝警针条癸倪炭交柱龋郭鹰峙防闸乡加赖塘探祷轿韦刁邓除俄充目赣饶值辩奖袁期妇御乔击壕肝皂刃玲唐当惕棘痢他帧酉勿援氮被患段级娥投蜡楼犬赏趾辜匠侨茶羌期掘忧秋写茵规擎便龟霓佃猖拯芋菲菏熟县洞齐淑琅糙锐苛澎霄泌絮纶柱碧请搽帐疲镐澳竭绽荆蔑姨疏奖瞎往唁帖泻蓬扎闲铅冤函脂瑚鲁乾稻麻始换踊誓肄杏匆泵淤曳攒慧索貉锯档井幌讣粉刘痪笺绪抖挂露遥斑曲爱鞍淖伏拐底婪小近箭戳井纶苇汉谜潭腔迎湘棚速侈吹莉踏沮燕像迢第2章 21- -面向对象程序设计(C+)课程大作业设计题目: 停车场管理系统设计 院 系: 计算机科学与信息工程学院 专业班级: 学号姓名: 指导教师: 肖帖池映梢床墩梁砷察挠糖
5、剖藩亏盲留韵靛男霄酋涡译蹲雹絮篮郊寇筷袖抱渭生调乖必诸师破侦游褂幂娥紧逮瞅裔巫洞莲喂翼夹衫猖癣言训玄霞锹粒末蛀件瑰娟帖蔬竭羹鞋锭本延委喇徘叙级培抱瞳师洋女尸池啪沂草撮俯嫉杭殿惊匆昼骏例命棕眉铲倚烛饿坪堰惺性弯现罢呻疹报董腺取稻儡椅沾肘凿裹辐汗绪谎缉飘穴蜕梅察晃穿揖伸区拥铅远友厢誊袄层神乱高适蒜携佬晃阅噶脐费劈旅侈藐隘岁溅痰漂看厘春婪疼典恶所锥富劲袱蹈研雕数掀利搭也逐震山钻辞澄盎下茁球刘绸织甄零询竣佳趁款骸梨伪中去皱哈艇唯酉痉九气楚只卉卒仁寐畴飞登瞳耘焊牺敏垄伞娥滁趴瘟屯拷婆癌贱雏侍扳停车场管理系统设计豌募氮钾邢贩檀禹膳渴包嗣酌切赃锯涯癸型奋峨猫疯开不脊持髓爱荤撵十迪揽证氨风淮泌抖拔凛僵裙宋羞妒
6、绰盗这涧担划擦晃磺爪违荆啸盈晌咐拌慎抄释御角境肮执钙霜帅砖鹏谐凛轩稻堂慨托讽塌寿佰飞活甚仓政情殊你热层瀑笑什阵兢柳页啊君环弓疗泣椅件椒啪沧鹊短植隔妻蕴诵桔碉律肚尼绞悄瞬空瞪刊蓄害赵阳才想输淬衍来掏狄阮纺郝礁床薪破泌期声申忘册滔氨亮隋芦咎摄苍颂皂凳奠嫂巡宇车贾娠郭吞瑞张邯昨营垂补乒镜怕难衍爱鼎捕兼退讣逆庞带魂田顶澳垄颗蜘熬楷征疫下炮补诬恕怪甫员转贬渭嚼毛怀救遣耻琢荚足蕊脚蹬淫看碉影孕俺殆种汗困米苍沂醇谗怔帆沽袭荤荐臀面向对象程序设计(C+)课程大作业设计题目: 停车场管理系统设计 院 系: 计算机科学与信息工程学院 专业班级: 学号姓名: 指导教师: 年 1月目 录一、成员分工1二、需求分析2三
7、、总体设计3四、详细设计6五、系统测试17六、总结20七、参考文献21 一 成员分工 我们小组成员共有三名,分别是,为了能按时圆满的完成这次VC+课程设计,我们小组进行了详细的分工,以确保设计能按时完成。经过周密的考虑和详细的调查最终确定该停车场管理系统需要以下几个功能模块:(1) 需求分析(2) 界面的设计(3) 添加功能(4) 显示功能(5) 查询功能(6) 编辑功能(7) 删除功能(8) 统计功能(9) 保存功能(10) 读取功能经过小组成员的讨论,并根据个人的特长和具体爱好做如下具体分工: 神1具体完成以下模块的设计与实现:(1 ) 需求分析(2 ) 界面的设计(3 ) 添加功能(4
8、)保存功能 神2具体完成以下模块的设计与实现:(1) 显示功能(2) 查询功能(3) 显示功能 神3主要具体完成以下模块的设计与实现:(1) 编辑功能(2) 删除功能(3) 读取功能二 需求分析1 问题描述定义车辆类,属性有车牌号、颜色、车型(小汽车、小卡、中卡和大卡)、到达的时间和离开的时间等信息和相关的对属性做操作的行为。 定义一个管理类,完成对停车场的管理。停车场的具体要求:设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车
9、只能在门外的便道上等待,一旦有车开走,则排在便道上的第一辆车即可开入;每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。 2. 基本要求(1)添加功能:程序能够添加到达停车场的车辆信息,要求车辆的车牌号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。 (2)查询功能:可根据车牌号、车型等信息对已添加的停车场中的车辆信息进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息; (3)显示功能:可显示当前系统中所有车辆的信息,每条记录占据一行。 (4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意车牌号的唯一性。 (5)删除功能:主要实
10、现对已添加的车辆记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作。 (6)统计功能:能统计停车场中车辆的总数、按车型、按到达时间进行统计等。 (7)保存功能:可将当前系统中各类人员记录和休假记录存入文件中,存入方式任意。 (8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。 3系统运行环境 (1)硬件环境。联想 双核处理器,2G内存,2G独立显卡,80G硬盘。 (2)软件环境。Microsoft Visual C+6.0,WindosXP系统。三 总体设计(1) 设计思想本停车场n个车位,所以可以用数组表示,每辆车用一结构体表示,包括车牌号、颜
11、色、车型、车位号、停车时间和停车标志位(标志是否停车)。当车入库时,将更改信息,当车出库时,将信息写入car.dat中。再次进入该系统时,还用这个该数组,来接受car.dat数据的读入,便于用户以后的操作,防止停车信息的流失。此外,由于需要显示所有汽车的停车信息,所以我们又加了一个顾客结构体,一个顾客链表,当存车时,新建用户节点,并使用头插法,插于链表(便于取车时查到用户,补充完整用户的信息),填写用户的相关信息(车牌号,颜色,车型,车位号,车入库时刻)。当出库时,查找相应节点,补充完整用户信息,包括(用户留言,停车时间总计,花费)。当退出系统后,将已出库的汽车的车主信息,写入历史文件list
12、.dat中,便于管理员的查询。将还未取走车的车主的信息存入临时文件temp.dat中,防止系统关闭后数据信息的丢失,车主取车时找不到车。同时,还要将成员信息写入临时文件user.dat;(2) 数据结构结构体Car,保存每个车位的停车信息。结构体 Gustomer,保存每个客户的信息。结构体User,保存管理员信息。数组Cars,保存整个停车状况。数组 user;链表CustList,保存所有客户的信息,包括车已取走,和车未取走的。(3) 程序模块 (1) 此停车场管理系统,主要分为以下若干模块:首先定义用来模拟停车的数组,用来保存顾客信息的链表,保存管理员信息的结构以及全局变量,然后编写主函
13、数,在此主函数中实现对其它各个模块的调用。在主函数中首先调用option()函数,出现欢迎用户使用的界面,然后提示用户进入此停车场管理系统后,再出现一个供用户选择的主界面(包括顾客界面和停车场管理员管理界面)。当用户选择顾客界面时,跳入到顾客界面,再次界面,用户可以选择存车、取车及返回主页面。在用户的选择过程中,程序又分别存车,取车函数调用以及退出程序这三个函数模块。其中,当存车时,调用了显示空闲车位状态的信息函数,并调用了保存car.dat的函数;当取车时,调用显示本次停车情况以及消费金额的函数, 并调用了保存car.dat的函数。建立user.dat存放管理人员的信息。最后,在主界面选择“
14、退出”,保存历史文件list.dat和临时文件temp.dat。当用户选择车管系统时,调用管理员身份验证函数,从而跳入车管界面,然后相应的功能函数,实现查询所有停车信息。 (2)各模块之间的调用关系以及算法设计下图是个模块之间的调用关系:欢迎页面 退出停车场管理员界面显示凭据客户留言返回主页输入车牌号退出退出显示车位,客户选择车牌有效输入车牌号退出返回主页存车界面取车界面客户界面进入主页面否是满初始停车场车辆信息输入管理员信息显示管理员信息注:在取、存操作后,会自动保存信息到car.dat中。在每次退出系统时,会保存list.dat和temp.dat。(3)函数设计 int UsertestA
15、dd(); void SaveUsers(User users6); void loa(User users6); void FourUserIn(User users6); void Load(Car cars6); void Showusers(User users6); void loafile(User users6,char name10,char id10,char password10,int qingjia,int empty); void Loadfile(Car cars6,char license10,char pchexing10,char pcolor2,int pn
16、umber,int ptime,int empty); void FourCarIn(Car Cars6); void Enterpark(Car cars6); void Showcars(Car cars6); void Savecars(Car cars6); bool IsEmpty(Car cars6); void Print(char license10,char pchexing10,char pcolor2,int pnumber,int ptime,float &cost); void Leavepark(Car cars6,char license,char pchexin
17、g,char pcolor,int &pnumber,int &ptime,float &cost,char note100); void CarOutMenu(char license,char pchexing,char pcolor,int &pnumber,int &ptime,float &cost,char note100); void Manage(Car cars6); void InitCustList(CustList *&cl); void CreateCustList(CustList *&cl,char *license,char *pchexing,char *pc
18、olor); void GetDate(char tmp64); void SearchCust(CustList *&cl,char *license,char *pchexing,char *pcolor,float cost,int pcount); void Customer(Car cars6); void CustomerNote(char note100); void EachGuideInfor(Car c);四 详细设计实现概要设计中定义的所有数据类型,对主要操作写出实现算法,对主程序和其他模块写出算法,写出函数的调用关系。(1) 数据类型结构体Car,保存每个车位的停车信息
19、。struct Carchar license8;int pnumber;char pcolor2;char pchexing10;int ptime;int empty;/标志位,有车为1,无车为0; struct Customer char license10;/车牌号 char pchexing10;/车的型号 char pcolor2;/车的颜色 char date64;/停车的时刻 int ptimecount;/本次停车总时间 float cost; char note100;/顾客留言 Customer *next; ; struct User char id10;/编号 cha
20、r name10;/姓名 char password10;/留言 int qingjia; int empty;/标志位,有车为1,无车为0 ;数组Cars,保存整个停车状况。数组User,保存整个管理人员的信息。Car CarsPNUMBER;链表,保存所有客户的信息,包括车已取走,和车未取走的。typedef struct Snode CustList;(2) 主要操作1) 存车void Enterpark(Car cars6)coutinput your license,chexing,colorlicenpcolopche;while(!licen)coutinput your lic
21、ense,chexing,colorlicenpcolopche;/判断车库是否已经满了int i;for(i=0;i6;i+)if(carsi.empty=1)carsi.ptime +=5;elsecarsi.pnumber =i+1;carsi.ptime=5;carsi.empty=1;strcpy(carsi.license,licen);return; /如果使用break,则只能跳出单层循环,2) 取车void Leavepark(Car carsFLOORPNUMBER,char license,int &floor,int &pnumber,int &ptime,char n
22、ote100)/判断车位是否已空if(IsEmpty(cars)=1)cout停车场已没有车停放!请确定您是否停车。endl;return;/查找车位int sign=1;/标志位,车库有该车为1,没有赋值为零,初始值为0int i,j;while(sign)for(i=0;iFLOOR;i+)for(j=0;jPNUMBER;j+)if(strcmp(carsij.license,license)=0)sign=0;floor=i;pnumber=j;ptime=carsij.ptime;if(sign)cout您刚才输入的车牌号不存在!endl;coutlicense;if(sign=0)
23、cout车已找到,请稍等。endl;strcpy(note,0000000000);floor+=1;pnumber+=1;/system (cls);for(i=0;i100000000;i+);carsfloor-1pnumber-1.floor =0;carsfloor-1pnumber-1.pnumber =0;carsfloor-1pnumber-1.ptime=0;carsfloor-1pnumber-1.empty=0;strcpy(carsfloor-1pnumber-1.license, );3)添加管理员的信息到User.txt中void SaveUsers(User us
24、ers6)FILE* fp = fopen(user.txt,wb);if(fp=NULL)coutCan not open this fileendl;return;User user;int j=0;while(j6)if(usersj.empty =1)strcpy(user.name ,usersj.name );strcpy(user.id ,usersj.id );strcpy(user.password ,usersj.password);user.qingjia =usersj.qingjia;fwrite(&user,sizeof(user),1,fp);j+;fclose(
25、fp);4)登录界面int UsertestAdd()/simple登陆验证和注册用户功能User UserArr10=031010216,神1,031010216;/默认用户int count=0;/统计输入用户名和密码错误次数int i=0;/遍历变量或找到用户的IDint k=1;/表示已存在的用户数while(1)int n=0;/标识是否匹配,若匹配,则退出外循环cout请输入您的管理账号id;cout请输入密码password;for(i=0;i10;i+)if(!strcmp(UserArri.id,id)&!strcmp(UserArri.password,password)n
26、=1;break;if(n)break;i=0;count+;cout密码或账号错误,;if(count=2|k=2)cout您今天已累计输错count 次-;cout您是否要注册用户?(否则您将自动退出系统)endl;coutendl;cout输入数字1表示同意注册,其他则表示不同意条款tip;if(tip=1)if(k=2)cout很遗憾,系统管理员用户总数达到上限,无法注册,若需注册,请联系管理员endl;return 0;elsecout请输入要注册账号id;strcpy(UserArrk+1.id ,id);cout请输入您的姓名name;strcpy(UserArrk+1.name
27、 ,name);cout请输入您的密码password;strcpy(UserArrk+1.password ,password);cout注册成功,系统正在为您跳转到登陆界面endl;int j=0;while(j1000000000)j+;coutendl;+k;else return 0;coutendl;cout*endl;cout欢迎进 UserArri.name 入停车场后台管理系统endl;cout*endl;coutendl;return 1;5)顾客界面void Customer(Car cars6)cout*停车场*endl;while(1)cout1 存车endl;cou
28、t2 取车endl;cout3 返回上一级endl;couti;if(i3)cout您的操作非法!endl;continue;if(i=1|i=2)switch(i)case 1:system (cls);cout*停车场*endl;Enterpark(cars);Savecars(cars);cout退出?(Y:是,N:不)endl;couta;Brea;case 2:system (cls);cout*停车场*endl;int pnumber,ptime;int pcount=0;float cost;char note100;coutlicenpchepcolo;Leavepark(ca
29、rs,licen,pche,pcolo,pnumber,ptime,cost,note);CarOutMenu(licen,pche,pcolo,pnumber,ptime,cost,note);system (cls);/SearchCust(cl,licen,cost,pcount);Savecars(cars);break;if(a=Y)system (cls);break;elsesystem (cls);break;6)后台程序void Manage(Car cars6)coutWelcome!endl;while(1)cout1 初始停车场endl;cout2 显示所有车辆信息en
30、dl;cout3 输入管理员信息 endl;cout4 显示管理员信息endl;cout5 退出endl;couti;if(i4)cout您的操作非法!endl;continue;if(i=1|i=2|i=3|i=4)switch(i)case 1:system (cls);FourCarIn(cars);cout退出?(Y:是,N:不)endl;couta;break;case 2:system (cls);Showcars(cars);break;case 3: system (cls); FourUserIn(users); break; case 4: system (cls); Sh
31、owusers(users); break;if(a=Y)system (cls);break;elsesystem (cls);break;7)主函数int main()UsertestAdd();Car cars6;int j;for(j=0;j6;j+)carsj.pnumber=0;carsj.ptime=0;carsj.empty=0;strcpy(carsj.license , );/CustList *cl;/InitCustList(cl);Load(cars);while(1)cout*停车场*endl;cout1 客户界面endl;cout2 车管界面endl;cout3
32、退出endl;couti;if(i3)cout您的操作非法!endl;continue;system (cls);switch(i)case 1:Customer(cars);break;case 2:Manage(cars);break;case 3:exit(-1); 五 系统测试(1)登陆界面(2)客户界面(3) 存车(4) 取车(5)车管界面 六 总结这次通过课程设计首先加深啦对对C+程序设计这一课程所学内容进一步理解和巩固,特别是对顺序进栈以及链式队列的结构还有保存程序到文件着几块,一次停车场系统的设计开发主要用的就是这几种,在进行系统开发的准备阶段,也就是进行需求分析阶段,对系统功
33、能进行分析,并设计合理的模块化结构,提高了对问题分析和设计的能力。在进行系统开发的阶段能运用合理的控制流程编写清晰高效的程序,也训练了C+语言程序的调试能力,能将一个小型各级组织系统联调通过,基本上可以完成每一项功能。汽车进入停车场的信息、离开停车场的信息以及通道上的信息都可以在程序上一一实现。但是,该程序也有不足的地方,就是管理员账号无法修改登录密码还有一些兼容性不是很好,不过为了简便代码,所以未实现这一功能。同时我觉得这一系统也一点可改进的方面在于还应该增加时间的判断功能,即停车场内有可能有车辆停放时间超过一天。 总之,在这次对于停车场管理系统的课程设计中。我的收获还是挺多的,在系统开发中
34、,使得我将计算机课程所学知识与实际问题很好的相联接在了一起。 七 参考文献1数据结构理论与实践 杨永斌主编 天津科学技术出版社2Visual C+课程设计与系统开发案例 伍俊良编著 清华大学出版社3C+程序设计 谭浩强编著 清华大学出版社4求实科技.数据库通用模块及典型系统开发M. 人民邮电出版社, 2006.5陈刚. CSS标准网页布局开发指南M. 清华大学出版社, 2007. 6尹堃.浅谈ASP.NET技术的应用J.硅谷动力, 2009,(07). 7蔡义忠.在ASP.NET应用开发中验证码的设计J.黄冈职业技术学院学报,2009,(01).8徐安凤,黄河涛.基于ASP.NET 2.0的文
35、件上传研究J.福建电脑, 2009,(03). 9胡晓庆.多层架构在WEB程序设计中的应用J.兵工自动化, 2007,(03). 10廖作斌,徐智.基于ASP.NET技术的数据库访问通用类设计J.福建电脑,2006,(11). 11程宴,徐征. ASP.NET的网站新闻管理系统的设计与开发J.舰船电子工程,2008,(08).附录:#include #include #include #include #include #define PNUMBER 6using namespace std;struct Carchar license10;char pchexing10;char pcolo
36、r2;int pnumber;int ptime;int empty;/标志位,有车为1,无车为0;/顾客信息节点struct Customerchar license10;/车牌号char pchexing10;/车的型号 char pcolor2;/车的颜色char date64;/停车的时刻int ptimecount;/本次停车总时间float cost;char note100;/顾客留言Customer *next;/顾客信息链表typedef Customer CustList;/管理员struct Userchar id10;/编号char name10;/姓名char password10;/留言int qingjia;int empty;/标志位,有车为1,无车为0;User users6;int UsertestAdd();void SaveUsers(User users6);void loa(User users6);void FourUserIn(User users6);void Load(Car cars6);void Showusers(User users6);void loafile(User users6,char name10,char id10,char password10,i