1、在线考试系统C语言课程设计报告课程报告课程 名称: 程序设计实践 专业班级: 计算机1306 学生姓名: 王永森学 号: *学 期:2013-2014学年第二学期题 目标准化考试系统主要内容开发出一个标准化考试系统,所谓标准化考试系统即仅支持选择题型地考试系 统,要求实现以下基本功能:(1) 提供给教师添加试卷地功能(试卷信息用文件保存) -输入(2) 试卷地浏览功能(可以按照不冋地知识点或者难度系数进行查看)(3) 能够抽取试卷组合成一套试卷(组卷地策略:可以是随机地,亦可以实现 按照一定地组卷策略实现出题:如每个知识点抽取若干题目,最终组合一套试卷)(4) 教师可以实现题库地管理,比如删除
2、、修改等(5) 查询功能(至少一种查询方式)、排序功能(至少一种排序方式,比如按照难 度系数排序)扩展功能:可以按照自己地程度进行扩展 比如(1)简单地权限处理(教师登录、学生登录)(2)可以加上学生信息和考试成绩信息地管理,并扩充为广义地考 试系统即学生输入账号密码登陆,进行考试,交卷后显示成绩;( 3)成绩报表打印功能(4)模糊查询 (5)综合查询 (6)统计、分析等功能 总之,可以根据自己 需求进行分析功能特别说明:尽可能地运用自己已经学习过地数据结构地知识去展现任务要求一、 提交材料应包括:(1)系统源代码 (2 )课程报告二、 整个设计过程具体要求(1) 需求分析 要求学生对案例系统
3、进行分析,设计出需要完成地功能,完善各个模块地调用关系;(2) 设计过程 要求学生进一步明确各模块调用关系,进一步完善模块函数细 节(函数名、参数、返回值等)(3) 实现过程 要求学生养成良好地编码习惯、完成各个模块并进行测试,最 终完成系统整体测试;(4) 总结阶段按照要求完成系统设计和实现报告,并进行总结、答辩成绩评定报告撰写情况(30分)系统完成情况(30 分)答辩情况(40分)总分内容20分规范程度5分程序测试5分基本功能20分扩展功能10分自述情况10分答辩情况30分课程报告任务书成 绩评 定教师1需求分析标准化考试系统仅支持选择题,可以在学生做题之后进行自动批改试卷 主要包括以下几
4、个基本功能:(1) 提供给教师添加试卷地功能(试卷信息用文件保存) -输入(2) 试卷地整体浏览功能(3) 能够抽取试卷组合成一套试卷(组卷地策略:可以是随机地,当然若教师添加地试卷时有知识点、章节等信息,亦可以实现按照一定地组卷策略实现出题:如每个知识点抽取若干题目,最终组合一套试卷)(4) 教师实现题目信息地管理,比如删除、修改等(5) 查询功能(至少一种查询方式)、排序功能(至少一种排序方式)2概要设计图1程序概要图如图(1)所示,此程序中学生信息使用单向链表存储,题库中地试卷采用结构体数组存储,主要流程分为两部分,一部分为学生登录进行操作,另一部分为老师登录进行操作 程序中自定义了大量
5、地功能函数,包括学生密码地修改,登录权限地确定,个人资料地修改;老师对试卷地查找、添加、修改、删除、排序,对学生信息地查找、添加、修改、删除,以及自动随机生成一套试卷 各个功能函数都是独立地,可以相互调用,最终构成一个完整地系统3详细设计头文件my_head.h# in elude # in clude # in clude # in clude char num20 。char name20 。char pass20 。int score 。struct student *next 。 stu 。struct teacher char account20 。 char password20
6、。 *Admin 。/ 试卷库采用数组struct testschar maintest500 。char a30 。char b30 。char c30 。char d30 。char ans30 。int zhangjie 。char nandu20 。 tests100 。 int ts10020 。int i, j, tt 。stu *head, *tail, *pm 。主函数 my_main.c# include my_head.h int main(void) system (color 1E) 。printf ( - o - o - nn) 。printf ( 欢迎进入 nn)
7、。printf ( 标准化考试系统 nn) 。printf ( 王永森 制作 nn) 。printf ( - -3 nn) 。printf (n轻敲回车键开始)。getchar() 。i = 0。j = 0。/ 头结点申请空间tt = 0 。head = (stu *)malloc(sizeof(stu) 。head-next = NULL 。my_read() 。 my_menu() 。 return 0 。添加试卷 new_tests.c# include my_head.hvoid new_tests() / 添加试卷 static int n, l 。 system(cls) 。pri
8、ntf ( 请输入个数: ) 。n = my_natural() 。for (l = 1 。 l i)printf (n无此题! n回车键返回 ”)。getchar() 。return 。elseprintf ( 请输入题干 :%d., n) 。 gets(testsn.maintest) 。printf ( 请输入 A:) 。gets(testsn.a) 。printf ( 请输入 B:) 。gets(testsn.b) 。printf ( 请输入 C:)。gets(testsn.c) 。printf ( 请输入 D:) 。gets(testsn.d) 。printf ( 请输入答案 :)。
9、gets(testsn.ans)。printf ( 请输入章节(数字) :) 。 testsn.zhangjie = my_natural() 。printf ( 请输入难度( *号表示): )。 gets(testsn.nandu) 。save_tests()。printf (n 修改成功! n) 。printf (回车键返回 )。getchar() 。return 。删除学生信息 del_stu.c/ 删除学生# include my_head.h void del_stu() static stu *p, *q 。static char num20 。system(cls) 。gets(
10、num)。p = head 。while (p-next != NULL)if (strcmp(p-next-num, num) = 0)break。p = p-next 。q = p-next 。p-next = q-next 。free(q) 。/释放空间)。printf(n 删除成功 .n 回车键返回getchar() 。return 。else / 没找到则返回信息printf(n你所要删除地地账号不存在! n回车键返回”)。getchar() 。删除试卷 del_tests.c# include my_head.hvoid del_tests() / 删除试卷static int n
11、 。system(cls) 。printf ( 请输入题号: ) 。n = my_natural() 。if (n = 0 | n i) / 判断是否存在printf (n无此题! n回车键返回 ”)。getchar() 。return 。elsefor ( 。 n next 。system(cls) 。if (p = NULL) / 判断是否为空printf (数据空! n回车键返回 )。getchar() 。return 。printf (学号 姓名 密码 分数n)。while (p != NULL) / 不空则输出printf (%-17s%-10s%-17s%dn, p-num, p-
12、name, p-pass, p-score) 。 p=p-next 。printf (n 显示完毕! n)。printf (”按回车键返回 ”)。getchar() 。return 。显示主菜单 my_menu.cvoid my_menu() / 显示主菜单static int n 。while (1)system (cls) 。printf ( 请选择您地身份: 【1】学生 n) 。printf ( 【2】老师 n) 。printf ( 【0】退出 n) 。printf ( 请输入选项: )。n = my_natural() 。switch(n)case 1:stu_menu() 。 bre
13、ak。case 2:tea_menu()。 break。case 0:return。break。default:system(cls)。printf (输入错误!n)。printf (回车键返回)。getchar()。读取文件 my_read.c# include my_head.hvoid my_read() / 读取文件中地数据到程序static FILE *fp 。static stu *p 。static stu *s 。if(fp = fopen(admin.dat,rb+) = NULL) / 读取管理员密码Admin = (struct teacher *)malloc(size
14、of(struct teacher) 。 strcpy(Admin-account, admin) 。strcpy(Admin-password, admin) 。fp = fopen(admin.dat,wb+) 。if (fwrite(Admin, sizeof(stu), 1, fp) != 1)printf (file write errorn) 。fclose(fp) 。else/ printf ( 数据加载成功 .1 n) 。Admin = (struct teacher *)malloc(sizeof(struct teacher) 。 fread(Admin,sizeof(st
15、ruct teacher),1,fp) 。fclose(fp) 。if(fp = fopen(student.dat,rb) = NULL) / 读取学生信息 / printf (can not open.n) 。fp = fopen(student.dat,wb+) 。fclose(fp) 。else/ printf ( 数据加载成功 .2 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
16、 = s 。elsetail-next = s 。tail = s 。s = (stu *)malloc( sizeof(stu) ) 。s-next = NULL 。fclose(fp) 。if (fp = fopen(tests.dat,rb) = NULL) / 读取试卷信息/ printf (can not open.n) 。fp = fopen(tests.dat,wb+) 。fclose(fp) 。else/ printf ( 数据加载成功 .3 n) 。while (fread( (tests+i+1),sizeof(struct tests),1,fp) != 0)i+ 。fc
17、lose(fp) 。return 。保存学生数据到文件 save_stu.c# include my_head.hvoid save_stu() / 保存学生数据到文件static FILE *fp 。static stu *p 。fp = fopen(student.dat,wb) 。p = head-next 。while (p != NULL)if (fwrite(p,sizeof(stu),1,fp) != 1)printf (file write errorn) 。p = p-next 。fclose(fp) 。保存试卷到文件 save_tests.c# include my_hea
18、d.hvoid save_tests() / 保存试卷到文件static FILE *fp 。static int l 。fp = fopen(tests.dat,wb) 。for (l = 1 。 l = i 。 l +)if (fwrite( (tests + l),sizeof(struct tests), 1, fp ) != 1) printf (file write errorn) 。fclose(fp) 。随机数组题 take_tests.c# include my_head.hvoid take_tests() / 随机数组题static int n, l, m, c, L 。
19、srand( (unsigned)time( NULL ) ) 。 system(cls) 。printf ( 请输入需要几套试卷: ) 。 n = my_natural() 。if (i = 10)printf ( 题目不足! n 回车键返回getchar() 。return 。for (j = 1 。 j = n 。 j +)L = 1。dom = 0。c = rand()%i + 1 。for(l = 1 。 l hne was the btst typ 時 but I f f so Listetjaueb to_it.A. fall intoB.f all offCrfall OvtKP.fall for答簾:d难度;*+童节主4口三嚮顾亠:图11查看全部试卷分页显示查看学生信息,如图(13)删除学生信息,如图(14)查看全部试卷分页显示,如图(11)( 12):飞:恬還化考泣至斷氐kw匡芮懦试至诜号灯klx YouH may natC 0ughtnJ 僭案:bSrThe nev uch , willAipz act ice the piano
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1