交规考试系统实训报告Word文档格式.docx
《交规考试系统实训报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《交规考试系统实训报告Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
”,并将考生信息存入文件file2.dat中。
选择2,显示所有考生信息。
选择3,打印考试合格通知单,当成绩大于等于90分时,才可以打印。
选择0,退出系统。
本子菜单循环显示。
主菜单中选择2:
确认考生身份,当考生身份证号在file2.dat文件中存在时,进入如图所示的考生考试子系统并开始考试。
在其中选择1,系统随机产生题号并从题库中将题目调出,显示在屏幕上。
考生开始答题,选择2,显示做题结果。
显示该考生所做的题号、题目、考生答案和、A、B、C、D选项内容。
选择3,修改答案。
修改用户选择的题目答案。
选择0,询问“确认是否交卷?
”若选择“Y”,则将该考生信息和成绩存放在文件file3.dat中,并显示本人分数后退出系统。
选择“N”,等待继续答题。
主菜单中选择3:
创新功能,考生查询成绩。
主菜单中选择0:
显示结束信息,按任意键后,退出系统。
|----------------------------|
|请输入选项编号(0~3)|
|1---开始答题|
|2---显示答题情况|
|3---修改答案|
|4---返回主菜单|
|0--退出系统|
考生考试子系统
|--------------------------------|
|请输入选项编号(0~3)|
|1---报名考试|
|2---显示全部考生信息|
|3---打印考试合格通知单|
|4---返回主菜单|
|0--退出系统|
管理人员子系统
|1--管理人员子系统|
|2--考生考试子系统|
|3--创新功能|
考试系统主菜单
3.任务分工
孙士杰:
制作:
主函数创新功能程序及流程图和报告。
张宝林:
考生考试子系统的流程图和程序。
曾明磊:
管理人员子系统流程图和程序。
实训报告全部内容。
第2部分《交规考试系统》的设计与功能实现
1.总体设计
主函数(main)
1)考试系统主菜单
1、管理人员(manager)
2、考生考试(mystu)
3、创新(mycreate)
2)管理人员子系统
1、报名考试(mysign)
2、考生信息(myinformation)
3、合格通知单(mytongzhi)
4、返回主菜单(myprint)
3)考生子系统
0、交卷(myfinish)
1、答题(myanswer)
2、答题情况(mysituation)
3、修改答案(mycorrect)
4、返回主菜单(myprint)
2数据结构
tructstu
{
intage,score;
charname[20],sex[20],num[20];
intt[5];
charstuanw[6];
}b[100];
structsel
intnum;
charseltitle[100],sela[50],selb[50],selc[50],seld[50];
charselanw;
}s[100]intn,xp=0;
3.算法设计
采用模块化的思想,按照“自顶向下,逐步细化”的原则设计算法。
模块图:
流程图:
mysort_sell函数模块的流程图
mysort_profit函数模块的流程图
管理人员
报名
显示考生信息
打印合格通知单
考生子系统
4.程序代码设计
(1)编写主函数。
一般情况下,都是在主函数中调用其他功能函数。
为了能够测试主函数,可在调用函数的位置处先用空函数占位。
每编写好一个相应的调用语句取代对应的空函数,此次处略。
主函数代码如下:
main()
charchoose='
\0'
yes_no='
;
inti;
FILE*fp;
n=0;
fp=fopen("
e:
\\file2.dat.txt"
"
r"
i=0;
while(feof(fp)==0)
{
fscanf(fp,"
%s%s%d"
b[i].num,b[i].name,&
b[i].age);
i++;
}
n=i;
do
{myprint();
"
scanf("
%c"
&
choose);
switch(choose)
{
case'
1'
:
manager();
break;
2'
mystu();
/*myprint2()*/break;
//case'
3'
mycreate();
0'
exit(0);
default:
\n%c为非法选项!
\n"
choose);
}
\n要继续选择吗(Y/N)?
{yes_no=getche();
}while(yes_no!
='
Y'
&
yes_no!
y'
N'
n'
}while(yes_no=='
||yes_no=='
}
(2)编写显示菜单的myprint()函数
编写显示菜单的mprint函数,并编译、连接、运行程序。
此函数不需要传递参数,也不需要再定义任何变量。
函数代码如下:
voidmyprint()
{system("
cls"
|-------------------|\n"
|请输入选项编号(0~3)|\n"
|1--管理人员子系统|\n"
|2--考生考试子系统|\n"
|3--创新功能|\n"
|0--退出系统|\n"
输入选项编号:
"
}完整程序请详见附录一
5.测试与调试
测试数据类型
测试数据
预期结果
测试结果
合法数据
管理人员子系统选1
报名成功
选2
身份证、姓名、性别、年龄
选3
选0
退出系统
考生考试子系统选1
答题
显示答题情况
修改答案
交卷
主菜单选3
进入创新功能
进入创新能
主菜单选0
第3部分课程设计总结
1.个人总结
经过这两周的学习,我收获了很多,也有很多感想。
这次实训巩固了这学期学过的C语言的相关知识,改正了学习中常常出现的一些错误,使我对C语言的学习更加深入、透彻。
我也发现了自身在学习中的一些不足,例如:
多细节知识不够重视,掌握不牢,以致在编程中常常出现一些不应犯的错误。
在这里我首先要感谢的是我们的指导老师,在她的指导下我才认识到自己的错误所在,并及时更正。
同时她也给我讲到了许多常见的编程问题和常出现的错误,对我接下来的编程帮助很大,也使我在以后编程的时候,更加小心谨慎。
同时也要感谢我们对的队友,在他们的帮助下我们顺利的完胜了任务。
虽然我们在编程的时候遇到了很多问题,但是我们还是解决了,真的很高兴和他们一起合作。
这次实训增强了我的团队合作能力,给我很大帮助,我会在以后的学习和工作中,把这次学到到知识运用到其中,这次实训也增强了我对C语言的兴趣,我会倍加努力学好C语言。
我在本次程序设计中认识到团队合作的重要性,以及对细节问题的关注。
但在完成的过程中,因为马虎,在编写代码时有错,出现运行结果不符合要求,但不能马上发现错误,我负责编辑部分,因为考虑不周到,还需要在此进行添加。
在以后的学习中,我会更加认真、谨慎。
我经过这两周的学习实践,对C语言的认识更加深入,也对C语言这门课程越来越有兴趣了,虽然在编程过程中仍有着许多的问题,但我基本上都逐一的解决了。
我以后还会尽量多多学习有关C语言的相关知识,使自己能更加娴熟的掌握这门课程。
2.结束语
经过两周小组成员的不懈努力,我们顺利地完成了这项工作。
在此,我们应由衷感谢C语言李红豫老师对我们的大力帮助,使我们的工作能顺利地完成,我们会牢记老师的教导,更加努力学习。
附录一程序清单
#include<
stdio.h>
string.h>
conio.h>
stdlib.h>
#include<
time.h>
ctype.h>
structstu
charstuanw[6];
}s[100];
intn;
intxp=0;
voidmyprint();
voidmyprint1();
voidmyprint2(intk);
voidmanager();
voidmysign();
voidmyinformation();
voidmytongzhi();
voidmystu();
voidmyage();
voidmyanswer(intk);
voidmysituation(intk);
voidmycorrect(intk);
voidmyfinish(intk);
voidmanager()
{
inti=0;
charpsword[10];
inputpassword:
for(i=0;
i<
6;
i++)
{
psword[i]=getch();
printf("
*"
psword[i]='
if(strcmp(psword,"
111111"
)==0)
\t\nPasswordisright,pleaseentry.\n"
//getch();
myprint1();
else
\t\nPasswordiswrong,pleaseexit.\n"
//structmyst
//{charname[20];
charsex[20];
charnum[20];
charage[10];
charscore[10]};
voidmyprint1()
{system("
|1---报名考试|\n"
|2---显示全部考生信息|\n"
|3---打印考试合格通知单|\n"
|4---返回主菜单|\n"
|0---退出系统|\n"
choose=getch();
mysign();
myinformation();
mytongzhi();
4'
myprint();
voidmysign()
FILE*fp=NULL;
system("
a"
if(fp==NULL)
Not"
exit(0);
while
(1)
身份证号姓名年龄\n"
scanf("
b[n].num,b[n].name,&
b[n].age);
if(strcmp(b[n].num,"
#"
break;
if(b[n].age>
=18&
b[n].age<
=70)
{printf("
报名成功"
fprintf(fp,"
%20s%20s%5d"
b[n].num,b[n].name,b[n].age);
n++;
else
printf("
报名失败"
fclose(fp);
}
voidmyinformation()
FILE*fp=NULL;
/*while(feof(fp)==0)
{fscanf(fp,"
%20s%20s%d%c"
b[i].age,&
b[i].sex);
%20s%20s%5s%5s"
b[i].num,b[i].name,b[i].age,b[i].sex);
i++;
if(i==0)printf("
\n文件中无记录"
elseprintf("
\n文件中共有%d个记录!
n);
*/
n;
%s%s%d\n"
b[i].num,b[i].name,b[i].age);
voidmytongzhi()
{//intn=0;
身份证号姓名年龄成绩\n"
if(b[i].score>
=90)
%s%s%d%d\n"
b[i].num,b[i].name,b[i].age,b[i].score);
/*{
while(feof(fp)==0)
{fscanf(fp,"
if(b[i].score>
printf("
i++;
}
*/
voidmystu()
{
charid[20];
输入你的身份证号:
%s"
id);
{if(strcmp(id,b[i].num)==0)
myprint2(i);
voidmyprint2(intk)
//intk;
charyes_no,choose;
\n\n"
输入选项编号:
if(xp==0)
{
myanswer(k);
xp++;
}
else
printf("
您已答过,请自觉!
break;
mysituation(k);
mycorrect(k);
myfinish(k);
yes_