C项目设计报告_第1页
C项目设计报告_第2页
C项目设计报告_第3页
C项目设计报告_第4页
C项目设计报告_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 停车场管理系统 项目设计报告 所在班级:能源1004班 指导教师: 胡 彬 项目开发分工: 组员 学 号 分 工 赵博文 U201011459 3种车辆类的设计:存储功能设计;整体程序测试及完善。 杨小虎 U201011461 主函数的设计、类的设计构思、整个程序的顾问及技术支持 柳格 U2010114* 程序设计和测试;项目报告操作指南设计;项目报告整合。 雪克热提江阿不来海 U201011460 主页面的设计;主函数的调整;整体程序的调试,修改; 王鹤 U201011458 密码类的设计,程序初步汇总;部分程序测试;项目报告设计。 目录 一、项目分析3 二、功能描述3 三、概要设计报告4

2、 四、程序流程4 五、程序结构图5 六、操作指南5 七、项目总结8 八、程序代码9 一、项目分析 (1)目的: 加强所学习的C+知识, 进一步熟练掌握C+语言的基本知识和技能; (2)本项目目标如下: 问题描述: 现在打部分停车场都是人工管理,在记录时比较复杂,不规范,为使停车场的的管理工作更加方便简洁,本程序将提供一个智能的管理平台。 构思: 1)将货车、客车、小轿车按不同的标准进行收费计算. 2)能按车位、车牌号、车主姓名显示、查找、增加、删除和保存所停放的车辆信息. 3)建立多个类的体系,分工完成各个类的设计,并分别增加了不同的属性和方法. 4)设计出友善、舒适的界面; 二、 功能描述:

3、 本程序系统设有一个比较精美的可视化的操作界面,并设有分级菜单与选项,可以方便的指导管理员的使用。 本系统主要用于进行货车、客车、小轿车的信息管理,重点用于实时监控停车场所停车辆的信息,包括基本信息(车位号、车牌号、 车主姓名、进出站时间、停车时间、收费单价、总收费等),可以简单快捷的实现增、改、删、查功能,便于用户的储存与查询。 本系统的优点在于:由于我们使用了文件的输出,运行程序后将在指定位置生成两个txt文件,一个是所有曾停放车辆的历史信息,另外一个为在停车辆的信息,可以对数据进行永久性的存储,不存在退出程序系统后,所有输入的内容都会消失的情况。 制作过程中我们将从实际出发,注重程序的实

4、用性,并力求将所学内容融入其中。 三、概要设计报告: 本程序设计构想来源于宿舍出入登记簿,通过类的组合,继承与派生,再加上对函数的利用,实现不同种类的车辆信息进行增、删、改、查的管理。为停车场管理人员提供了方便快捷管理的工具。 四、程序流程 1、选择 1、登入 2、登出 3、查找单个车辆信息 4、显示全部车辆信息 5、修改密码 6、退出 2、 登入 是否电脑选车位?车牌号,车主姓名,车辆类型:输入车位?有-:没有返回 3、 登出 输出车位号车牌号、停车时间、应收费用、进出时间、车位状态归零; 4、 查找 按车位?输入车位:输入车牌; 5、 显示 显示所有在听车辆信息; 6、 修改密码 请输入原

5、密码输入错误/请输入新密码、请再次输入,修改成功; 7、 退出 五、程序结构图 六、操作指南 1、主菜单 在打开停车场管理系统,输入正确密码后,将会进入一个欢迎菜单,也就是本程序的主菜单,在这里有如下几个选项: 根据需要选择相应的数字。 2、登入车辆 当在主菜单中选择1登入车辆时,将会进入其副菜单,有如下三个选项: 随后可根据提示,输入登记的详细内容。 3、登出车辆 当有车辆需要离开停车场时,进入登出界面,输入相应的车位号,进行登出。此时,系统将显示停入的时间及所需费用(费用标准课根据实际情况进行修改),显示结果如下: 4、查找车辆 当有需要查找某个车辆时,我们可以在主菜单中选择“查找车辆”,

