停车场管理系统软件工程课程设计.docx
课程设计说明书课程名称:软件工程课程设计题目:停车场管理系统院系:理学院专业班级:学号:学生姓名:指导老师:2012年6月8日安徽理工高校课程设计(论文)任务打理学院院系信计教研室学号学生姓名专业(班级)设计SS目停车场管理系统设计技术参数系统平台:IindowsXP开发工具:MiCQSoftVC÷+6.0建模1:具:MicrosoftVisio2(X)7抓图工具:红靖蜓抓图精灵利用软件工程的思想和方法完成停车场管理系统的分析、½iK实现等,主要实现的功能仃:记录车器信息,动态安排车位,停车费用结筋,铤看停车场乍位.的运用状况,退出系统等功能,解决车辆停放难,乱收费等问施需求分析,概要设计,具体设计,编码设计以及调试。I作计划5月28日一5月3Q11完成需求分析6月1日6月313完成概要设计和具体设计6月4日6月6日完成程序设计6月7日完成Word文档编写及窗【1截图6月811提交程序和课程设计说明书参考资料1严团敏.数据结构僧.北京:清华高校出版社.20092齐志昌,谭庆平.软件工程W1.北京r高等教化出版社,2006.43厚浩强.C程序设计第三版M北京:清华高校出版社.20084温秀梅YiSUaIC+面对对象程序设计僮北京:清华高校出版社,20055王珊,仍师培.数据库系统概论MJ.北京;高等教化出版社,2006.5指导老师签字教研室主任签字安徽理工高校课程设计(论文)学生姓名:学号:专业班级:课程设计应目:停车场管理系统指导老师评潘:成果:指导老师:李涛2012年6月101.1.书目第一章引言1.1 系统制作背景1.2 系统制作要求其次章需求分析2.1 任务概述2.2 系统开发缘由2.3 系统开发任务第三章概要结构设计23.1 基本处理流程23.2 总体结构3第四章具体结构设计44.1 程序系统的结构44.2 菜单函数44.3 初始化模块设计4.4 车辆进入函数74.5 车辆离开函数8第五章测试分析105.1 主菜单函数105.2 初始化操作115.3 车辆进入IOI5.4 车辆离开并收纨错误!未定义书签.2第六章总结13参考文献14第一章引言1.1 系统制作背景说明:运用此软件系统的名称:停车场管理系统随着计算机技术的发展,在各行各业的应用越来越广泛,停车场管理由原来的人工管理进入计算机系统管理那是个必定趋势,计算机系统管理可以大大提高管理的效率和正确性。1.2 系统制作要求设有一个可以停放11辆汽车的狭长停车场,它只有一个大门可以供车辆进出.车辆按到达停车场时间的早晚依次从停车场最里面对大门口处停放(最先到达的第一辆车放在停车场的最里面)。假如停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第-辆车就进入快车站。停车站内如有某辆车要开走,在它之后进入停车场的车都必需先退出停车站为它让路,待其开出停车场后,这些乍辆再依原来的次序进场,每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费.假如停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍旧保持在便道上等待的车辆的次序。编制程序模拟该停下场的管理。其次章需求分析2.1 任务惬述依据题目要求,因为落车场是一个单条的序列,可以用结构体实现:在程序中,须要知道每辆来车的具体停放位置,应供应提示、查找、标记工作。车辆离开耍计时计费.另外,每天起先时,停车场耍初始化.2.2 系统开发缘由随着经济的发展和人民生活水平的提高,买车成为人们的奋斗目标之一,当然已经有许多人买起了车。可是陵若车辆的增多,车辆的停岸问题也陵之出现。这就使得各停车场须要更加先进、更加完善的车辆管理系统.2.3 系统开发任务实现停车场的现代化管理,记录车辆信息,动态安排车位,停车费用结算,查看惇车场车位的运用状况,退出系统等功能,解决车辆停放雄,乱收费等问题。3.1基本处理流程第三章概要结构设计图3-1停乍场管理系统3.2总体结构:看车位运用状况退出系统计以容车也用车辆礴开信息车辆到达信息新到来车辆柠放行车志开时新到来车辆停放新到来车辆在便道上等候无空余车位.有空余车位.第四章具体结构设计4.1 程序系统的结构4.2 菜单函数voidmcnu()(intn.w:doPutS(Xtt*MENU*"nn"):PU1.SCtvV1.初始化”);puts("ttt2.有车进入");PInSeMVV3.有车离开"):PUtS(WV4.退出"):uiM"nntt*n");PrinIf(RPIeasechoiceyournunber(1.-4):bb,t);scanR"%d".&n);if(n<1.n>4)产对选择的数字作推断”/W=I;gctchar();e1.sew=();whi1.e(w=1.);switch(n)(caseI:chushi();break;产初始化函数*/case2:jinru();break;*车辆进入函数*/case3:Iikai0:brcak;7*车辆离开函数*/case4:exit(0);"退*/4.3 初始化模块设计【需求分析】该模块是将每天起先的停车场内和便道乍位清零。首先建立场内场外的结构体,结构体内成m即车位的状态。用循环实现车位的致零即可.structChangnei产场内车道信息*/(intncikong;chnN-1.;structChangWai*场外车道信息*/(intwaikong;)chwM-1.;N和M分别是停车场和便道的车位预设值,用宏定义。用户可依据实际状况变更。#<1.efineN100产预设停车场有I(X)个车位*,#<1.CfinCM1.OO产预设便道有100个出位*/voidChUShi(V*初始化函数inti.j;for(i=0u<=N-Ui)ChnIiI.ncikong=0;/*将场内车道设过.为空*/fr(j=Oj<=M-1:j+)ChWi.waikongW将便道乍道设置为空*,printf("nnt己初始化5n");menu。;函数出示化后将回到菜单界面。4.4 车辆进入函数【需求分析】车辆到达后,要指定车辆的停车位置。用户依据菜单函数进入车辆进入模块。依据每辆车的到达次序赐予车辆次序号,由O号起先。车辆信息也建立结构体。S1.rUCICar/*车辆信息*/(intcarIUm车辆次序号*/intcar-arr;/*车辆到达时间*/intcar_1.efj*车辆离开时间*/intcar-s(ay*车辆停放位置*/carCIXUHAOJ;其中,CIXUHAO是车辆次序号的宏定义:#<1.CfinCQXUHAO100o产预设车辆次序号。不管车辆到达时停在场内或便道,均依次设置一个次序号,由0起先*/赐予车辆次序号之后,用循环推断停车场是否停满,再分别赐予选择:场内是否己满已满,将车停在便道未满,指定停车场位置.voidjinru()*车辆进入函数inth=0;Prifrtf("nn请输入该车次序号(从0号起先)scanf(',%d".,fca):fbr(i=O;i<N;i+)if(chni.ncikong=0);产无车*示记0*/if(chni.ncikong=1.)*车标记1/h=h+1.;if(h=N)Printfe停车场内已停满,请停在便道上n");e1.secara.car-stay=h;nF返回主令其进场菜单输入次序号图4-3和进场时间4.5 车辆离开函数【需求分析】若有辆车要离开,则须要记录该车的离开时间,以计算出该车在停车场内的停车时间和应当缴纳的费用.该车离开后,要推断便道上是否有车等待进入,如有,则将便道上第一辆车停放在停车场内及终的位置并记录好进场时间;若无,则返回菜单。voidIikai()/*车辆离开函数*/inti,k,choi,iime;doub1.efee;Printfr请输入底开车辆次序号I,并将此车之后的车先全部退出停车场!");scanf("%d".(fci);Printfcn请输入离开车辆的离开时刻(24小时整点计时):nw);scanf(',%d",cari.carJet);fcc=D*(cariJxarJcf-cari.car-arr);timc=cari.car-1.cf-cari.car-arr;PrintfC次序号为d的车停车时间%d小时,应收费f元,i,time,fee);printf("nnn请让场内退出的车再依次进场!nnn");Printfc'便道上现在有车吗?(请选择I或2)n1.有52.没有W);/*因便道上可能没有车,因此要做选择*/scanf("%d".&choi);if(choi=2)mcnu():if(choi=1.)Printf("请让便道上的第一辆车进场n");Printf("该车次序号为:5");scanf("%d",k);PriiMfC请输入该车进场时间:n。;scanf("%d".&car|k.car-a);nenu():D为预设停乍场单位小时费用,用宏定义.便于以后修改,#<1CfinCD1.27*预设车辆停车费为1.2元每小时*/第五章测试分析5.1 主菜单函数5*C:Docu*ent5andSettncsdBxnstrator!diDcbutHi.ee入开化进离始初有有三一1234P1.aachoiceyournunimr<1.-4>:(J图5-15.2 初始化操作<、<C:DouaentvandSottIncvXAdainifftrator)MiVDebucHIexo1.easechoiceyournu«ber<1.-4>:(1己初始化«£HU化普始4-宙初有.12345.3车辆进入有车进入P1.easechoiceyournunber<1.-4>:12)藻麹解域矗?!%彘开始.、该车进诧车场城刻&4小时整点计时5,P1.vasechoiceyournuRbcr<1.-4>:(2)育里人该年次序号C从吟开始):1发车应该停在吊车场内第®(从0道开始记)百砧入谡车进V车场叼刻彳24小片隹点计好5.图5-3以上分别举例0,1,2:个车的进场状况5.4车辆离开并收费N序号为g的车停车时回7小时,应收费8.4”HmM元彳让场内退出的车再依次迸场I理上现在有车吗?<请选择1或2>幅有:XDocuaentsandSettnc*AdanstratorDebucH1.e*RX1.,1234入开化进说始至市初有有退图5-4Ieaeechoiceyournunber<1.-4>:(31产输入高开车辆次序号【并将此车之后的车先全部退出停车场I。g檎人离开车辆的通开纣刻(24小时整点计时),若便道上没车,则退回到主菜单直上现在有车喝?<请选择1或2>没有*MENU.初始提.有车虚入.有平而开.退出aschoiceuournunbfc<1.-4>三(_)图5S若便道上有车JvCzXDocuBentvandSettncsAdanistratorMDebucH1.e*BS&便道上现在有车吗?<请选择1或2>患有余辿便道上的第一辆车进场该车次序号为%箱入城车进场时间:91234入开化富始年田初有有退P1.easechoiceyournunbe<1.-4>三t)图5-6第六章总结首先通过这次课程设计,加强了我的动手和思索解决问题的实力,学到了许多书本上学不到的学问,同时也巩固了对课本的学问,对我将来也是有很大的帮助。刚起先京到这个题目是信念满满的,但是在做的过程中还是遇到了许多的问题0在制作过程中心理虽然有许多创意和构思,但是实际操作却存在很大的困难.制作界面的时候学到的最主要的耐性,有恒心一切都会变得迎刃而解。通过该实例的实习,要求大家进一步理解和运用结构化程序设计的思想和方法,初步驾驭开发个小型好用系统的基本方法,学会调试较长的程序,学会利用流程图表示算法,进一步驾驭和提高利用C语言进行程序设计的实力0参考文献1齐志吕,谏庆平.软件工程M.北京Z高等敦化出版社,2006.42王珊,萨师珀.数据辉系统概论W1.北京:高等教化出版社,2006.533三,循师坊数据库设计理论与实践JJ.计算机应用与枚件,1984.24刘浩,陈曜东M编程实例与技巧”,北京:清华高校出版社,2002.1何鹏飞压征C#好用斓程百例M.北氤清华高校出版社200437原程序代码#inc1.ude<stdio.h>#inc1.ude<std1.ib.h>#inc1.udc<string.h>#dcfincN100/“预设停车场有100个车位*/#defineM1.OO厂预设便道有100个出位*/SdefineD12号预设车辆停车贽为1.2元每小时*/#<1.CfinCQXUHAO100O产预设车辆次序号。不管车辆到达时停在场内或便道,均依次设置一个次序号,由0起先*/voidmenu。;voidChUXhi0;voidjinru();void1.ikai();structcar/*车辆信息*/(intCajnUmJ*车辆次序号*/incar_arr:/*乍辆到达时间*/intcar_】eH*车辆离开时间列intcar_s1.ay;/*车辆停放位巴*/carCIXUHA0;structChangne"*场内车道信息*/(intncikong;)chnN-1.;structChangWai*场外车道信息*/intwaikong;)chwM-1|;Voidmain()/*主函数*7Imenu。/菜单函数*/voidmenu。intn.w;do,y,PuISczV1.初始化”);puts("ttt2.有车进入"):puts("t1.t3.有车离开PU1.ScNV4.退出");PI1.1.S("nntt*n");printf("P1.easechoiceyournunbcr(1-4):bb");scanR"%d".n);if(nvn>4)产对选择的数字作推断*,w=1.;getchar();e1.sew=0;WhiIc(W=I);switch(n)ease1:chushi();break*初始化函数*/case2:jinru();break;/”车辆进入函数*/case3:Iikai(Xbreak/*车辆离开函数*/ease4:CXit(O);/*退出*/)voidChUShio*初始化函数”inti.j:for(i=0:i<=N-1.;i+)Chni.ncikOng=0;产将场内车道设置为空*/for0=Oy<=M-1j+)ChWu1.Waikong=O/将便道车道设置为空*/printf("nntI己初始化nn");mcnu();VoidjinrU(F*车辆进入函数*7inii.a;inth=0;PrinIfCnn请输入该车次序号(从0号起先):");scanf("%d",a);for(i=0:i<N;i+)if(chni.neikong=0);/*无车标记0*/if(chni.neikong=1)/*有车标记1.*/h=h+1;if(h=N)Printir停车场内已停满,请停在便道上W');e1.se(cara.car-siay=h;chnh.ncikong=1.;Printf("该车应当停在停车场内第道d(从。道起先记)n".h);Printf("请输入该车进停车场时刻(24小时整点计时):n");scanf("%d",&car|a.car_arr);mcnu():IVoid1.ikai()产车辆离开函数*/inti.k.choi.timc;doub1.efee:PrinItr1请输入离开车辆次序号并爵此车之后的车先全部退出停车场!");scanf("%d"i);PrintfCn请输入离开车辆的离开时刻(24小时照点计时):n"):scanf(',%d".ca1.i.carjef):fee=D*(cari.carJef-cari.car-arr);timc=cari.carjcf-cnr>r-arr;Printfr次序号为d的车停车时间d小时,应收费f元n”.i.timc.fcc):printf("nnn请让场内退出的车再依次进场!nnn");Primfr便道上现在有车吗?(请选择I或2)n1.有52.没有5个尸因便道上可能没有车,因此要做选择*/scanf("%d".&choi);if(choi=2)mcnu();if(choi-1)(pri!rtf("请让便道上的第一辆车进场n)Printfr该车次序号为:n");scanf("%d",&k);Prin1.fr请输入该车进场时间:n");scanf("%d",&carkJ.car-a):mcnu();