标准化考试系统课程设计报告Word格式.docx
《标准化考试系统课程设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《标准化考试系统课程设计报告Word格式.docx(55页珍藏版)》请在冰点文库上搜索。
报告撰写情况(30分)
系统完成情况(30分)
答辩情况(40分)
总分
20分
规范程度
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"
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("
没有该学生学号!
condition=0;
break;
}
else{
do{
printf("
请输入你的密码:
while((ch=getch())!
=13){
putchar('
*'
b[j]=ch;
j++;
b[j]='
\0'
;
for(pp=head1;
pp!
pp=pp->
if(strcmp(b,pp->
MM)==0){
flag=1;
\n密码正确!
gotoQ;
}
if(flag==1)break;
elseprintf("
\n密码错误!
\n\n"
break;
count++;
if(count!
=3&
&
flag!
=1)
注意:
你还有%d次机会输入密码!
3-count);
else{
退出系统!
\n\n\n"
condition=0;
}
j=0;
}while(count<
3);
}
}while(count<
学生功能菜单及实现
if(condition==1)system("
PAUSE"
while(flag==1)
{
system("
cls"
printf("
\t\t*********************\n"
\t\t[1]查看试题:
\t\t[2]答题:
\t\t按任意键退出:
请输入您的选择:
choice=-1;
//用来实现任意键退出的
scanf("
%d"
&
choice);
getchar();
switch(choice){
case1:
head=load1();
if(head==NULL){
题库为空,请先创建题库!
getchar();
break;
}
else{
chaxun_shiti(head);
getchar();
}
case2:
creat_shijuan(head);
default:
exit(0);
}
3.1.2教师模块:
教师登陆密码加密处理
do{
j=0;
你是教师!
请您输入教师号:
head2=load4();
if(head2==NULL){
没有该教师信息!
condition=0;
for(pa=head2;
pa!
pa=pa->
if(strcmp(pa->
JH,xuehao)==0){
jihao=1;
break;
}
没有该教师号!
condition=0;
do{
printf("
while((ch=getch())!
putchar('
for(pa=head2;
next){
if(strcmp(b,pa->
MA)==0){
gotoR;
}
if(flag==0)printf("
3-count);
}while(count<
3);
教师功能菜单及实现
while(flag==1)
{
system("
\t\t*************************\n"
printf("
\t\t您是老师可以进行以下操作:
\t\t[0]学生成绩排序:
\t\t[1]添加试题:
\t\t[2]查询试题:
\t\t[3]创建题库:
\t\t[4]修改试题:
\t\t[5]删除试题:
\t\t[6]添加学生信息:
\t\t[7]创建学生信息:
\t\t[8]查询学生信息:
\t\t[9]修改学生信息:
\t\t[10]删除学生信息:
\t\t************************\n"
choice=-1;
switch(choice){
case0:
tou=load2();
if(tou==NULL){
成绩为空,请先创建学生成绩!
paixu_cj(tou);
//成绩排序
case1:
head=load1();
if(head==NULL){
printf("
else{
head=addshiti(head);
//添加试题
添加成功!
是否将新信息保存到文件?
(y/n)\n"
scanf("
%c"
a);
switch(a){
case'
n'
:
y'
baocun1(head);
//保存试题
保存成功!
}
case3:
head=creat_tk();
//创建题库
是否保存该题?
case'
baocun1(head);
case4:
题库为空,没有题可以修改!
xiugai_shiti(head);
//修改试题
case5:
题库为空,没有题可以删除!
delet_shiti(head);
//删除试题
case6:
tou=load2();
学生信息为空,请先创建学生信息!
tou=addxs(tou);
//添加学生信息
baocun2(tou);
}
case7:
tou=creat_XS();
//创建学生信息
是否保存?
q);
switch(q){
baocun2(tou);
case8:
学生信息为空,请先创建学生信息!
chaxun_XS(tou);
//查询学生信息
case9:
学生信息为空,没有可以修改的学生信息!
xiugai_XS(tou);
//修改学生信息
case10:
学生信息为空,不可以删除!
shanchu_XS(tou);
exit(0);
default:
输入有误!
请重新输入身份!
}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;
输入题号:
scanf("
num);
请输入试题的难度系数:
LDXS);
getchar();
输入标志0:
scanf("
bz);
getchar();
请输入题目:
timu);
请输分值:
score);
请输入A选项:
A);
请输入B选项:
B);
请输入C选项:
C);
请输入D选项:
D);
请输入答案:
AS);
while
(1)
p=(Lnode*)malloc(sizeof(Lnode));
p->
num=num;
LDXS=LDXS;
bz=bz;
strcpy(p->
timu,timu);
score=score;
A,A);
B,B);
C,C);
D,D);
AS,AS);
next=NULL;
if(head==NULL)
head=p;
else
tail->
next=p;
tail=p;
do{
&
m=yanzheng1(head,num