1、课 程 报 告课 程 名 称: 程序设计实践 专 业 班 级 : 计算机类 1304班 学 生 姓 名 : 唐林 学 号 : 201316920403 任 课 教 师 : 唐建国 学 期 :2013-2014 学年第二学期 课程报告任务书题 目 标准化考试系统主要内容1.建立一个 InsertNode 函数来实现插入试题的功能。2.建立一个 AddNode 函数来实现添加试题的功能。3.建立一个 Change 函数来实现对试题进行修改的功能。4.新建一个 DeleteNode 函数来实现对试题的删除。5.建立个 printNode 函数实现对试题的输出功能。6.建立一个 Match 函数来判断
2、答案是否正确。7.建立 answer 函数实现随机选题并进行答题和统计得分功能。8.在主函数 main 中,使用 switch 函数让用户进行选择。任务要求一、对该考试系统进行需求分析,找出该系统需要哪些功能来实现,在每个功能中运用学过的算法来实现,每个功能用不同的函数来实现,确定函数之间调用的关系。二、整个设计过程具体要求(1)需求分析 对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系;(2)设计过程 进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)(3)实现过程 养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;(4)总结阶段 按照
3、要求完成系统设计和实现报告,并进行总结、答辩。报告撰写情况(30 分) 系统完成情况(30 分) 答辩情况(40 分)内容20分规范程度5分程序测试5分基本功能20分扩展功能10分自述情况10分答辩情况30分 总分成绩评定成绩评定教师: 1 需求分析该系统包括以下功能:1.进行随机答题并判卷2.显示试题所有内容3.插入试题4.添加试题5.自主选题并判卷6.修改试题7.删除试题8.退出系统2 概要设计2.1 整体框架图图 2-1-1标准化考试系统进行随机答题并判卷显示试题所有内容添加试题自主选题并判题修改试题删除试题退出系统2.2 函数功能图2.2.1 随机答题并判卷功能图NY图 2-2-1进入
4、函数 answer(int sum,int N)i=1,iN图 2-2-32.3 自定义函数返回值 函数名 参数表 函数功能Status SaveNode int while(1)printf(“请输入所要插入题题目、题干和选项:n“);printf(“请输入题目:“);gets(TestquestionsN.subject);if(strcmp(TestquestionsN.subject,“*“)=0)break;printf(“请输入选项 A:“);gets(TestquestionsN.option1);printf(“请输入选项 B:“);gets(TestquestionsN.op
5、tion2);printf(“请输入选项 C:“);gets(TestquestionsN.option3);printf(“请输入选项 D:“);gets(TestquestionsN.option4);printf(“请输入答案:“);scanf(“%c“,getchar();N+; /N表示结构体数组长度 ,通过加 3.2 修改试题先从键盘中输入想要修改第几道试题,当题标输入 m时,找到结构数组 m-1对应的元素就是要修改的试题,再将修改的试题进行保存,从而实现对试题的修改功能。Status Change(int printf(“请输入您要修改第几题?n“);scanf(“%d“,get
6、char(); /吸收空格字符for(i=0;iN)printf(“修改试题失败!n“);elseprintf(“修改试题成功!n“);return TRUE;3.3 删除试题先从键盘中输入想要修改第几道试题,当题标输入 n时,找到结构数组 n-1对应的元素就是要删除的试题,在用一个 for循环,将 n到 N-1个元素向前移动,从而实现对试题的删除功能。Status DeleteNode(int printf(“输入你想是删除第几道试题:n“);scanf(“%d“,if(nN)printf(“删除不成功n“);return ERROR;while(nN)printf(“输入的题号在题库中不存
7、在!n“);printf(“n请重新输入正确的题号:“);scanf(“%d“,printNode(Testquestionsk-1,i);printf(“n请输入 (%d)答案:“,i);getchar();scanf(“%c“,getchar();if(m=Testquestionsk-1.result)printf(“答案正确!n“);score+;else printf(“答案错误!n“);printf(“正确答案为:%cn“,Testquestionsk-1.result);printf(“总分为:%dn“,score);3.6 登陆考试系统函数屏幕上会显示教师和学生两种端口,如果过
8、选择学生端口将会进入登陆和注册两个选项,已经注册过的就可以直接登陆了,反之则进行注册。进入学生答题系统后可以选择随机答题或者自主选题进行作答两种方式。登陆教师窗口后,可以直接查看试题、删除试题、修改试题、添加试题的功能。void Denglu()FILE *fp1;int a,c,num,flag=1;int i=0;char Mima20=“0“,b20;printf(“ttt1 进入登录n“);printf(“nttt2 进入注册n“);scanf(“%d“,while(flag)if(c2)printf(“n请输入正确的选项 !n“);scanf(“%d“,flag=1;elseflag
9、=0;if(c=2)printf(“请注册:n“);Zhuce();else if(fp1=fopen(“student.txt“,“rb“)=NULL)printf(“打开文件失败!“);exit(0);printf(“请输入学号:“);scanf(“%d“,printf(“请输入密码“);while(c=getch()!=r)Mimai=c;i+;if(c!=b)printf(“*“);elseprintf(“bb“);rewind(fp1);while(!feof(fp1)fscanf(fp1,“%d“,fscanf(fp1,“%s“,if(a=num while(a!=num|strc
10、mp(b,Mima)!=0)i=0;printf(“n错误,重新输入:n“);printf(“请输入学号:“);scanf(“%d“,printf(“请输入密码“);while(c=getch()!=r)Mimai=c;i+;if(c!=b)printf(“*“);elseprintf(“bb“);rewind(fp1);while(!feof(fp1)fscanf(fp1,“%d“,fscanf(fp1,“%s“,if(a=numprintf(“tt欢迎登陆单选题标准化考试系统!n“);system(“pause“);getchar();printf(“n“);if(fclose(fp1)p
11、rintf(“关闭文件失败!n“);exit(0);*源代码#include #include #include#include#define TRUE 1#define ERROR 0#define MAX 30typedef int Status;typedef structchar option130,option230,option330,option430,subject150;char result;int q;TestNode;TestNode TestquestionsMAX;Status SaveNode(int FILE *fp;if(fp=fopen(“cheng“,“w
12、b“)=NULL) return ERROR;for(i=0;i2)printf(“n请输入正确的选项!n“);scanf(“%d“,flag=1;elseflag=0;if(c=2)printf(“请注册:n“);Zhuce();else if(fp1=fopen(“student.txt“,“rb“)=NULL)printf(“打开文件失败 !“);exit(0);printf(“请输入学号 :“);scanf(“%d“,printf(“请输入密码 “);while(c=getch()!=r)Mimai=c;i+;if(c!=b)printf(“*“);elseprintf(“bb“);r
13、ewind(fp1);while(!feof(fp1)fscanf(fp1,“%d“,fscanf(fp1,“%s“,if(a=num while(a!=num|strcmp(b,Mima)!=0)i=0;printf(“n错误,重新输入:n“);printf(“请输入学号 :“);scanf(“%d“,printf(“请输入密码 “);while(c=getch()!=r)Mimai=c;i+;if(c!=b)printf(“*“);elseprintf(“bb“);rewind(fp1);while(!feof(fp1)fscanf(fp1,“%d“,fscanf(fp1,“%s“,if(
14、a=numprintf(“tt欢迎登陆单选题标准化考试系统!n“);system(“pause“);getchar();printf(“n“);if(fclose(fp1)printf(“关闭文件失败 !n“);exit(0);Status AddNode(int while(1)printf(“请输入所要插入题题目、题干和选项:n“);printf(“请输入题目: “);gets(TestquestionsN.subject);if(strcmp(TestquestionsN.subject,“*“)=0)break;printf(“请输入选项 A:“);gets(Testquestions
15、N.option1);printf(“请输入选项 B:“);gets(TestquestionsN.option2);printf(“请输入选项 C:“);gets(TestquestionsN.option3);printf(“请输入选项 D:“);gets(TestquestionsN.option4);printf(“请输入答案: “);scanf(“%c“,printf(“请输入试题难度 :“);scanf(“%d“,getchar();N+; /N表示结构体数组长度 ,通过加void printNode(TestNode p,int n) /输出第 n道题题目printf(“(%d)
16、 “,n);printf(“%sn“,p.subject);printf(“ A %s “,p.option1);printf(“ B %s n“,p.option2);printf(“ C %s “,p.option3);printf(“ D %s “,p.option4);printf(“ 试题难度为 :%dn“,p.q);Status Change(int printNode(Testquestionsm-1,m);printf(“n“);printf(“修改题目请按 1n“);printf(“修改选项 A请按 2n“);printf(“修改选项 B请按 3n“);printf(“修改选
17、项 C请按 4n“);printf(“修改选项 D请按 5n“);printf(“修改标准答案请按 6n“);printf(“修改试题难度请按 7n“);scanf(“%d“,getchar(); /吸收空格字符switch(i)case 1: printf(“n请输入新的题目:“);gets(Testquestionsm-1.subject);break;case 2:printf(“请输入新的选项 A:“);gets(Testquestionsm-1.option1);break;case 3: printf(“请输入新的选项 B:“);gets(Testquestionsm-1.opti
18、on2);break;case 4:printf(“请输入新的选项 C:“);gets(Testquestionsm-1.option3);break;case 5:printf(“请输入新的选项 D:“);gets(Testquestionsm-1.option4);break;case 6:printf(“请输入新的答案:“);scanf(“%c“,break;case 7:printf(“请输入新的试题难度:“);scanf(“%d“,break;default:printf(“请输入正确的修改选项n“);break;return TRUE;Status InsertNode(int p
19、rintf(“输入要插入到第几题 ?n“);scanf(“%d“,getchar();N=N+1;for(j=N-1;j=(i-1);j-)Testquestionsj=Testquestionsj-1;printf(“请输入题目: “);gets(Testquestionsi-1.subject);printf(“请输入选项 A:“);gets(Testquestionsi-1.option1);printf(“请输入选项 B:“);gets(Testquestionsi-1.option2);printf(“请输入选项 C:“);gets(Testquestionsi-1.option3)
20、;printf(“请输入选项 D:“);gets(Testquestionsi-1.option4);printf(“请输入答案: “);scanf(“%c“,printf(“请输入试题难度 :“);scanf(“%d“,getchar();return TRUE;Status DeleteNode(int printf(“输入你想是删除第几道试题 :n“);scanf(“%d“,if(nN)printf(“删除不成功 n“);return ERROR;while(n2)printf(“题库中没有该难度的试题 !n“);printf(“n请重新输入试题难度:“);scanf(“%d“,for(
21、j=0;j2)printf(“ttt请选择自己的类型n“);printf(“ttt1 学生端口n“);printf(“ttt2 教师端口n“);scanf(“%d“,system(“cls“);switch(Chose)case 1:Denglu();system(“cls“);while(1)printf(“ttt单项选择题标准化考试系统进行答题 n “);printf(“ttt1 进行随机答题并判卷n“);printf(“ttt2 自主选题并判卷n“);printf(“ttt3 退出系统n“);scanf(“%d“,getchar();switch(chose)case 1:system(
22、“cls“);ReadNode(N);printf(“请输入试题的总题数 :“);scanf(“%d“,getchar();if(N=0)printf(“对不起,题库中没有试题!n“);printf(“按任意键回到菜单!n“);getchar();elseanswer(sum,N);getchar();break;case 2:system(“cls“);ReadNode(N);printf(“请输入试卷的总题数 :“);scanf(“%d“,Otheranswer(N,s);getchar();break;case 3:printf(“你将退出系统(Y or N)?“);scanf(“%c“,getchar();if(flag=Y|flag=y) exit(0);system(“cls“);break;default:printf(“请输入正确选择!n“);case 2:printf(“ttt 欢迎进入教师题库管理n“);while(1)printf(“ttt单项选择题标准化考试系统n “);printf(“n“);printf(“ ttt1 显示所有试题内容n“);printf(“ ttt2 添加试题n“);printf(“ ttt3 修改试题n“);printf(“ ttt4 删除试题n“);