C++课程设计-宏发顺驾校考试系统_第1页
C++课程设计-宏发顺驾校考试系统_第2页
C++课程设计-宏发顺驾校考试系统_第3页
C++课程设计-宏发顺驾校考试系统_第4页
C++课程设计-宏发顺驾校考试系统_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

大大 连连 科科 技技 学学 院院 面向对象程序设计(A)课程设计 题目宏发顺驾校考试系统 学生姓名学生姓名安凯辰安凯辰专业班级专业班级计算机计算机 08-208-2 指导教师指导教师王王影影职职称称高级工程师高级工程师 所在单位所在单位信息科学系计算机教研室信息科学系计算机教研室 教教学学部部主主任任王王立立娟娟 完成日期完成日期20112011 年年 9 9 月月 9 9 日日 课程设计报告单 学号学号08010202150801020215姓名姓名安凯辰安凯辰专业班级专业班级计算机计算机 08-208-2 考考核核项项目目评分评分备注备注 1 平时工作态度及遵守纪律情况 (10 分) 2 掌握基本理论、关键知识、基本技能的程度和 阅读参考资料的水平 (10 分) 3 独立工作能力、综合运用所学知识分析和解决 问题能力及实际工作能力提高的程度 (20 分) 4 完成课程设计说明书及软件的情况与水平(小 组分工情况、规范性、整洁清楚、叙述完整性、 思路清晰程度、工作量及实际运行情况和创新 性) (60 分) 总评成绩总评成绩 综综 合合评评 定:定: (优、良、中、及格、不及格) 指导教师签字:指导教师签字:2011 年 9 月 9 日 面向对象程序设计(A)课程设计任务书 一、课程设计任务及要求:一、课程设计任务及要求: 任务:为力解决驾校考试系统信息混乱、增,删,改,查,不方便工作压力大等问 题。本次课程设计开发了这套简单,方便的驾校考试管理系统,并且此软件可以自动判 题,生成成绩。 要求: (1) 根据软件系统开发的一般原则,完成相应系统的功能设计,完成主要功能模块 的程序实现并进行测试训练,给出代码运行结果和相应的设计文档。可以分组进行,但 所有学生必须经历整个系统的开发全过程,以便加深对系统开发全过程的认识。 (2)提交课程设计报告。 (3)指标: 要求完成课程设计报告 3000 字以上(约二十页);完成所设计的题目, 设计题目的语句行数在 200 行语句以上。 二、工作量二、工作量 2 周(10 个工作日)时间 三、计划安排三、计划安排 第 1 个工作日:查找相关资料、书籍,阅读示例文档,选择题目。 第 2 个工作日第 3 个工作日:设计程序结构、模块图。 第 4 个工作日第 9 个工作日:完成程序的编码,并且自己调试、测试。穿插进行 课程设计报告的撰写。 第 10 个工作日:上交课程设计报告,由教师检查软件测试效果、检查课程设计报 告,给出学生成绩。 指导教师签字: 2011 年 7 月 10 日 目目录录 题题目:宏发顺驾校考试系统目:宏发顺驾校考试系统.1 1 1需求分析需求分析.1 2 2概要设计概要设计.1 3 3详细设计详细设计.2 4 4编码编码.2 4.14.1管理员登录模块管理员登录模块. 2 4.24.2试题管理模块试题管理模块. 3 4.34.3扫描题库模块扫描题库模块. 5 4.44.4程序辅助模块程序辅助模块. 6 5 5调试分析调试分析.6 6 6测试结果及运行效果测试结果及运行效果.7 7 7系统开发所用到的技术系统开发所用到的技术.11 参考文献参考文献.12 课程设计总结课程设计总结. 13 附附录录.14 1 题题目:宏发顺驾校考试系统目:宏发顺驾校考试系统 1 1需求分析需求分析 此软件开发是为了实现上机考试,给同学一个上机练习而产生的需求。近年来随科 技进步,网上考试越来越迫切,因此针对这一需求,此软件就此产生。此软件分两个模 块,一个是管理员管理系统,另一个是学生考试系统;管理员可以随时录入试题,可以 从问件上直接修改试题;学生可以直接选择答题,和随机答题两种方式进行。并且此软 件可以自动判题,生成成绩。给同学和老师带来了很多方便。此程序操作简单,很容易 掌握。 2 2概要设计概要设计 图 2-1概要设计图 主函数主函数 管理员管理系统管理员管理系统学生考试系统学生考试系统 管理员管理员 登陆模块登陆模块 试题试题 管理模块管理模块 题库题库 扫描模块扫描模块 扩充题库扩充题库退出系统退出系统 2 此软件分两个模块,一个是管理员管理系统,另一个是学生考试系统;从图中可以 看出程序中管理员的管理系统又分三个模块: (1) 管理员登陆模块 (2) 试题管理模块 (3) 扫描题库模块 3 3详细设计详细设计 设计 tiku 类及 student 类,运用面向对象的设计思想,实现对类的封装及成员的 保护,运用链表实现首地址的传递,灵活的进行各函数间的地址传递及调用。运用文件 保存信息,分别用 tiku.txt 保存题库的信息,用 answer.txt 保存题库答案信息。 表 3-1题库信息 类名成员类别类型类型名描述 Tiku 属性 charusername20用户名 charuserpsw20密码 charphonenum20电话号码 intyear出生年 intmonth出生月 houxuanren*next下一个节点 方法 void *userlogin()用户登录 void *int menu()菜单函数 void *daochu();选择处理 void *doselect()修改信息 voidcheckresult()判断答案 voidranddo()随机出题 voidselect()出题 表 3-2考生信息 类名成员类别类型类型名描述 student 属性 charnum1学员学号 charname1学员姓名 intflag判断是否及格 student*next指向下一节点 方法 int toupaio1(student *h); 学生登录 void baocun1(student *h) 保存信息 studentadd2();加载考生信息 3 4 4编码编码 4.14.1管理员登录模块管理员登录模块 模块描述:此模块是确保试题的保密,不被任意人随意看到而设置的一个密 码验证登陆模块。其作用是起到保护试题不被泄露。程序如下: int userlogin() char username20; /用户名 char userpsw20; /密码 cout*endl; cout*endl; cout*endl; cout*欢迎使用*endl; cout*endl; cout*宏发顺驾校*考试系统*endl; cout*管理员登陆*endl; cout*endl; cout*endl; cout*endl; coutusername; if(strcmp(username,admin) cout用户名错误!endl; system(pause); system(cls); userlogin(); else coutuserpsw; if(strcmp(userpsw,123) cout密码错误!endl; system(pause); system(cls); userlogin(); elsesystem(pause); system(cls); 4 return 1; return 0; 此模块的性能:密码登陆。其灵活性很高,当密码输入错误时,界面上会 提示“按任意键。 。 。 ”后,刷新登陆界面重新输入。 输入值:输入的账号以及密码是唯一的,其程序是采用字符串的运算函数 strcmp(比较)来确定密码是否正确的。字符串的长度是二十个字符,所以在超出 20 个字符后会只会程序中只会存储前 20 个字符。 算法:算法很简单,只是通过字符串的比较得出的 0 或 1 的值,再用 if 语句来选择,1 进行下个模块的运行,0 表示输入错误,重新输入。 4.24.2试题管理模块试题管理模块 模块描述:由于此模块比较复杂,所以主要在(1)用文件保存试题库, (2) 试题录入:可随时增加试题到试题库中,这两个功能中。此模块程序如下: void add() ofstream out_stream;/文件流定义 char content2000;/用于存放输入的题目 int dist,n; /dist 用于判断是否继续添加新的题目,n 是数组计数器 int num;/用于计数 int optnum; char ans; char ansnum=A; do n=0; num=1; out_stream.open(tiku.txt,ios:app); /打开文件 tiku.txt,ios: :app 表示追加文件尾 if (out_stream.fail() coutInput file opening failed.n; exit(1); coutendl注意:新增的题目中,不允许出现和#!endl; cout题库中已有 maxnum 道题,请按顺序编写题号!endl;coutcontentn; n+; while(contentn-1!=#); n=0; while(contentn!=#) out_streamcontentn; n+; ; out_streamendl; coutoptnum; do n=0; out请输入第 num 个选项(在最后加一个字符#表示输入完 毕)contentn; n+; while(contentn-1!=#); n=0; while(contentn!=#) out_streamcontentn; n+; ; out_streamendl; num+; while(num!=optnum+1); out_streamendlendl; out_stream.close(); out_stream.open(answer.txt,ios:app); /打开文件 tiku.txt,ios: :app 表示追加文件尾 if (out_stream.fail() coutInput file opening failed.n; exit(1); do 6 coutans; while(ans!=A out_streamans; out_stream.close(); maxnum+; cout继续回答问题吗? 选择 1 继续,选择2 回到主菜单。dist; while(dist=1); doselect(menu(); 性能: (1)用文件保存试题库(每题包括题干、4 个备选答案、标准答案) (2)试题录入:可随时增加试题到试题库中 (3)可以在录完,每一道题后,退出或继续录入 输入值:按照相应的提示输入信息,题目会保存到 tiku.txt 中,答案 会保存到answer.txt中,并且原来的信息不会丢失。保存到两个文件中在自 动判题时就要求两个文件一起调用,当然这是另外一部分,不在我的程序 内。输入的信息可以是字符也可以是汉字。 算法:此模块算法最大特点是根据字符#判断试题的题目和选项录入是 否结束。利用循环来实现试题一道一道的录入,从而保存到文件中。 数据文件存储说明: 4.34.3扫描题库模块扫描题库模块 模块描述:此模块是为了确定试题库中有多少道题,并且其在录入试题时也 会起到作用,根据其扫描出的题数,确定录入试题的题号。程序如下: /*扫描题库* /统计已有题目数量 int checkAll() int count=0; char check;/输入信息 试题题目及选项试题答案 tiku.txtanswer.txt ifstream in_stream; in_stream.open(tiku.txt);/用 open 函数打开 tiku.txt 文本 if (in_stream.fail()/判断打开是否成功 coutcheck) if (check=) count+; return count; 算法:此块的算法是在根据录入试题时在题号前面自动录一个,所以在 扫描时根据的个数来判断试题的个数。 4.44.4程序辅助模块程序辅助模块 辅助模块是为了能够实现各模块之间紧密连接, 比如程序中的 menu, select 模块等。 以上是部分代表性函数及功能的实现另外还有管理员登陆密码功能、修改资料、保 存资料等功能没有一一写明。 5 5调试分析调试分析 完成管理员管理系统的详细设计后,接下来就到了系统测试阶段。在这一阶段 中,首先要完成代码的编译过程。代码初步完成编写后,要仔细地进行编译,根 据系统提示错误,进行修改。注意代码的书写规范,包括命名惯例、注释、分隔 和缩进等。 在这个过程中,我们要养成良好的程序编写习惯,对编译过程中经常出现的 错误情况加以注意,为今后的程序编写打下基础。 6 6测试结果测试结果及运行效果及运行效果 程序主界面: 图 6-1系统主界面 测试内容:实现管理员和学生两个不同角色的登陆界面。 8 操作步骤:输入数字 1,然后按任意键 期望结果:管理员理界面登陆成功 图 6-2管理员登陆界面 测试内容:实现登陆正确,输入错误会重新输入 操作步骤:输入用户名 admin,然后按回车 期望结果:用户界面登陆成功 图 6-3密码输入界面 操作:按回车判断是否输入正确 9 操作截图: 图 6-4密码正确后界面 图 6-5密码输入错误界面 测试内容:重新输入密正确码后是否进入扩充题界面 操作步骤:按照提示操作; 期望结果:输入成功,进入扩充试题界面 10 图 6-6登陆成功试题管理界面 图 6-7试题录入界面 测试内容:测试出入题目后是否能够录入文件 操作步骤:输入题目,不包括选项,最后输入一个#字符; 11 期望结果:输入成功,进入输入选项界面 图 6-8继续录入或退出界面 图 6-9试题录入文件截图 12 图 6-10试题答案截图 7 7系统开发所用到的技术系统开发所用到的技术 Visual C+ 6.0 应用语言C+ 注释:C+是在 C 语言引入了面向机制而形成的一种程序设计语言,程序结构灵活, 代码简洁清晰,可移植性强,支持数据抽象,面向对象程序设计和泛型程序设计。所以 它是一种应用广泛的系统语言。 12 参考文献参考文献 1谭浩强.C+程序设计(第二版).清华大学出版社 2吕凤翥.C+语言基础教程(第 2 版).清华大学出版社. 3吕凤翥.C+语言基础教程题解与上机指导(第二版).清华大学出版社. 4StanleyB.Lippman,JoseeLaijoie 等.C+ primer(中文版).人民邮电出版. 13 课程设计总结课程设计总结 通过这次 c+的课程设计,熟悉了 c+语言的基本语法,选择,循环等结构。深入 练了函数的调用方法 和文件的读写方法 熟悉了结构体的使用 更加深化了面向过程语 言思想 和一些基本算法。 通过对程序的后期调试 熟悉了 c+常见错误 锻炼了思维的严 密性和完备性。通过对程序的注释和画流程图 形成了一套自己编程的风格和清晰地思 路使思维更加条理化 清晰化。此次课程设计,学到了很多课内学不到的东西,比如独 立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅,今后的制 作应该更轻松, 自己也都能扛的起并高质量的完成项目。 在此, 感谢于老师的细心指导, 也同样谢谢其他各组同学的无私帮助! 14 附附录录 #include #include #include #include #include using namespace std; /*全局变量定义* int maxnum;/maxnum(题库中已有的题目总数) float final_mark,rightnum,alldone ; /rightnum 代表做对的题目数,final_mark (最后成绩) ,alldone(所做的题目总数) /* /*函数声明* int userlogin();/用户登录 int menu();/菜单函数 void doselect(int choice);/选择处理 void checkresult(int optionque,char optionans);/判断答案 void calculate();/计算成绩 void randdo();/随机出题 void select();/出题 void add();/添加题目 int checkAll();/扫描题库 /* /*主函数* int main() cout*endl; cout*endl; cout*endl; cout*欢迎使用*endl; cout*endl; cout*宏发顺驾校*考试系统*endl; 15 cout*endl; cout*endl; cout*endl; cout*endl; cout管理员 请输入 1:endl; cout考生 请输入 2:part; if(part=1) maxnum=checkAll(); cout*endl; cout*endl; cout*endl; cout*欢迎使用*endl; cout*endl; cout*宏发生驾校*考试系统*endl; cout*endl; cout*endl; cout*endl; cout*endl; system(pause); /调用 DOS 命令暂停 system(cls);/调用 DOS 命令清屏 srand(time(0);/随机种子设置 if(userlogin()=1) doselect(menu();/处理选择 return 0; /*用户登录 int userlogin() char username20; /用户名 char userpsw20; /密码 cout*endl; cout*endl; cout*endl; cout*欢迎使用*endl; 16 cout*endl; cout*宏发顺驾校*考试系统*endl; cout*管理员登陆*endl; cout*endl; cout*endl; cout*endl; coutusername; if(strcmp(username,admin) cout用户名错误!endl; system(pause); system(cls); userlogin(); else coutuserpsw; if(strcmp(userpsw,123) cout密码错误!endl; system(pause); system(cls); userlogin(); else system(pause); system(cls); return 1; return 0; /*菜单 int menu() system(cls); 17 char choice; cout*endl; cout*endl; cout*endl; cout*欢迎使用*endl; cout*endl; cout*宏发顺驾校*考试系统*endl; cout*试题管理*endl; cout*endl; cout*endl; cout*endl; cout1.扩充题库endl 2.退出程序endl choice; /选择处理 if(choice=1 /非法输入处理 else cout请输入正确的选择.endl; system(pause); system(cls); menu(); return 0; /*选择处理 void doselect(int choice) system(pause); system(cls);/程序异常处理 if(choice=0) cout程序异常endl; 18 exit(0); switch(choice) case 1 :add();break; case 2 :cout退出系中endl; system(pause); break; void add() ofstream out_stream;/文件流定义 char content2000;/用于存放输入的题目 int dist,n;/dist 用于判断是否继续添加新的题目,n 是数组计数器 int num;/用于计数 int optnum; char ans; char ansnum=A; do n=0; num=1; out_stream.open(tiku.txt,ios:app); /打开文件 tiku.txt,ios: :app 表示追加文件尾 if (out_stream.

温馨提示

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

评论

0/150

提交评论