标准化考试系统课程设计报告.docx

上传人:b****4 文档编号:5485261 上传时间:2023-05-08 格式:DOCX 页数:55 大小:142.18KB
下载 相关 举报
标准化考试系统课程设计报告.docx_第1页
第1页 / 共55页
标准化考试系统课程设计报告.docx_第2页
第2页 / 共55页
标准化考试系统课程设计报告.docx_第3页
第3页 / 共55页
标准化考试系统课程设计报告.docx_第4页
第4页 / 共55页
标准化考试系统课程设计报告.docx_第5页
第5页 / 共55页
标准化考试系统课程设计报告.docx_第6页
第6页 / 共55页
标准化考试系统课程设计报告.docx_第7页
第7页 / 共55页
标准化考试系统课程设计报告.docx_第8页
第8页 / 共55页
标准化考试系统课程设计报告.docx_第9页
第9页 / 共55页
标准化考试系统课程设计报告.docx_第10页
第10页 / 共55页
标准化考试系统课程设计报告.docx_第11页
第11页 / 共55页
标准化考试系统课程设计报告.docx_第12页
第12页 / 共55页
标准化考试系统课程设计报告.docx_第13页
第13页 / 共55页
标准化考试系统课程设计报告.docx_第14页
第14页 / 共55页
标准化考试系统课程设计报告.docx_第15页
第15页 / 共55页
标准化考试系统课程设计报告.docx_第16页
第16页 / 共55页
标准化考试系统课程设计报告.docx_第17页
第17页 / 共55页
标准化考试系统课程设计报告.docx_第18页
第18页 / 共55页
标准化考试系统课程设计报告.docx_第19页
第19页 / 共55页
标准化考试系统课程设计报告.docx_第20页
第20页 / 共55页
亲,该文档总共55页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

标准化考试系统课程设计报告.docx

《标准化考试系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《标准化考试系统课程设计报告.docx(55页珍藏版)》请在冰点文库上搜索。

标准化考试系统课程设计报告.docx

标准化考试系统课程设计报告

课程报告

 

课程名称:

c语言程序设计实践

专业班级:

xxxxxxxxx

学生姓名:

XXXX

学号:

XXXXXXXXXXXX

任课教师:

XXXXXX

学期:

XXXXXXXXXXXXXXXXXXXXXX

 

课程报告任务书

题目

标准化考试系统

主要

内容

开发出一个标准化考试系统,所谓标准化考试系统即仅支持选择题型的考试系统,要求实现以下基本功能:

(1)提供给教师添加试题的功能(试题信息用文件保存)--输入

(2)试题的浏览功能(可以按照不同的知识点或者难度系数进行查看)

(3)能够抽取试题组合成一套试卷(组卷的策略:

可以是随机的,亦可以实现按照一定的组卷策略实现出题:

如每个知识点抽取若干题目,最终组合一套试卷)

(4)教师可以实现题库的管理,比如删除、修改等

(5)查询功能(至少一种查询方式)、排序功能(至少一种排序方式,比如按照难度系数排序)

扩展功能:

可以按照自己的程度进行扩展。

比如

(1)简单的权限处理(教师登录、学生登录)

(2)可以加上学生信息和考试成绩信息的管理,并扩充为广义的考试系统。

即学生输入账号密码登陆,进行考试,交卷后显示成绩;(3)成绩报表打印功能(4)模糊查询(5)综合查询(6)统计、分析等功能总之,可以根据自己需求进行分析功能。

特别说明:

尽可能地运用自己已经学习过的数据结构的知识去展现。

任务

要求

一、提交材料应包括:

(1)系统源代码

(2)课程报告

二、整个设计过程具体要求

(1)需求分析要求学生对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系;

(2)设计过程要求学生进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)

(3)实现过程要求学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;

(4)总结阶段按照要求完成系统设计和实现报告,并进行总结、答辩。

成绩

评定

报告撰写情况(30分)

系统完成情况(30分)

答辩情况(40分)

总分

内容

20分

规范程度

5分

程序测试

5分

基本功能20分

扩展功能10分

自述情况10分

答辩情况

30分

成绩评定教师:

 

1需求分析

标准化考试系统,以试题为结点建立链表(始终抓住链表的头结点),要实现以下基本功能:

★身份识别:

(学生还是老师--即登陆界面,进行了密码加密处理)

★创建题库:

(文件形式保存--输入试题信息)

★创建学生信息:

(文件保存--保存学生成绩)

★创建学生账号:

(文件保存--保存学生学号密码)

★创建教师账号:

(文件保存--保存教师密码)

★查询试题:

题目查询

难度系数查询分值查询

题号查询

★修改试题:

修改题目

修改难度系数修改选项

修改题号

修改答案

修改全部

★添加试题(对链表进行操作,任意位置插入试题)

★删除试题(对链表进行操作,任意位置删除试题)

★生成出卷:

随机出卷

难度系数出卷按照分值出卷

★学生作答:

(可以提前交卷)

★成绩查询:

(提交试卷后,屏幕上显示,文件中保存)

★学生信息管理:

删除学生信息

添加学生信息修改学生信息

2概要设计

2.1数据结构

2.1.1链表结点定义:

typedefstructnode{//试题类型结点定义

intLDXS;//难度系数

intnum;//题号

intscore;//试题分数

intbz;//标记

chartimu[100];//题目

charA[100];

charB[100];

charC[100];

charD[100];//试题选项

charAS[10];//试题答案

structnode*next;

}Lnode;

2.1.2学生密码结点定义:

typedefstructxx{//学生密码管理

charXH[20];//学号

charMM[20];//学生密码

structxx*next;

}Xx;

2.1.3教师密码结点定义

typedefstructTt{//教师密码管理

charJH[20];//教师号

charMA[20];//教师密码

structTt*next;

}Tt;

2.1.4学生信息结点定义:

typedefstructstu{//学生信息结点定义

charxm[20];//姓名

intxh;//学号

intcj;//成绩

structstu*next;

}Stu;

2.1.5结构体数组定义

structnodetestquestion[100];

作用:

用来存储选取的试题,来实现答题的一些功能.

例如:

看上一题、下一题、交卷等.

程序中各函数简单说明见附件一。

2.2程序总体框架

如图1所示:

图1程序总体框架

 

3详细设计

3.1主函数

3.1.1学生模块:

学生登陆密码加密处理

