交规考试系统实训报告.docx

上传人:b****5 文档编号:5981996 上传时间:2023-01-02 格式:DOCX 页数:29 大小:298.65KB
下载 相关 举报
交规考试系统实训报告.docx_第1页
第1页 / 共29页
交规考试系统实训报告.docx_第2页
第2页 / 共29页
交规考试系统实训报告.docx_第3页
第3页 / 共29页
交规考试系统实训报告.docx_第4页
第4页 / 共29页
交规考试系统实训报告.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

交规考试系统实训报告.docx

《交规考试系统实训报告.docx》由会员分享,可在线阅读,更多相关《交规考试系统实训报告.docx(29页珍藏版)》请在冰豆网上搜索。

交规考试系统实训报告.docx

交规考试系统实训报告

****大学

实训报告

 

课程名称:

C语言程序设计课设

项目名称:

交规考试系统

学院:

自动化学院专业:

自动化

姓名:

*********

指导教师:

***成绩:

 

2010年6月16日

 

目录:

 

 

第1部分课程设计题目与要求

1.问题描述

题目名称:

交规考试系统

主要用途:

为了随时间相同标准检查考生交规达标情况,并减轻考官出题和判卷的负担,用计算机出题和判卷。

假设以用记事本建立了文件file1.dat,该文件中存放了若干选择题(四选一)及相关记录,每个记录包括题号、题目、A、B、C、D选项内容、正确答案。

2.功能要求

考试系统分管理人员子系统和考生考试子系统,菜单如图所示。

printf("|-----------------------|\n");

printf("|请输入选项编号(0~3)|\n");

printf("|-----------------------|\n");

printf("|1---开始答题|\n");

printf("|2---显示答题情况|\n");

printf("|3---修改答案|\n");

printf("|0---交卷|\n");

printf("|4---返回主菜单|\n");

printf("|-----------------------|\n");

主菜单中选择1:

确认管理者身份,当密码(假设为222222)正确时,进入如图所示的管理人员子系统,并进行管理员的工作。

在其中选择1,报名参加考试。

从键盘输入考生身份证号、姓名、年龄、性别,系统根据年龄确定该考生是否报名成功,如果年龄在18~70岁之间,则显示“报名成功!

”,并将考生信息存入文件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--退出系统|

管理人员子系统

|----------------------------|

|请输入选项编号(0~3)|

|----------------------------|

|1--管理人员子系统|

|2--考生考试子系统|

|3--创新功能|

|0--退出系统|

考试系统主菜单

 

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='\0';

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();

printf("");

scanf("%c",&choose);

switch(choose)

{

case'1':

manager();break;

case'2':

mystu();/*myprint2()*/break;

//case'3':

mycreate();break;

case'0':

exit(0);

default:

printf("\n%c为非法选项!

\n",choose);

}

printf("\n要继续选择吗(Y/N)?

\n");

do

{yes_no=getche();

}while(yes_no!

='Y'&&yes_no!

='y'&&yes_no!

='N'&&yes_no!

='n');

}while(yes_no=='Y'||yes_no=='y');

printf("\n");

}

(2)编写显示菜单的myprint()函数

编写显示菜单的mprint函数,并编译、连接、运行程序。

此函数不需要传递参数,也不需要再定义任何变量。

函数代码如下:

voidmyprint()

