标准化考试系统C语言版.docx
- 文档编号:8940818
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:15
- 大小:268KB
标准化考试系统C语言版.docx
《标准化考试系统C语言版.docx》由会员分享,可在线阅读,更多相关《标准化考试系统C语言版.docx(15页珍藏版)》请在冰豆网上搜索。
标准化考试系统C语言版
Documentserialnumber【UU89WT-UU98YT-UU8CB-UUUT-UUT108】
标准化考试系统C语言版
课程报告
课程名称:
程序设计实践
专业班级:
学生姓名:
学号:
任课教师:
唐建国
学期:
2013-2014学年第二学期
课程报告任务书
题目
标准化考试系统
主要
内容
开发出一个标准化考试系统,所谓标准化考试系统即仅支持选择题,也是为方便自动批改的功能的实现。
要求实现以下基本功能:
(1)提供给教师添加试题的功能(试题信息用文件保存)--输入
(2)试题库的整体浏览功能
(3)能够随机抽取试题组合成一套试卷
(4)教师实现题目信息的管理,比如删除、修改等
(5)查询功能(题号查询、题目查询)、排序功能(题号排序)
扩展功能:
(1)学生和教师不同身份的注册登录功能
(2)可以对题目进行模糊查询
(3)可以统计题库内试题总数
(4)学生可以进行抽题考试并得出成绩
任务
要求
一、提交材料应包括:
(1)系统源代码
(2)课程报告
二、整个设计过程具体要求
(1)需求分析要求学生对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系;
(2)设计过程要求学生进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)
(3)实现过程要求学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;
(4)总结阶段按照要求完成系统设计和实现报告,并进行总结、答辩。
成绩
评定
报告撰写情况(30分)
系统完成情况(30分)
答辩情况(40分)
总分
内容
20分
规范程度
5分
程序测试
5分
基本功能20分
扩展功能10分
自述情况10分
答辩情况
30分
成绩评定教师:
1需求分析
根据程序要求分析,我们认为整个程序应该分为4个大块,其中包括主函数以及其他功能函数:
注册登录模块,学生操作模块,教师操作模块。
各个模块又利用小模块实现小功能划分,教师操作模块由创建题库、插入题目、修改题目、删除题目、显示题目、题目排序、查询题目这7个模块组成,而其中查询题目又包含了题号查询、题目查询和模糊查询3个小模块;注册登录模块由4个函数完成对学生教师不同身份的注册及登录,学生登录后可以选择答题数量组成试卷考试并得到成绩。
通过这些模块的组合连接,就可以实现一个完整的标准化考试系统。
2系统设计
.数据结构设计
voidStudent_login();/*学生登录*/
voidTeacher_login();/*教师登录*/
voiddenglu();/*主菜单*/
voidAddstudent(charid[],charpassword[]);/*将学生账号密码存入文件*/
voidAddteacher(charid[],charpassword[]);/*将教师账号密码存入文件*/
voidTeachermenu();/*教师菜单*/
voidStudentmenu();/*学生菜单*/
voidPrintDoc(structtext*head);/*从文件中读取题库信息并输出*/
voidNameQueDoc(structtext*head);/*按照题目查询信息*/
voidNumberQueDoc(structtext*head);/*按照题号查询信息*/
voidNameVagueDoc(structtext*head);/*按照题目模糊查询信息*/
voidkaoshi(structtext*head,intsum,intk);/*学生考试菜单*/
voidfprint(structtext*head);/*将链表写入文件*/
structtext*CreateDoc();/*创建试题库并通过链表存入文件*/
structtext*load();/*从文件读取题库信息并存入链表*/
structtext*DeleteDoc(structtext*head);/*删除题库题目信息*/
structtext*ReviseDoc(structtext*head);/*修改题库题目信息*/
structtext*InsertDoc(structtext*head,structtext*book);/*插入题目*/
structtext*SortDoc(structtext*head);/*对题库题目进行排序*/
structtext*QueDoc(structtext*head);/*题库查询菜单*/
intcount(structtext*head);/*统计题库中题目总数*/
intyanzheng(structtext*head,intm);/*验证题号是否重复*/
char*Getpasswd(void);/*将注册登录的密码转为星号*/
structtext{
intnumber;
charque[81];
charanswer1[81];
charanswer2[81];
charanswer3[81];
charanswer4[81];
charture[81];
structtext*next;
};/*定义text结构*/
.功能模块设计
主菜单模块
:
教师菜单模块
:
学生菜单模块
3系统实现及关键代码
基本功能
菜单设计
voiddenglu()
{
charid[81],password1[81]={NULL},password2[81]={NULL};
intchoice,choi;
printf("\n");
printf("〒〒〒〒〒欢迎进入标准化考试系统:
〒〒〒〒〒\n");
printf("★★★★★★★welcome★★★★★★★\n");
printf("\t*【1】注册账户*\n");
printf("\t*【2】登陆账户*\n");
printf("\t*【0】退出系统*\n");
printf("\n");
printf("请输入你的选择:
");
scanf("%d",&choice);
system("cls");xt","w"))==NULL){
printf("Cannotopenthefile!
\n");
exit(0);
}
for(p1=head;p1;p1=p1->next){
fprintf(fp,"%d%s%s%s%s%s%s\n",p1->number,p1->que,p1->answer1,p1->answer2,p1->answer3,p1->answer4,p1->ture);
}
fclose(fp);
}
/*------------------------------------------从文件读取题库信息--------------------------*/
structtext*load()
{
FILE*fp;
structtext*head,*tail,*p1;
head=tail=NULL;
if((fp=fopen("G:
\\试题库.txt","r"))==NULL){
printf("文件输入错误!
\n");
exit(0);
}
if(!
feof(fp)){
while(!
feof(fp)){
p1=(structtext*)malloc(sizeof(structtext));
fscanf(fp,"%d%s%s%s%s%s%s\n",&p1->number,p1->que,p1->answer1,p1->answer2,p1->answer3,&p1->answer4,&p1->ture);
if(head==NULL)
head=p1;
else
tail->next=p1;
tail=p1;
}
tail->next=NULL;
fclose(fp);
returnhead;
}
else
returnNULL;
}
删除题目信息
structtext*DeleteDoc(structtext*head)
{
inta;
structtext*p1,*p2;
printf("请输入要删除题目的题号:
");
scanf("%d",&a);
while(head!
=NULL&&head->number==a)
{
p2=head;
head=head->next;
free(p2);
}
if(head==NULL)
{
returnNULL;
}
p1=head;
p2=head->next;
while(p2!
=NULL)
{
if(p2->number==a)
{
p1->next=p2->next;
free(p2);
}
else
p1=p2;
p2=p1->next;
}
fprint(head);
returnhead;
}
拓展功能
密码设计
char*GetPasswd(void)
{
charc;
inti=0;
charpasswd[6]={NULL};
while((c=getch())!
='\r')
{
passwd[i]=c;
putchar('*');
i++;
if(i>=6)
{
break;
}
}
returnpasswd;
}
考试函数
voidkaoshi(structtext*head,intsum,intk)/*随机抽题考试*/
{
intscore=0,a[1000],i,j;
charanswer[81],answer1[81];
srand((unsigned)time(NULL));/*保证随机出来不重复的数字*/
for(i=0;i { a[i]=rand()%k+1;/*随机产生1~k之间一个整数*/ for(j=0;j if(a[i]==a[j]) i--; } for(i=0;i { structtext*p; p=head; while(p! =NULL){ if(p->number==a[i]) break; p=p->next; } printf("题号: %d\n",p->number); printf("题目: %s\n",p->que); printf("选项A: %s选项B: %s\n",p->answer1,p->answer2); printf("选项C: %s选项D: %s\n",p->answer3,p->answer4); strcpy(answer,p->ture); printf("\n"); printf("请输入答案: "); scanf("%s",answer1); if(strcmp(answer,answer1)==0) { printf("回答正确! \n"); printf("\n"); score++; } else { printf("答案错误! \n"); printf("正确答案为: %s\n",answer); printf("\n"); } } printf("您的总成绩为: %d",score); }/*学生通过此函数对随机的试题进行答题并得到自己的成绩*/ 4系统演示 基本功能 文件读写功能 插入题目功能 拓展功能 密码功能 考试功能 5总结 系统缺陷与不足 这个考试系统里面的学生界面功能还待加强,可以给学生更多的组卷方式,例如老师创建题库时可以给题目信息增加一个章节的信息,然后学生可以根据章节来组卷考试。 系统可扩展功能 (1)修改密码功能; (2)按章节组卷功能; 6课程心得总结 在编写学生考试函数时,使用的srand()和rand()函数未能随机产生不重复的数字,后来决定使用数组储存随机产生的数字,再通过for循环对每次产生的随机数和之前产生的进行比较,不同就存进数组,相同则继续循环,直至产生需要的随机数个数。 我学习C语言差不多一年了,其中学习过程中或多或少有些遗漏的知识点没有领悟透彻,通过这次做大程序的机会,得以将过去一年中学习的知识点再次连贯起来,有了一次比较综合的再学习,这次的大程序也还有一些功能因为所学知识的原因未能实现。 通过这次的大程序,也使我认识到自己的优点与不足,这将会激励我以后努力学习,争取更上一层楼。 参考书籍: [1]谭浩强,C语言程序设计,第2版.北京: 高等教育出版社2014. [2]StephenCPrata,PrimerPlus,第5版.北京: 人民邮电出版社2014.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 标准化 考试 系统 语言版