do{

j=0;

printf("请输入学号:

");

scanf("%s",xuehao);

getchar();

head1=load3();

if(head1==NULL){

printf("没有学生信息!

\n");

getchar();

condition=0;

break;}

else{

for(pp=head1;pp!

=NULL;pp=pp->next){

if(strcmp(pp->XH,xuehao)==0)

jihao=1;

break;}

if(jihao==0){

printf("没有该学生学号!

\n");

condition=0;

break;}

else{

do{

printf("请输入你的密码:

");

while((ch=getch())!

=13){

putchar('*');

b[j]=ch;

j++;}

b[j]='\0';

for(pp=head1;pp!

=NULL;pp=pp->next){

if(strcmp(b,pp->MM)==0){

flag=1;

printf("\n密码正确!

\n");

gotoQ;}

if(flag==1)break;

elseprintf("\n密码错误!

\n\n");break;}

count++;

if(count!

=3&&flag!

=1)

printf("注意:

你还有%d次机会输入密码!

\n\n",3-count);

else{

printf("退出系统!

\n\n\n");condition=0;

break;}

j=0;

}while(count<3);

}

}

}while(count<3);

学生功能菜单及实现

if(condition==1)system("PAUSE");

while(flag==1)

{

system("cls");

printf("\t\t*********************\n");

printf("\t\t[1]查看试题:

\n");

printf("\t\t[2]答题:

\n");

printf("\t\t按任意键退出:

\n");

printf("\t\t*********************\n");

printf("请输入您的选择:

");

choice=-1;//用来实现任意键退出的

scanf("%d",&choice);

getchar();

system("cls");

switch(choice){

case1:

head=load1();

if(head==NULL){

printf("题库为空,请先创建题库!

\n");

getchar();

break;

}

else{

chaxun_shiti(head);

getchar();

}

break;

case2:

creat_shijuan(head);

break;

default:

exit(0);

}

}

break;

3.1.2教师模块:

教师登陆密码加密处理

do{

j=0;

printf("你是教师!

请您输入教师号:

");

scanf("%s",xuehao);

getchar();

head2=load4();

if(head2==NULL){

printf("没有该教师信息!

\n");

getchar();

condition=0;

break;}

else{

for(pa=head2;pa!

=NULL;pa=pa->next){

if(strcmp(pa->JH,xuehao)==0){

jihao=1;

break;}

}

if(jihao==0){

printf("没有该教师号!

\n");

condition=0;

break;}

else{

do{

printf("请输入你的密码:

");

while((ch=getch())!

=13){

putchar('*');

b[j]=ch;

j++;}

b[j]='\0';

for(pa=head2;pa!

=NULL;pa=pa->next){

if(strcmp(b,pa->MA)==0){

flag=1;

printf("\n密码正确!

\n");

gotoR;}

}

if(flag==0)printf("\n密码错误!

\n\n");

count++;

if(count!

=3&&flag!

=1)

printf("注意:

你还有%d次机会输入密码!

\n\n",3-count);

else{

printf("退出系统!

\n\n\n");condition=0;

break;}

j=0;

}while(count<3);

}

}

}while(count<3);

教师功能菜单及实现

while(flag==1)

{

system("cls");

printf("\t\t*************************\n");

printf("\t\t您是老师可以进行以下操作:

\n");

printf("\t\t[0]学生成绩排序:

\n");

printf("\t\t[1]添加试题:

\n");

printf("\t\t[2]查询试题:

\n");

printf("\t\t[3]创建题库:

\n");

printf("\t\t[4]修改试题:

\n");

printf("\t\t[5]删除试题:

\n");

printf("\t\t[6]添加学生信息:

\n");

printf("\t\t[7]创建学生信息:

\n");

printf("\t\t[8]查询学生信息:

\n");

printf("\t\t[9]修改学生信息:

\n");

printf("\t\t[10]删除学生信息:

\n");

printf("\t\t按任意键退出:

\n");

printf("\t\t************************\n");

printf("请输入您的选择:

");

choice=-1;

scanf("%d",&choice);

getchar();

system("cls");

switch(choice){

case0:

tou=load2();

if(tou==NULL){

printf("成绩为空,请先创建学生成绩!

\n");

getchar();

break;

}

else{

paixu_cj(tou);//成绩排序

getchar();

break;

}

case1:

head=load1();

if(head==NULL){

printf("题库为空,请先创建题库!

\n");

getchar();

break;}

else{

head=addshiti(head);//添加试题

printf("添加成功!

\n");

printf("是否将新信息保存到文件?

(y/n)\n");

scanf("%c",&a);

getchar();

switch(a){

case'n':

break;

case'y':

baocun1(head);//保存试题

printf("保存成功!

\n");

getchar();

break;}

break;}

case2:

head=load1();

if(head==NULL){

printf("题库为空,请先创建题库!

\n");

getchar();

break;}

else{

chaxun_shiti(head);

getchar();

break;}

case3:

head=creat_tk();//创建题库

printf("是否保存该题?

(y/n)\n");

getchar();

scanf("%c",&a);

getchar();

switch(a){

case'n':

break;

case'y':

baocun1(head);

printf("保存成功!

\n");

getchar();

break;}

break;

case4:

head=load1();

if(head==NULL){

printf("题库为空,没有题可以修改!

\n");

getchar();

break;}

else{

xiugai_shiti(head);//修改试题

getchar();

break;

}

case5:

head=load1();

if(head==NULL){

printf("题库为空,没有题可以删除!

\n");

getchar();

break;

}

else{

delet_shiti(head);//删除试题

getchar();

break;

}

case6:

tou=load2();

if(tou==NULL){

printf("学生信息为空,请先创建学生信息!

\n");

getchar();

break;

}

else{

tou=addxs(tou);//添加学生信息

printf("添加成功!

\n");

printf("是否将新信息保存到文件?

(y/n)\n");

scanf("%c",&a);

getchar();

switch(a){

case'n':

break;

case'y':

baocun2(tou);

printf("保存成功!

\n");

getchar();

break;

}

break;

}

case7:

tou=creat_XS();//创建学生信息

printf("是否保存?

(y/n)\n");

getchar();

scanf("%c",&q);

getchar();

switch(q){

case'n':

break;

case'y':

baocun2(tou);

printf("保存成功!

\n");

getchar();

break;

}

break;

case8:

tou=load2();

if(tou==NULL){

printf("学生信息为空,请先创建学生信息!

\n");

getchar();

break;

}

else{

chaxun_XS(tou);//查询学生信息

getchar();

}

break;

case9:

tou=load2();

if(tou==NULL){

printf("学生信息为空,没有可以修改的学生信息!

\n");

getchar();

break;

}

else{

xiugai_XS(tou);//修改学生信息

getchar();

break;

}

case10:

tou=load2();

if(tou==NULL){

printf("学生信息为空,不可以删除!

\n");

getchar();

break;

}

else{

shanchu_XS(tou);//删除试题

getchar();

break;

}

default:

exit(0);

}

}

default:

printf("输入有误!

请重新输入身份!

");break;

}

}while(condition==1);

3.2创建题库链表

Lnode*creat_tk(){

intLDXS,num,score,m;

intbz=0;

chartimu[100];

charA[100],B[100],C[100],D[100],AS[10];

Lnode*p,*tail,*head;

head=tail=NULL;

printf("输入题号:

");

scanf("%d",&num);

printf("请输入试题的难度系数:

");

scanf("%d",&LDXS);

getchar();

printf("输入标志0:

");

scanf("%d",&bz);

getchar();

printf("请输入题目:

");

scanf("%s",timu);

getchar();

printf("请输分值:

");

scanf("%d",&score);

getchar();

printf("请输入A选项:

");

scanf("%s",A);

getchar();

printf("请输入B选项:

");

scanf("%s",B);

getchar();

printf("请输入C选项:

");

scanf("%s",C);

getchar();

printf("请输入D选项:

");

scanf("%s",D);

getchar();

printf("请输入答案:

");

scanf("%s",AS);

getchar();

while

(1)

{

p=(Lnode*)malloc(sizeof(Lnode));

p->num=num;

p->LDXS=LDXS;

p->bz=bz;

strcpy(p->timu,timu);

p->score=score;

strcpy(p->A,A);

strcpy(p->B,B);

strcpy(p->C,C);

strcpy(p->D,D);

strcpy(p->AS,AS);

p->next=NULL;

if(head==NULL)

head=p;

else

tail->next=p;

tail=p;

do{

printf("输入题号:

");

scanf("%d",&num);

m=yanzheng1(head,num

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2