课程设计报告学院:信息科学与工程学院专业:计算机科学与技术(软件外包)班级:计软1205学号:20121214150、20121214189、20121214168学生姓名:吴恒臻、赵晨、于永峥指导教师:范玉玲课程名称:程序设计基础设计名称:试题库管理系统一、设计内容及要求设计题目管理信息包括:题目编号、题目名称、题目内容、出题年份、选题学生、选题学生学号、选题学生电话等。系统的主要功能包括:1、创建和读取题目信息文件(吴恒臻)判断指定位置是否有题库文件,如果没有则根据提示输入各项信息,然后将题目信息存储到一个文本文件中(setFile()),如果有则读取题目信息(readFile()),统计信息中题目个数(Count)。2.调用主菜单(Menu()),并用switch语句通过读入select进行功能选择。3、查询题目信息(赵晨)根据输入查询选项进行查询题库中题目信息按不同条件对题目信息进行查询操作,输出满足条件的题目信息。(1)按题目编号查询。(2)按题目名称查询。(3)按出题年份查询。look函数(分为编号、年份、题目名称三种形式)是查找信息函数,以do—while进行循环,利用结构体以数组的形式显示信息,分别是按题目编号,按题目名称,按出题年份查询,每一个项目里有包含一个do—while循环。4、增加题目信息(赵晨)在原有题目信息文件的基础上增加新的题目信息,要求继续保存至原文件,并提示用户选择是否继续进行增加操作。Add是增加信息函数,以do—while来进行循环增加要增加的信息5、删除题目信息(于永峥)提示用户输入要进行删除操作的题目编号,如果在文件中有该信息存在,则将该题目编号所对应的题目信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。dele是删除信息函数,利用do——while循环里面包含着条件成立后要删除的信息6、修改题目信息(于永峥)提示用户输入要进行修改操作的题目编号,如果在文件中有该信息存在,则将提示用户输入该编号对应的题目内容与学生信息,结果保存至原文件,并提示用户选择是否继续进行修改操作。Correct函数是修改信息的函数,依旧是用do—while循环二、设计思路此程序由一个主函数和七个自定义函数组成。调用Menu函数(吴恒臻)通过printf输出主菜单。Setfile函数(吴恒臻)是创建函数,定义文件指针变量以读写形式创建一个文件,根据提示录入信息.。look函数(分为编号、年份、题目名称三种形式——赵晨)是查找信息函数,以do—while进行循环,以数组的形式显示信息,分别是按题目编号,按题目名称,按出题年份查询,每一个项目里有包含一个do—while循环。Add函数(赵晨)是增加信息函数,以do—while来进行循环增加要增加的信息.dele函数(于永峥)是删除信息函数,利用do——while循环里面包含着条件成立后要删除的信息。Correct函数(于永峥)是修改信息的函数,依旧是用do—while循环。每一个函数都用了goto语句和调用了writefile文件函数。Main函数(吴恒臻)中用了switch语句来选择要调用的函数。三、设计结果及分析程序可以运行,不存在明显问题。在主菜单中可以选择1-5来实现功能的选择。然后根据提示输入信息。之后查询,修改,增加,删除,都可正常运行。输入乱码后会自动跳转到主菜单。1、如果无题库信息,则建立题库,如图所示:(如果有信息,则直接跳至主菜单。如图3)2、建立如图所示的信息,编号为1.3、建立完信息来到主菜单,如图所示,进行功能选择。4、查询题目信息:按照编号查询结果如下图所示:同理,按照题目名称查询和年份查询运行结果如下:5、添加题目信息在主菜单中选择添加题目信息,程序运行如图所示:系统提示是否继续添加。(至此,文件中已有已添加的题目信息)6、删除题库中题目信息在主菜单中选择删除信息选项,进行题目信息的删除,程序运行结果如图所示:7、修改题库中题目信息在主菜单中选择修改功能,进行题目信息的修改,程序运行结果如图所示:8、最后是系统的退出,如图所示:四、总结通过此次的程序设计课学到了很多,对C语言也有了更好的了解,同时也对C程序的操作和调试也有了进一步的掌握。从中了解到了C语言是国内外广泛使用的语言,而且还知道了它的功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高等特点。特别的适合于编写系统软件。总之经过了几天的奋斗我们都掌握了很多知识,收获了很多。期间,虽然我们小组遇到了一些问题,在刚刚编完时,出现了许多错误,其中最主要的便是查找函数的问题,出现了查找到函数但是显示未查找到的问题,经过几次改写、查找资料和向老师请教,最终将这个问题解决了。同时,在编写过程中还出现了一些因马虎而产生的小错误,不过最后经过仔细检查都解决了。还有,在编写添加函数时出现了一些问题和BUG,但经过参考一些资料和老师的辅导后,找出了问题所在。在编写这个系统的过程中我们体会到了团队合作得重要性,没有我们组各个成员的分工合作、集体商议与老师的指导,一个人是很难完成设计的,而且在开始的时候遇到了很多问题没法解决,摆好时间没有进展,当我认为是设计思路错误,想要放弃重来时,也是队友及朋友的鼓劲支持,才得以见到柳暗花明的一刻。一个星期很快就过去了,程序设计课也接近尾声了,通过请教别人,在发现问题然后解决问题的过程中体会到了不一样的快乐!虽然有时会为了一个小小的BUG苦恼不已,但当解决后却是异常的兴奋!现在回想来看这个程序觉得不是很复杂,但我们却不能很顺利的完成,因此我们还要好好的学习,努力奋斗!五、附录(源代码)#includestdio.h#includestdlib.h#includestring.h#defineN20//N限定各信息字符串占用的长度#defineM2000//M限定题库存储题目数量typedefstructtimu{intbh;//定义题目编号intnf;//定义题目年份charmc[20];//定义题目名称charnr[200];//定义题目内容charxsxh[20];//定义学生学号charxsxm[20];//定义学生姓名charxsdh[20];//定义学生电话}TIMU;TIMUtm[M];intCount=0;//用来统计储存的题目个数voidMenu(void);//显示主菜单函数voidset(void);//创建文件函数voidadd(void);//增加信息函数voiddele(void);//删除信息函数voidcorrect(void);//修改信息函数voidLook(void);//查找信息函数voidwriteFile();//储存数据到文件的函数//=================================================////功能:创建题库信息文件,根据提示输入题库的各项信息,将题库信息存储到一个二进制文件中.//主要思路:定义文件指针变量以读写形式创建一个文件,根据提示录入信息.//================================================//voidsetFile(){FILE*fp;fp=fopen(c:\\timu.txt,w);if(fp==NULL){printf(Can'topenfile!\n);return;}printf(请根据提示开始建立文件的第一条信息!\n);do{printf(编号:);scanf(%d,&tm[0].bh);}while(tm[0].bh0);do{printf(年份:);scanf(%d,&tm[0].nf);}while(tm[0].nf1980||tm[0].nf2013);printf(题目名称:);scanf(%s,tm[0].mc);printf(题目内容:);scanf(%s,tm[0].nr);printf(选题学生学号:);scanf(%s,tm[0].xsxh);printf(选题学生姓名:);scanf(%s,tm[0].xsxm);printf(选题学生电话:);scanf(%s,tm[0].xsdh);fflush(stdin);fprintf(fp,%d%d%s%s%s%s%s\n,tm[0].bh,tm[0].nf,tm[0].mc,tm[0].nr,tm[0].xsxh,tm[0].xsdh,tm[0].xsxm);fclose(fp);Count=1;system(cls);}//================================================////读取题库信息函数////================================================//voidreadFile(){FILE*fp;inti;fp=fopen(c:\\timu.txt,r);if(fp==NULL){printf(cannotopenreadfile\n);return;}i=0;while(!feof(fp)){fscanf(fp,%d%d%s%s%s%s%s\n,&tm[i].bh,&tm[i].nf,tm[i].mc,tm[i].nr,tm[i].xsxh,tm[i].xsdh,tm[i].xsxm);i++;}fclose(fp);Count=i;}//=====================================================////功能:显示系统菜单//参数:无//返回值:无//主要思路:利用printf函数输出菜单//====================================================//voidMenu(void){printf(\n);printf(\t-----------------------------------------\n);printf(\t**\n);printf(\t*题目管理系统*\n);printf(\t**\n);printf(\t*编写人:吴恒臻、赵晨、于永峥*\n);printf(\t*班级:计软1205*\n);printf(\t**\n);printf(\t-----------------------------------------\n);printf(\n);printf(\t请输入您要进行的操作:\n\n);printf(\t1.查询题目信息文件\n);printf(\t2.增加题目信息\n);printf(\t3.删除题目信息\n);printf(\t4.修改题目信息\n);printf(\t5.退出系统\n\n);printf(\t请选择按键(1-5):);}intmain(void){intselect;FILE*fp;fp=fopen(c:\\timu.txt,r);if(fp==NULL)setFile();else{fclose(fp);readFile();}while(1){Menu();//调用Menu函数显示主菜单scanf(%d,&select);//输入想选择的功能fflush(stdin);//清空缓存switch(select)//对select进行多分支选择{case1:system(cls);Look();break;case2:system(cls);add();break;case3:system(cls);dele();break;case4:system(cls);correct();break;case5:system(cls);printf(\n\t谢谢使用,再见!\n);exit(0);default:system(cls);printf(\n\t按键有误,请重新选择!\n);}}return0;}//===========================================////功能:查找信息//主要思路:利