6、在本程序中提供两种查找方式:按车位和按车牌号,根据提示输入相应的数据即可获得相应的车辆信息,如下图所示: 5、显示全部车辆 在主菜单中按4进入显示全部车辆信息的功能页面,如下图所示: 6、密码与修改密码 主菜单中选择5进入密码修改功能,在输入原密码和两次相同的6位新密码后即可修改密码,由于本程序实现了和硬盘关联,故在下次进入时的合法密码为上次修改后的密码,所以要记住心密码哦,界面如下图所示: 七、项目总结 在经过一个学期的C+学习课程之后,共同合作完成这样一个程序的过程无疑又让我们获益匪浅,学到的不仅是细节,不仅是学习方法,不仅是团队合作精神,更是团结一心,在困难面前全力学习、互相帮助,最后战

7、胜困难的决心和勇气。在这一段时间里我们收获颇丰,请让我们一同来回顾这段难忘的时光。 1、在上午微积分考试一结束,我们便开始了对要做项目的讨论,包括其主题和功能。本以为可以提前几天结束这样一个战斗,没想到却是刚刚在要求的前一天完成整个程序的编写。有此,我们得出事事皆要早的结论。 2、我们一开始遇到的并在后续阶段一直困扰我们的问题就是文件的读写问题,把文件的读写作为我们程序的一个特色是一件很需要勇气的事,在每个人都只是接触了一点点文件的输入输出的情况下,要实现数据的灵活存储就要求重新了解该部分的内容,并进行大量的试验程序调试。次部分从头到尾,占用了我们大部分时间。 3、作为本程序的另外一个特色,密

8、码程序的设计同样具有挑战性。作为第一个与磁盘文件互动的部分,此过程的突破给了我们无尽的信心和勇气,使我们坚定的向更复杂的问题冲击。 4、除了以上没有学过的内容给我们造成很大的困难之外,一些小问题也曾让我们很头疼,比如string与cin的冲突问题,两个时间点的计算问题,格式错误引起的无尽的调试过程等等。但在最后完成项目之后,这一切都变成了我们宝贵的经验。 回顾这样一个艰苦的过程,我们有两点最为重要的收获。一是对团队合作效率的认同,比如,当一个人自己调试程序的时候,找错总是很纠结的一件事,但是当两个人在一起共同审视程序的时候,找出错误也就变得容易多了。二是要时刻具备克服苦难的决心与毅力,我们面对

9、的是自己看都看不懂的内容,但是却要求我们最后能把这部分内容灵活运用到程序中。这种感觉总是能令人抓狂,但是,最后我们做到了。我们可以自豪的对别人说:“I MADE IT!” 八、程序代码 1、头文件 #include #include #include #include #include using namespace std; double DiffTime(unsigned ty1,unsigned th1,unsigned ty2,unsigned th2) struct tm tm1,tm2; time_t tt1,tt2; float dt; tm1.tm_year = ty1/100

10、00 - 1900; /得到年2008 tm1.tm_mon = (ty1_x0010_000)/100; /得到月09 tm1.tm_mday = (ty1_x0010_000)_x0010_0; /得到日11 tm1.tm_hour = th1/10000; /得到时11 tm1.tm_min = (th1_x0010_000)/100; /得到分12 tm1.tm_sec = (th1_x0010_000)_x0010_0; /得到秒03 tm2.tm_year = ty2/10000 - 1900; /得到年2008 tm2.tm_mon = (ty2_x0010_000)/100;

