




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目名称: 驾校报考情景系统 班 级: 计算机科学与技术01班 姓名学号: 完成时间:2012-1-14 指导教师: 日期: 2012-1-1434目 录 一、需求分析1.1 开发背景11.2 项目目标41.3 运行环境5二、 程序分析2.1技术要点 .62.2 项目任务书.22三、 技术路线3.1 总体方案243.2 详细设计29四、工程进度58 五、测试报告60六、个人小结.72七、参考文献.76附录:程序代码77一、需求分析1.1开发背景当代社会正处在从“工业社会”向“信息社会”过渡的伟大时代。在这个面临着巨大的技术革命,信息技术突飞猛进的时代,每个机构都必须紧跟时代的步伐,加强机构竞争力和提升现代化机构的管理能力。伴随着机构对信息化需求的增长,计算机、网络技术已渗透到机构的日常工作中。传统的机构内信息的交流方式已逐渐不能满足机构对大量信息的快速传递与处理的需求。 面对着日益复杂和不断发展,变化的社会环境,特别是机构间日趋剧烈的竞争形势,一个人、一个机构要在现代社会中求生存,求发展,必须具备足够的信息和强有力的信息收集与处理手段。电子计算机以强大的信息处理能力作为人类脑力劳动的有力助手登上历史舞台以后,出现了把人类从繁琐的脑力劳动下解放出来的现代信息革命。 众所周知,当今社会为信息社会,世界已进入在计算机信息管理领域中激烈竞争的年代,因此,想要加快驾校报考情景的管理,若依靠手工的话,不仅需要耗用大量的人力,物力,财力,而且工作效力低,而且难以达到预期的目的,所以特决定开发一个驾校报考情景管理信息系统。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对信息进行管理,具有着手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高信息管理的效率,也是机构发展的需要。1.2项目目标开发一个驾校报考管理信息系统,可以减少其工作量。其功能可概括为:一:系统初步的建立;二:系统的查询三:系统的更新(包括信息的修改和删除);四:系统的更新等诸多功能的管理系统。1.3运行环境 软件:运行在Windows软件环境下;硬件:具有网络连接设备的PC机或笔记本电脑;最低配置:要求内存大于128M,硬盘大于1G。二、 程序分析 2.1程序流程图流程图一:主函数:main()-系统主界面*功能:1.负责人通道:负责信息的录入,查找,修改,删除等一系列操作;2.学生通道:查询自己的安排,修改自己的安排等操作;3 退出系统 等功能*1. 通过设定switch()函数,实现选择功能运用。2. 通过break退出程序。驾校报考系统选择退出负责人通道学生通道三、技术路线3.1总体方案3.1.1 采用的软件及开发平台在Windows XP的环境下,采用的是Microsoft公司的Visual C+作为开发平台。利用面向对象的思想实现一个多人驾校报考情景的管理系统,具体使用了:体现OOP的抽象、封装、继承、多态4种关键技术构造了基于驾校报考状况的情况建立的驾校信息联系网,使驾校的联系网更加方便,快捷,清晰。3.1.2 总体方案总体流程图:1.设置一个基类Date(日期),再由这个积累派生出1个派生类,为Arrange类(包括课程安排和考试安排),另外再设置一个Student类,用以记录学生的基本信息(如姓名,性别等)2.我们可以在此基础之上设立一个驾校报考管理操作系统界面。3.我们主要通过对开始界面分为两部分,即负责人通道和学生通道,然后分别在两个通道内进行函数功能的实现, 类说明:1.(1)基类Date里的数据成员定义为私有数据,可以通过Date类里的公有函数达到对私有数据的访问;2.(1)派生类Arrange里新增数据成员lessonNum,examNum(2)同时在Arrange类里定义了一系列的函数:getLessonNum(),getExamNum(),setLessonNum,setExamNum, lessonArrange(),showLessonArr(),examArrange()等一系列函数用来实现各种功能;五、测试报告5.1 阶段测试 在程序基本设计好的时候,我们对整个程序进行了一次比较系统的测试,对各个系统的主要功能也都用数据进行了检测,以确保程序的正确性,同时希望程序能够完成对驾校报考信息的输入,检索,查找,修改,删除。此次测试是在2012-1-14零晨进行的、以下是这次测试的具体结果:系统主界面运行该程序,首先进入的是驾校报考信息管理系统的主界面,改界面给出了各个系统功能的介绍,并提示使用者该如何进入功能操作系统。 负责人登录页面该页面是选择了负责人通道后显现出的登录页面,改界面给出了各个系统功能的介绍,并提示使用者该如何进入功能操作系统。 学生登录页面该页面是选择了学生通道后显现出的登录页面,改界面给出了各个系统功能的介绍,并提示使用者该如何进入功能操作系统。 负责人登录输入页面该页面是选择了负责人通道,并选择了输入页面后显现出的登录页面,改界面给出了此系统功能的介绍,并演示使用者该如何进入功能操作系统。 学生登录查找页面 该页面是选择了学生通道,并选择了查找页面后显现出的登录页面,改界面给出了此系统功能的介绍,并演示使用者该如何进入功能操作系统。 学生登录修改页面该页面是选择了学生通道,并选择了修改页面后显现出的登录页面,改界面给出了此系统功能的介绍,并演示使用者该如何进入功能操作系统。 六、个人小结6.1 个人小结:通过这次大作业,我学到了很多平时自己编程不会出现的东西。平时只是对一件细小的简单的函数功能的实现以一节课学后的知识点进行编程以便熟习所学知识,因为觉得都不是很难所以有种编程好容易得错觉有点轻视它,可是第一接触到大作业之后发现平常所做只不过是沧海一粟。这次的大作业第一次让我有了系统的概念,已经不是针对某一项具体的描述来是一一个函数的功能,而是从整体的概念上来考虑,首先要从整个流程的构架,就拿我们的通讯录来说,根据要求我们需要创建四个群组分别在四个文件里面记录不同关系的联系人的各种信息,其次对每一个文件的进行操作如:查找、添加、删除等功能的具体实现。看是简单清晰明了,但是在实际操作过程中才发现困难重重。首先事文件的建立,写入、读出信息的陌生,其次是类的具体使用应该如何插入,另外对创建和添加通讯录联系人信息时的排序等一系列问题都让我措手不及。还有程序之间的协调问题,和程序中的错误修改问题都让我很头疼。后来还是小组之间的讨论才解决了这一系列的问题,通过这一次的大作业,我还了解了一个方面,那就是小组成员之间的讨论是必不可少的,这样可以发现更多的问题。最后,感谢老师的辅导和同学的帮助。6.2 个人小结: 小学期结束了,当做这个C+大作业之前,有点怀疑能不能在规定的时间内做完,毕竟只有3天的时间,要做一个系统,这与以前上课的作业是不同的,因为这个大作业将会融汇我们所学的C+所有知识,选好题后便开始做了,刚开始问题不大,因为毕竟以前学C的时候也做过类似的大作业,然而问题还是有的,就是对类中的私有数据成员的访问老是搞混,这让自己做的程序老是报错,其次对类的提取也是非常最重要的,对各个类之间的关系要弄通,但是在做这个大作业中遇到的最大的难题就是文件读取操作,因为我们是采用一次读取一个块的方式将数据存入到文件中去的,这个就类似C中的结构体的存储,刚开始不大懂,便不停的看有关于C+文件读取的资料,终于文件能够存入和读取了,但是当存入多个数据块并想对其中一个数据块的内容修改后,再存入到文件中时,文件中其它的内容却被覆盖了,于是便和队友讨论,最终认为需要设置一个变量计算文件指针指过的数据块个数,这样当要对某个数据块进行修改时,便可以找到具体位置,只对这个块进行修改和覆盖,这样便解决了前面遇到的数据块覆盖问题,最后顺利的完成了任务,其实自己觉得这样的小学期对我们的作用非常大,因为它能使我们将课堂上学到的东西用于实践,培养我们的动手能力,也利于我们培养团队合作精神。6.3 个人小结 通过这个学期期末短暂几天的大作业设计,我收获巨大,具体如下:1. 加深了我对C+的认识,它是一个很重要的语言和和工具,对解决很多现实问题起到很好很方便的作用,2. 加深了我对课本和PPT知识的理解,对以前很多不大明白的知识点进行了很深入的了解,以及对已学知识的巩固。3. 通过对这个课程设计,我对一些类的继承和操作符重载进行了很深入的应用.4. 认识到了自己的能力,在自己的努力下,一些看似很难的问题也迎刃而解5. 认识到团队合作的重要性,一个人的力量远小于团队的力量,善于团队合作的人才能有很好的成就6. 认识到了自己的不足,我们仍需努力,争取把以后的课程设计作业做得更好。七、参考文献1.课堂ppt2.网上有关于C+文件操作资料附录源程序代码define.h class Date /定义日期类以便记录考试时间及课程时间int year; /年份int month; /月份 int day; /天int hourStart; /开始时间int hourEnd; /结束时间public:void setDate(int Year,int Month,int Day,int HourStart,int HourEnd); /对类进行赋值void showDate();void operator =(Date);class Student /定义学生类以记录学会的基本信息char name17; /姓名char sex; /性别char identy19; /身份证号int age; /年龄public:char* getIdenty()return identy;void setStudent(char*Name,char Sex,int Age,char*Identy);void modifyStudent(char*Name,char Sex,int Age,char*Identy); /修改学生基本信息 void showStudent(); /显示学生基本信息;class Arrange:public Date /定义安排类以安排考试或是课程等信息 Date lesson6; /定义课程类数组以记录多个课程时间信息Date exam5;/定义考试类数组以记录多个考试时间信息int lessonNum; /定义lessonNum 以记录课程的数目int examNum; /定义examNum 以记录考试的数目public:int getLessonNum()return lessonNum; /获得课程安排的数目int getExamNum()return examNum; /获得考试安排的数目void setLessonNum(int LessonNum) /设置课程数目lessonNum=LessonNum;void setExamNum(int ExamNum)/设置考试数目examNum=ExamNum;void lessonArrange(); /课程安排函数,安排课程时间段void showLessonArr(); /显示课程安排函数,显示安排的课程void examArrange(); /考试安排函数,安排考试时间段void showExamArr(); /显示考试安排函数,显示安排的考试void cancelArrange(); /取消安排函数,取消安排的考试或课程void changeArrange(); /更改安排函数,更改已安排的考试或是课程;class studentInfor /定义驾校学生类float charge; /费用Arrange stu1;Student student;public:void setCharge(float Charge) /设置收费情况charge=Charge;void showArrange(); /显示所有安排void setStuInfor(); /设置学生信息void showStuInfor(); /显示学生所有信息char* getStuIdenty() /获得学生身份证号char*p;p=student.getIdenty();return p;float getCharge()return charge; /获得收费函数void modifyStuInfor(); /修改学生信息函数void cancel(); /取消函数;method.h#include#include#includedefine.h/*对Date类中的方法的实现*/void Date:setDate(int Year,int Month,int Day,int HourStart,int HourEnd)year=Year; month=Month; day=Day;hourStart=HourStart; hourEnd=HourEnd;void Date:operator =(Date d1)year=d1.year;month=d1.month;day=d1.day;hourStart=d1.hourStart;hourEnd=d1.hourEnd;void Date:showDate()cout年: year 月: month 日: dayendl;cout开始时间: hourStart 结束时间: hourEndendl;if(hourStart=hourEnd=year=month=day=0) cout此时间段已被取消endl;/*对Student类中的方法的实现*/void Student:setStudent(char*Name,char Sex,int Age,char*Identy)strcpy(name,Name); sex=Sex; strcpy(identy,Identy); age=Age;void Student:modifyStudent(char*Name,char Sex,int Age,char*Identy)strcpy(name,Name); sex=Sex; strcpy(identy,Identy); age=Age;void Student:showStudent()cout* 学生信息 *endl;cout姓名: name 性别: sex 年龄: ageendl;cout身份证号: identyendl;/*对Arrange类中的方法的实现*/void Arrange:lessonArrange() /安排课程int i,lessNum,Month=0,Day=0,Year=0,HourStart=0,HourEnd=0;coutlessNum;setLessonNum(lessNum);for(i=0;ilessNum;i+)cout*课程 i*endl;coutYear;coutMonth;coutDay;coutHourStart;coutHourEnd;lessoni.setDate(Year,Month,Day,HourStart,HourEnd);void Arrange:showLessonArr() /显示课程安排int i;cout* 课程信息 *endl;if(getLessonNum()=0) cout没有安排课程 !endl;else for(i=0;igetLessonNum();i+)cout*课程 i *endl;lessoni.showDate(); cout*endl;void Arrange:examArrange() /安排考试int i,testNum,Month=0,Day=0,Year=0,HourStart=0,HourEnd=0;couttestNum;setExamNum(testNum);for(i=0;itestNum;i+)cout*考试 i*endl;coutYear;coutMonth;coutDay; coutHourStart;coutHourEnd;exami.setDate(Year,Month,Day,HourStart,HourEnd);cout*endl;void Arrange:showExamArr() /显示考试安排int i;cout* 考试信息 *endl;if(getExamNum()=0) cout没有安排考试!endl;else for(i=0;igetExamNum();i+)cout* 考试 i *endl;exami.showDate(); cout*endl;void Arrange:cancelArrange()int choose,n;coutchoose;switch(choose)case 0:showLessonArr();if(getLessonNum()=0) cout没有安排课程,无法取消endl;else cout请选择取消哪一门课程 (从 0 to (getLessonNum()-1) )endl; coutn; lessonn.setDate(0,0,0,0,0);break;case 1:showExamArr();if(getExamNum()=0) cout没有安排考试,无法取消endl;else cout请选择取消哪一场考试 (从 0 到 (getExamNum()-1) ) endl; coutn; examn.setDate(0,0,0,0,0); break;default:cout错误!;break;void Arrange:changeArrange() /修改安排int choose1,n,Year1=0,Month1=0,Day1=0,HourStart1=0,HourEnd1=0;coutchoose1;switch(choose1)case 0:showLessonArr();if(getLessonNum()=0) cout没有安排课程,无法修改endl;else cout请选择修改哪一门课程 (从 0 到 (getLessonNum()-1) )endl; coutn; cout开始输入: endl; coutYear1;coutMonth1;coutDay1; coutHourStart1;coutHourEnd1; lessonn.setDate(Year1,Month1,Day1,HourStart1,HourEnd1);break;case 1:showExamArr();if(getExamNum()=0) cout没有安排考试,无法修改endl;elsecout请选择修改哪一场考试 (从 0 to (getExamNum()-1) )endl;coutn;cout开始输入: endl;coutYear1;coutMonth1;coutDay1;coutHourStart1;coutHourEnd1;examn.setDate(Year1,Month1,Day1,HourStart1,HourEnd1);break;default:cout错误!;break;void studentInfor:setStuInfor() /设置学生信息char Name15;char Identy19; char Sex; int Age;float Charge;cout* 输入学生信息 *endl;coutName; coutSex;coutAge;coutIdenty;coutCharge; setCharge(Charge); student.setStudent(Name,Sex,Age,Identy);cout*输入所有安排: *endl;cout课程安排: endl; stu1.lessonArrange();cout考试安排: endl; stu1.examArrange();void studentInfor:showStuInfor() /显示学生信息及其安排student.showStudent();cout费用: getCharge()endl;stu1.showExamArr();stu1.showLessonArr();void studentInfor:showArrange()cout*安排*endl;stu1.showExamArr();stu1.showLessonArr();void studentInfor:modifyStuInfor() /修改安排或是学生信息int choice;cout请选择你想要修改的内容 : endl;cout*0: 修改学生基本信息 ;endl;cout*1: 修改课程或考试安排 ;endl;cout*endl;coutchoice;switch(choice)case 0:char Name15;char Identy19;char Sex=0;int Age=0;student.showStudent();cout输入想要修改的内容 :endl;coutName;coutSex;coutAge; coutIdenty; student.modifyStudent(Name,Sex,Age,Identy);break;case 1: stu1.changeArrange(); break;default: cout错误!; break;void studentInfor:cancel() /取消学生安排stu1.cancelArrange();menu.cpp#includemethod.h#include#includestudentInfor person;void inputInfor()ofstream ofile(stuInfor.dat,ios:out|ios:app|ios:binary);if(!ofile)cout打开文件失败 !;person.setStuInfor();ofile.write(char*)&person,sizeof(person);ofile.close();void main()int decide;char p=N;dosystem(cls);cout *endl;cout *欢迎进入驾校报考系统*endl;cout * 0: 学生通道 *endl;cout * 1: 负责人通道 *endl;cout * 2: 退出 *endl;cout *endl;coutdecide;switch(decide)case 0:int n1;char p1=N;dosystem(cls);cout * 学生通道 *endl;cout * 0: 查找 *endl;cout * 1: 修改 *endl;cout * 2: 删除 *endl;cout *endl;coutn1;switch(n1)case 0:char Identy19;coutIdenty;ifstream ifile(stuInfor.dat,ios:in|ios:binary); if (!ifile ) cout文件打开失败endl;while(!ifile.eof()ifile.read(char*)&person,sizeof(person);if(!(strcmp(Identy,person.getStuIdenty()person.showStuInfor();break;if(!ifile) cout查找失败endl;ifile.close();break;case 1:char Identy19;int count=0;coutIdenty;ifstream ifile(stuInfor.dat,ios:in|ios:binary); if (!ifile ) cout文件打开失败endl;while(!ifile.eof()ifile.read(char*)&person,sizeof(person);count+;if(!(strcmp(Identy,person.getStuIdenty()ifile.close();ofstream ofile(stuInfor.dat,ios:out|ios:in|ios:binary);ofile.seekp(count-1)*sizeof(person),ios:cur);person.modifyStuInfor();ofile.write(char*)&person,sizeof(person);ofile.close();break;if(!ifile) cout没有你要的记录endl;ifile.close();break;case 2:char Identy19;int count=0;coutIdenty;ifstream ifile(stuInfor.dat,ios:in|ios:binary); if (!ifile ) cout文件打开失败endl;while(!ifile.eof()ifile.read(char*)&person,sizeof(person);count+;if(!strcmp(Identy,person.getStuIdenty()ifile.close();ofstream ofile(stuInfor.dat,ios:out|ios:in|ios:binary);ofile.seekp(count-1)*sizeof(person),ios:cur);person.cancel();ofile.write(char*)&person,sizeof(person);ofile.close();break;if(!ifile) cout没有你要的记录endl;ifile.close();break;default: cout错误!;break;coutp1;while(p1=Y|p1=y);break;case 1:int n2;char p2=N;dosystem(cls);cout * 负责人通道 *endl;cout * 0: 输入信息 *endl;cout * 1: 查找 *endl;cout * 2: 修改 *endl;cout * 3: 删除 *endl;cout *endl;coutn2;switch(n2)case 0:inputInfor();cout*endl;break;case 1:char Identy19;coutIdenty;ifstream ifile(stuInfor.dat,ios:in|ios:binary); if (!ifile ) cout文件打开失败endl;while(!ifile.eof()ifile.read(char*)&pe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电商内容营销自动化工具创新创业项目商业计划书
- 农畜产品天然成分提取创新创业项目商业计划书
- 农产品产地直销网络创新创业项目商业计划书
- 2025年学前教育机构师资队伍教师培训效果评价与反馈体系报告
- 2025年工业互联网平台NFV虚拟化在5G网络中的应用场景报告
- 2025年工业节能技术改造资金申请项目申报条件与评估报告
- 2025年教育行业人才流失现状与吸引力建设策略报告
- 2025年网络直播行业规范化与直播平台国际化发展商业模式创新报告
- 甘肃省定西市岷县2021-2022学年第一学期五年级科学期中试题(含答案)
- 营养师考试2025年备考实操技能与营养调查模拟试卷
- 中级政工考试题库及答案
- 2025年高考英语新课标Ⅱ卷点评及2026备考方向 课件
- 2025广西专业技术人员公需科目培训考试答案
- 员工赔偿金保密协议书(2篇)
- 大班 语言社会 我升大班啦 课件
- 项目造价咨询计划表
- 幼儿园玩教具操作与活动指导
- 敏捷项目管理实践指南
- 《数据结构》课件(完整版)
- 项目管理(PMBOK)讲义全套
- 友声收银系列电子秤使用说明书
评论
0/150
提交评论