{system("cls");

printf("|-------------------|\n");

printf("|请输入选项编号(0~3)|\n");

printf("|-------------------|\n");

printf("|1--管理人员子系统|\n");

printf("|2--考生考试子系统|\n");

printf("|3--创新功能|\n");

printf("|0--退出系统|\n");

printf("|-------------------|\n");

printf("\n");

printf("输入选项编号:

");

}完整程序请详见附录一

 

5.测试与调试

测试数据类型

测试数据

预期结果

测试结果

 

合法数据

管理人员子系统选1

报名成功

报名成功

选2

身份证、姓名、性别、年龄

身份证、姓名、性别、年龄

选3

打印合格通知单

打印合格通知单

选0

退出系统

退出系统

考生考试子系统选1

答题

答题

选2

显示答题情况

显示答题情况

选3

修改答案

修改答案

选0

交卷

交卷

主菜单选3

进入创新功能

进入创新能

主菜单选0

退出系统

退出系统

第3部分课程设计总结

1.个人总结

孙士杰:

经过这两周的学习,我收获了很多,也有很多感想。

这次实训巩固了这学期学过的C语言的相关知识,改正了学习中常常出现的一些错误,使我对C语言的学习更加深入、透彻。

我也发现了自身在学习中的一些不足,例如:

多细节知识不够重视,掌握不牢,以致在编程中常常出现一些不应犯的错误。

在这里我首先要感谢的是我们的指导老师,在她的指导下我才认识到自己的错误所在,并及时更正。

同时她也给我讲到了许多常见的编程问题和常出现的错误,对我接下来的编程帮助很大,也使我在以后编程的时候,更加小心谨慎。

同时也要感谢我们对的队友,在他们的帮助下我们顺利的完胜了任务。

虽然我们在编程的时候遇到了很多问题,但是我们还是解决了,真的很高兴和他们一起合作。

这次实训增强了我的团队合作能力,给我很大帮助,我会在以后的学习和工作中,把这次学到到知识运用到其中,这次实训也增强了我对C语言的兴趣,我会倍加努力学好C语言。

张宝林:

我在本次程序设计中认识到团队合作的重要性,以及对细节问题的关注。

但在完成的过程中,因为马虎,在编写代码时有错,出现运行结果不符合要求,但不能马上发现错误,我负责编辑部分,因为考虑不周到,还需要在此进行添加。

在以后的学习中,我会更加认真、谨慎。

曾明磊:

我经过这两周的学习实践,对C语言的认识更加深入,也对C语言这门课程越来越有兴趣了,虽然在编程过程中仍有着许多的问题,但我基本上都逐一的解决了。

我以后还会尽量多多学习有关C语言的相关知识,使自己能更加娴熟的掌握这门课程。

2.结束语

经过两周小组成员的不懈努力,我们顺利地完成了这项工作。

在此,我们应由衷感谢C语言李红豫老师对我们的大力帮助,使我们的工作能顺利地完成,我们会牢记老师的教导,更加努力学习。

附录一程序清单

#include

#include

#include

#include

#include

#include

structstu

{

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;

intxp=0;

voidmyprint();

voidmyprint1();

voidmyprint2(intk);

voidmanager();

voidmysign();

voidmyinformation();

voidmytongzhi();

voidmystu();

voidmyage();

voidmyanswer(intk);

voidmysituation(intk);

voidmycorrect(intk);

voidmyfinish(intk);

main()

{

charchoose='\0',yes_no='\0';

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();

printf("");

scanf("%c",&choose);

switch(choose)

{

case'1':

manager();break;

case'2':

mystu();/*myprint2()*/break;

//case'3':

mycreate();break;

case'0':

exit(0);

default:

printf("\n%c为非法选项!

\n",choose);

}

printf("\n要继续选择吗(Y/N)?

\n");

do

{yes_no=getche();

}while(yes_no!

='Y'&&yes_no!

='y'&&yes_no!

='N'&&yes_no!

='n');

}while(yes_no=='Y'||yes_no=='y');

printf("\n");

}

voidmyprint()

{system("cls");

printf("|-------------------|\n");

printf("|请输入选项编号(0~3)|\n");

printf("|-------------------|\n");

printf("|1--管理人员子系统|\n");

printf("|2--考生考试子系统|\n");

printf("|3--创新功能|\n");

printf("|0--退出系统|\n");

printf("|-------------------|\n");

printf("\n");

printf("输入选项编号:

");

}

voidmanager()

{

inti=0;

charpsword[10];

printf("inputpassword:

");

for(i=0;i<6;i++)

{

psword[i]=getch();

printf("*");

}

psword[i]='\0';

if(strcmp(psword,"111111")==0)

{

printf("\t\nPasswordisright,pleaseentry.\n");

//getch();

myprint1();

}

else

printf("\t\nPasswordiswrong,pleaseexit.\n");

}

//structmyst

//{charname[20];charsex[20];charnum[20];charage[10];charscore[10]};

voidmyprint1()

{

charchoose='\0',yes_no='\0';

do

{system("cls");

printf("|-----------------------|\n");

printf("|请输入选项编号(0~3)|\n");

printf("|-----------------------|\n");

printf("|1---报名考试|\n");

printf("|2---显示全部考生信息|\n");

printf("|3---打印考试合格通知单|\n");

printf("|4---返回主菜单|\n");

printf("|0---退出系统|\n");

printf("|-----------------------|\n");

printf("");

choose=getch();

switch(choose)

{

case'1':

mysign();break;

case'2':

myinformation();break;

case'3':

mytongzhi();break;

case'4':

myprint();break;

case'0':

exit(0);

default:

printf("\n%c为非法选项!

\n",choose);

}

printf("\n要继续选择吗(Y/N)?

\n");

do

{yes_no=getche();

}while(yes_no!

='Y'&&yes_no!

='y'&&yes_no!

='N'&&yes_no!

='n');

}while(yes_no=='Y'||yes_no=='y');

}

voidmysign()

{

inti=0;

FILE*fp=NULL;

 

system("cls");

fp=fopen("e:

\\file2.dat.txt","a");

if(fp==NULL)

{

printf("Not");

exit(0);

}

while

(1)

{

printf("身份证号姓名年龄\n");

scanf("%s%s%d",b[n].num,b[n].name,&b[n].age);

if(strcmp(b[n].num,"#")==0)

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("报名失败");

printf("\n");

}

fclose(fp);

}

voidmyinformation()

{

inti;

FILE*fp=NULL;

fp=fopen("e:

\\file2.dat.txt","r");

system("cls");

printf("身份证号姓名年龄\n");

/*while(feof(fp)==0)

{fscanf(fp,"%20s%20s%d%c",b[i].num,b[i].name,&b[i].age,&b[i].sex);

printf("%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);

fclose(fp);

*/

for(i=0;i

printf("%s%s%d\n",b[i].num,b[i].name,b[i].age);

}

voidmytongzhi()

{//intn=0;

inti;

FILE*fp=NULL;

fp=fopen("e:

\\file2.dat.txt","r");

system("cls");

printf("身份证号姓名年龄成绩\n");

for(i=0;i

if(b[i].score>=90)

printf("%s%s%d%d\n",b[i].num,b[i].name,b[i].age,b[i].score);

/*{

while(feof(fp)==0)

{fscanf(fp,"%20s%20s%5s%5s",b[i].num,b[i].name,b[i].age,b[i].sex);

if(b[i].score>=90)

printf("%20s%20s%5s%5s",b[i].num,b[i].name,b[i].age,b[i].sex);

i++;

}

}

fclose(fp);*/

}

voidmystu()

{

inti;

charid[20];

printf("输入你的身份证号:

");

scanf("%s",id);

for(i=0;i

{if(strcmp(id,b[i].num)==0)

myprint2(i);

}

}

voidmyprint2(intk)

{

//intk;

charyes_no,choose;

do

{

system("cls");

printf("\n\n");

printf("|-----------------------|\n");

printf("|请输入选项编号(0~3)|\n");

printf("|-----------------------|\n");

printf("|1---开始答题|\n");

printf("|2---显示答题情况|\n");

printf("|3---修改答案|\n");

printf("|0---交卷|\n");

printf("|4---返回主菜单|\n");

printf("|-----------------------|\n");

printf("\n");

printf("输入选项编号:

");

scanf("%c",&choose);

switch(choose)

{

case'1':

if(xp==0)

{

myanswer(k);xp++;break;

}

else

printf("您已答过,请自觉!

");

break;

case'2':

mysituation(k);break;

case'3':

mycorrect(k);break;

case'4':

myprint();break;

case'0':

myfinish(k);break;

default:

printf("\n%c为非法选项!

\n",choose);

}

printf("\n要继续选择吗(Y/N)?

\n");

do

{yes_no=getche();

}while(yes_no!

='Y'&&yes_no!

='y'&&yes_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1