在线考试系统-C语言课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程报告
课程名称:程序设计实践
专业班级:计算机1306
学生姓名:王永森
学号: ****
任课教师:徐振强
学期: 2013-2014学年第二学期
课程报告任务书
成绩评定教师:
1 需求分析
标准化考试系统仅支持选择题,可以在学生做题之后进行自动批改试卷。主要包括以下几个基本功能:
(1)提供给教师添加试题的功能(试题信息用文件保存)--输入
(2)试题的整体浏览功能
(3)能够抽取试题组合成一套试卷(组卷的策略:可以是随机的,当然若教师添加的试题时有知识点、章节等信息,亦可以实现按照一定的组卷策略实现出题:如每个知识点抽取若干题目,最终组合一套试卷)
(4)教师实现题目信息的管理,比如删除、修改等
(5)查询功能(至少一种查询方式)、排序功能(至少一种排序方式)
2 概要设计
图 1程序概要图
如图(1)所示,此程序中学生信息使用单向链表存储,题库中的试题采用结构体数组存储,主要流程分为两部分,一部分为学生登录进行操作,另一部分为老师登录进行操作。程序中自定义了大量的功能函数,包括学生密码的修改,登录权限的确定,个人资料的修改;老师对试题的查找、添加、修改、删除、排序,对学生信息的查找、添加、修改、删除,以及自动随机生成一套试卷。各个功能函数都是独立的,可以相互调用,最终构成一个完整的系统。
3 详细设计
头文件
# include <>
# include <>
# include <>
# include <>
typedef struct student{ , i);
gets(tests[i].maintest);
printf ("请输入A:");
gets(tests[i].a);
printf ("请输入B:");
gets(tests[i].b);
printf ("请输入C:");
gets(tests[i].c);
printf ("请输入D:");
gets(tests[i].d);
printf ("请输入答案(a、b、c、d):");
gets(tests[i].ans);
printf ("请输入章节(数字):");
tests[i].zhangjie = my_natural();
printf ("请输入难度(*号表示):");
gets(tests[i].nandu);
}
save_tests();
printf ("\n新建试题成功!\n回车键返回……");
getchar();
return ;
}
修改试题
# include ""
void to_tests() , n);
gets(tests[n].maintest);
printf ("请输入A:");
gets(tests[n].a);
printf ("请输入B:");
gets(tests[n].b);
printf ("请输入C:");
gets(tests[n].c);
printf ("请输入D:");
gets(tests[n].d);
printf ("请输入答案:");
gets(tests[n].ans);
printf ("请输入章节(数字):");
tests[n].zhangjie = my_natural();
printf ("请输入难度(*号表示):");
gets(tests[n].nandu);
}
save_tests();
printf ("\n修改成功!\n");
printf ("回车键返回……");
getchar();
return ;
}
删除学生信息
# include ""
void del_stu() ....\n");
Admin = (struct teacher *)malloc(sizeof(struct teacher));
fread(Admin,sizeof(struct teacher),1,fp);
fclose(fp);
}
if((fp = fopen("","rb")) == NULL) n");
fp = fopen("","wb+");
fclose(fp);
}
else
{
....\n");
s = (stu *)malloc(sizeof(stu));
s->next = NULL;
while (fread(s,sizeof(stu),1,fp) != 0)
{
if (head->next == NULL)
{
head->next = s;
tail = s;
}
else
{
tail->next = s;
tail = s;
}
s = (stu *)malloc( sizeof(stu) );
s->next = NULL;
}
fclose(fp);
}
if ((fp = fopen("","rb")) == NULL) n");
fp = fopen("","wb+");
fclose(fp);
}
else
{
....\n");