11、/得到月09 tm2.tm_mday = (ty2_x0010_000)_x0010_0; /得到日13 tm2.tm_hour = th2/10000; /得到时11 tm2.tm_min = (th2_x0010_000)/100; /得到分12 tm2.tm_sec = (th2_x0010_000)_x0010_0; /得到秒01 tt1 = mktime(&tm1); tt2 = mktime(&tm2); dt = (double)(difftime(tt2,tt1)/3600; /得到相差的小时数 return dt; class Car /基类 protected: int P

12、os; string Num; string Name; double Time; double Money; public: char time130,time230; Car(int pos=0,string num=0,string name=No name) Pos=pos; Num=num; Name=name; time130=0; time230=0; Time=0; Money=0; int GetPos()return Pos; string GetNum()return Num; string GetName()return Name; double GetTime()re

13、turn Time; void SetPos()Pos=0; void show()cout车位Pos Num Name time1endl; void SetStime(char a)strcpy(time1,a); void Stime() /初始时间 time_t t = time(0); strftime(time1,sizeof(time1),%Y/%m/%d %X %A,localtime(&t); void Ftime() /结束时间 time_t t = time(0); strftime(time2,sizeof(time2),%Y/%m/%d %X %A,localtime

14、(&t); void setTime() /计算经过时间 unsigned ty1,th1,ty2,th2; ty1=10000000*(time10-0)+1000000*(time11-0)+100000*(time12-0)+ 10000*(time13-0)+1000*(time15-0)+100*(time16-0)+ 10*(time18-0)+(time19-0); th1=100000*(time111-0)+10000*(time112-0)+1000*(time114-0)+ 100*(time115-0)+10*(time117-0)+(time118-0); ty2=1

15、0000000*(time20-0)+1000000*(time21-0)+100000*(time22-0)+ 10000*(time23-0)+1000*(time25-0)+100*(time26-0)+ 10*(time28-0)+(time29-0); th2=100000*(time211-0)+10000*(time212-0)+1000*(time214-0)+ 100*(time215-0)+10*(time217-0)+(time218-0); coutDiffTime(ty1,th1,ty2,th2)endl; Time=DiffTime(ty1,th1,ty2,th2)

16、; ; class Auto:public Car /小型车类 private: double prize; double Outvalue; public: Auto(int pos=0,string num=0,string name=No name,double outvalue=0):Car(pos,num,name) Outvalue=outvalue; prize=Outvalue*3; double Outmoney()Money=Time*prize; return Money; double GetOutvalue()return Outvalue; double Getpr

17、ize()return prize; ; class Carriage:public Car /客车类 private: int Capacity; double prize; public: Carriage(int pos=0,string num=0,string name=No name,int capacity=0):Car(pos,num,name) Capacity=capacity; prize=sqrt(Capacity); double Outmoney()Money=Time*prize;return Money; double Getprize()return priz

18、e; int GetCapacity()return Capacity; ; class Truck:public Car /货车类 private: int Heavy; double prize; public: Truck(int pos=0,string num=0,string name=No name,int heavy=0):Car(pos,num,name) Heavy=heavy; prize=Heavy*2; double Outmoney()Money=Time*prize;return Money; double Getprize()return prize; doub

19、le GetHeavy()return Heavy; ; 2、code源文件 #include #include #include #include #include void code() ifstream infile(code.txt,ios:in|ios:nocreate); if(!infile) cout未找到密码文件,请重新确认n; exit(1); char c6=0,d6=0; int sel=1,i; infile.getline(d,8); cout请输入密码(初始密码为000000):endl; while(sel) for(i=0;i=0&ci=a&ci=A&ci=Z

20、) putchar(*); coutendl; if(c0=d0&c1=d1&c2=d2&c3=d3&c4=d4&c5=d5) coutendlendlendlendlendl 密码通过!endl; Beep(523,200); Beep(659,300); Beep(784,300); Beep(1060,300); sel=0; else cout密码错误,请重新输入:endl; infile.close(); system(cls); void codechange() system(cls); char c6=0,d6=0; int sel=1,i; ifstream infile(c

21、ode.txt,ios:in|ios:nocreate); infile.getline(d,8); cout请输入原密码:endl; for(i=0;i=0&ci=a&ci=A&ci=Z) putchar(*); if(c0=d0&c1=d1&c2=d2&c3=d3&c4=d4&c5=d5) coutendl 原密码正确endl; char count16,count26; cout 请输入新密码:endl; for(i=0;i=0&count1i=a&count1i=A&count1i=Z) putchar(*); coutendl 请再次输入心密码:endl; for(i=0;i=0&c

22、ount2i=a&count2i=A&count2i=Z) putchar(*); coutendl; if(count10=count20&count11=count21&count12=count22&count13=count23&count14=count24&count15=count25) infile.close(); ofstream dfile(code.txt); for(i=0;i6;i+) dfilecount1i; dfile.close(); cout密码修改成功!endl; system(cls); Beep(523,200); Beep(659,300); Be

23、ep(784,300); Beep(1060,300); sel=0; else cout密码修改失败,两次输入不一致endl; else cout密码错误,密码修改失败endl; 3、main #include #include #include #include #include #include #include #include #include #include #includecar.h using namespace std; Auto r131; Carriage r231; Truck r331; int vehicle; void fun11(); void fun12()

24、; void fun13(); void fun1(); void fun2(); void fun3(); void fun31(); void fun32(); void fun3(); void fun4(); void codechange(); void code(); void funsave(); void read(); int main() code(); int sel=1; read(); while(sel) cout -endl; cout * *endl; cout 欢迎进入停车场管理程序 endl; cout * *endl; cout -endl; couten

25、dlendl; cout请选择您的操作:endlendl; cout 1.进站车辆;endl; cout 2.出站车辆;endl; cout 3.查找信息;endl; cout 4.显示所有车辆信息;endl; cout 5.修改密码;endl; cout 0.退出;endl; couts1; cout=0 & s1=5) switch(s1) case 1:fun1();break; /增加车辆 case 2:fun2();break; /出站车辆 case 3:fun3();break; /查找信息 case 4:fun4();break; /显示所有 case 5:codechange(

26、);break; /修改密码 case 0:funsave();sel=0;break; /退出 else cout输入错误,请重新输入!endl; system(cls); return 0; void fun11() /轿车类 if(vehicle=30)cout车位已满endl; else int i; char y; for(i=1;i31;i+)if(r1i.GetPos()=0&r2i.GetPos()=0&r3i.GetPos()=0)break; string num; string name; int outvalue; cout请输入车牌号:num; cout请输入车主姓名

27、:name; cout请输入排量:outvalue; cout登陆成功,您的车位为:i 确认请按Y:y; Auto u(i,num,name,outvalue); u.Stime(); r1i=u; vehicle+; system(cls); void fun12() /客车 if(vehicle=30)cout车位已满endl; else int i; for(i=1;i31;i+)if(r1i.GetPos()=0&r2i.GetPos()=0&r3i.GetPos()=0)break; string num;string name;int capacity; cout请输入车牌号:nu

28、m; cout请输入车主姓名:name; cout请输入载客量:capacity; cout登陆成功,您的车位为:i 确认请按Y:y; Carriage u(i,num,name,capacity); u.Stime(); r2i=u; vehicle+; system(cls); void fun13() /货车 if(vehicle=30)cout车位已满endl; else int i; for(i=1;i31;i+)if(r1i.GetPos()=0&r2i.GetPos()=0&r3i.GetPos()=0)break; string num;string name;int heav

29、y; cout请输入车牌号:num; cout请输入车主姓名:name; cout请输入载重量:heavy; cout登陆成功,您的车位为:i 确认请按Y:y; Truck u(i,num,name,heavy); u.Stime(); r3i=u; vehicle+; system(cls); void fun1() system(cls); int s1=1; cout 欢迎进入车辆登入界面!endlendl; while(s1) cout 请选择登入车辆的类型:endl; cout 1.小型车;endl; cout 2.客车;endl; cout 3.货车;endl; cout 0.返回

30、;s1; if(s1=0 & s1=3) switch(s1) case 1:fun11();s1=0;break; case 2:fun12();s1=0;break; case 3:fun13();s1=0;break; case 0:break; else cout输入错误,请重新输入!endl; void fun2() /登出 int i; system(cls); cout欢迎进入登出界面endlendl; cout请输入车位号i; if(r1i.GetPos()!=0) r1i.SetPos(); r1i.Ftime(); r1i.setTime(); cout您驻入的时间为:r1

31、i.GetTime()小时 需缴费int(r1i.Outmoney()元endl; cout欢迎下次光临,祝您旅途愉快!endl; vehicle-; if(r2i.GetPos()!=0) r2i.SetPos(); r2i.Ftime(); r2i.setTime(); cout您驻入的时间为:r2i.GetTime()小时 需缴费int(r2i.Outmoney()元endl; cout欢迎下次光临,祝您旅途愉快!endl; vehicle-; if(r3i.GetPos()!=0) r3i.SetPos(); r3i.Ftime(); r3i.setTime(); cout您驻入的时间

32、为:r3i.GetTime()小时 需缴费int(r3i.Outmoney()元endl; cout欢迎下次光临,祝您旅途愉快!endl; vehicle-; void fun31() int i; cout请输入车位号:i; if(r1i.GetPos()!=0)coutendl;r1i.show(); if(r2i.GetPos()!=0)coutendl;r2i.show(); if(r3i.GetPos()!=0)coutendl;r3i.show(); cout 返回请按0endl; void fun32() string m; cout请输入车牌号:m; for(int i=1;i

33、31;i+) if(r1i.GetNum()=m)coutendl;r1i.show(); if(r2i.GetNum()=m)coutendl;r2i.show(); if(r3i.GetNum()=m)coutendl;r3i.show(); cout 返回请按0endl; void fun3() /查找 int s1=1; system(cls); cout欢迎进入查找界面endl; cout请选择查找方式:endl; cout 1、按车位查找;endl; cout 2、按车牌号查找;endl; cout 0、退出;s1; switch(s1) case 1:fun31();break;

34、 case 2:fun32();break; case 0:break; system(cls); void fun4() /显示所有 system(cls); int i=0; for(i=1;i31;i+) if(r1i.GetPos()!=0)r1i.show(); if(r2i.GetPos()!=0)r2i.show(); if(r3i.GetPos()!=0)r3i.show(); cout确认请按Yy; system(cls); void funsave() /信息的保存 fstream in(myfile.txt); if(!in)coutwrongendl; int i; f

35、or(i=1;i31;i+) if(r1i.GetPos()!=0) in1000+r1i.GetPos()*r1i.GetNum()*r1i.GetName()*r1i.time1*r1i.GetOutvalue()*r1i.Getprize()*endl; for(i=1;i31;i+) if(r2i.GetPos()!=0) in2000+r2i.GetPos()*r2i.GetNum()*r2i.GetName()*r2i.time1*r2i.GetCapacity()*r2i.Getprize()*endl; for(i=1;i31;i+) if(r3i.GetPos()!=0) i

36、n3000+r3i.GetPos()*r3i.GetNum()*r3i .GetName()*r3i.time1*r3i.GetHeavy()*r3i.Getprize()*endl; cout信息已储存!endl; in.close(); void read() /读取 vehicle=-1; ifstream out(myfile.txt); char u90,temp70; int i=0,m=0,sum=0; while(!out.eof() out.getline(u,90); sum+=strlen(u)+2; out.seekg(sum,ios:beg); vehicle+; if(u0=1) /Auto int pos1; string num1; string name1; char time1130; double outvalue1; i=0; pos1=(u2-0)*10+(u3-0); / 车位 while(ui!=*)i+; i+; m=0; for(;ui!=*;i+)tempm=ui;m+; tempm=0; num1=temp; /车牌照 m=0; i+; for(;ui!=*;i+)tempm=ui;m+; tempm=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论