单项选择题标准化考试系统
第3章 系统设计
3.1 设计思路
1、基本任务
开始 教师系统 进行试题库维护 学生系统 进行答题、判卷 删除试题修改试题增加试题答题判卷
2、程序中涉及到的全局变量
(1)int m,用来存储题目和答案的数目;
(2)FILE *fp1,*fp2,是文件指针,用于对文件进行操作。
3、程序中涉及到的自定义函数
void jindutiao(void),void logo_Interface(void),void readq(),void reada(),void writeq(), void writea(),int shumu(),void shanchu(void),void zengjia(void),void xiugai(void) void teacher(void),void student(void),int menu_select() 利用这些自定义函数和基本的循环、运行程序进行操作。
第 6 页 共 30 页
单项选择题标准化考试系统
3.2 基本算法及流程图
1、菜单
在主函数中输出菜单,并选择教师系统或学生系统,定义函数void teacher()、void student(),以实现选择系统。
开始 输出菜单 char= =T Y teacher N char= =S Y
2、教师系统
student 教师系统共有三个功能,即试题的删除、增加、修改,定义函数void teacher()、void shanchu()、void zengjia()、void xiugai(),在teacher()函数中分别调用这三个函数以实现各自功能。
输出菜单 输入选项 N N t= =2 Y zengjia t= =3 Y xiugai t= =1 Y shanchu
第 7 页 共 30 页
单项选择题标准化考试系统
3、学生系统
学生系统共有两个功能,答题和判卷。
开始 char= =Y Y 抽题 N 回主菜单 答题 判卷 结束 3.3 各自定义函数及其功能
1、void logo_Interface(void)和void jindutiao(void)利用简单的字符画,用于使界面友好。 2、void readq()和void reada()分别用于读题和读答案。利用fopen函数打开文件,用fscanf函数格式化读出并将读出数据存入结构体数组中。
3、void writeq()和void writea()分别用于写入题目和答案。利用fopen函数打开文件,用fprintf函数将结构体中的数据格式化写入文件。
4、int shumu(),用于测文件中的题目数,并将数目返回到全局变量m中。
5、void shanchu(void),用于删除某一题目。利用数组从后往前一次覆盖得到删除后的结果。
6、void zengjia(void),用于增加一道题目。将题目写入结构体中,用“追加”的方式打开文件并用fprintf函数格式化写入。
7、void xiugai(void),用于修改某一题目。用void readq()和void reada()将题目和答案读入结构体中,将要修改的题目进行重新输入再将新的结构体数组利用void writeq()和void
第 8 页 共 30 页
单项选择题标准化考试系统
writea()函数写入文件。
8、void teacher(void),用于出现菜单并选择功能,用switch实现调用不同函数。 9、void student(void),用于实现从题库中自动抽题和判卷。当输入Y选择开始做题后,利用rand函数产生随机数并将这些随机数存入一个数组中,实现随机抽题,将这些题目从文件中读出并存储在结构体中,用printf函数输出;当输入答案后利用循环对各个题答案与标准答案进行对比,得到正确的题数和错误的题数,并计算出正确率,输出。
10、int menu_select(),用于输出提示信息,并对教师系统选择和学生系统进行选择。利用switch实现对不同函数的调用。
3.4 源程序代码
#include
char timu[1000]; char a[100]; char b[100]; char c[100];
char d[100];
}question[100];
struct Answer_type { int t; char a;
}answer[100]; FILE *fp1,*fp2; int m;
第 9 页 共 30 页
单项选择题标准化考试系统
void jindutiao(void) { int i;
for(i=0;i<78;i++) putchar('.'); printf(\ for(i=0;i<78;i++) {
if(i==0) putchar('|'); Sleep(100); printf(\ }
void logo_Interface(void) /*logo界面*/ {
char *tu[9],*tu2[9];
char *wenzi = \ LOVE C LANGUAGE ! ! ! . . .\ char *wenzi1 = \欢迎使用 单项选择题标准化考试系统\ char *wenzi2 = \制作: D*J*S 研发小组 \ char *p; int k = 0; int i = 0; int j = 0; int M = 10;
tu[0] = \ ~ b_____________\ tu[1] = \ ,, ??? b| '\\\\\\\\\\\\\\\\\\\\\\\\\ tu[2] = \ ? b| ' ____|_\ tu[3] = \ '||::::::\ tu[4] = \ o- / \\\\_/ '\\\\ b| '||_____|\ tu[5] = \ | \\\\ ' o \\\\'b________|_____|\ tu[6] = \ | )- # < b___/____|___\\\\___\ tu[7] = \ `_/'------------b| _ ' <<<:|\ tu[8] = \ /________\\\\| b|_________'___o_o|\}
第 10 页 共 30 页