




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告学 院: 信息科学与工程学院 专 业:计算机科学与技术(软件外包)班 级: 计软1205 学 号:20121214150、20121214189、20121214168 学生姓名: 吴恒臻、赵晨、于永峥 指导教师: 范玉玲 课程名称: 程序设计基础 设计名称: 试题库管理系统 一、 设计内容及要求设计题目管理信息包括:题目编号、题目名称、题目内容、出题年份、选题学生、选题学生学号、选题学生电话等。系统的主要功能包括:1、创建和读取题目信息文件(吴恒臻)判断指定位置是否有题库文件,如果没有则根据提示输入各项信息,然后将题目信息存储到一个文本文件中(setFile()),如果有则读取题目信息(readFile()),统计信息中题目个数(Count)。2.调用主菜单(Menu()),并用switch语句通过读入select进行功能选择。3、查询题目信息(赵晨)根据输入查询选项进行查询题库中题目信息按不同条件对题目信息进行查询操作,输出满足条件的题目信息。(1) 按题目编号查询。(2) 按题目名称查询。(3) 按出题年份查询。look函数(分为编号、年份、题目名称三种形式)是查找信息函数,以dowhile进行循环,利用结构体以数组的形式显示信息,分别是按题目编号,按题目名称,按出题年份查询,每一个项目里有包含一个dowhile循环。4、增加题目信息(赵晨)在原有题目信息文件的基础上增加新的题目信息,要求继续保存至原文件,并提示用户选择是否继续进行增加操作。Add是增加信息函数,以dowhile来进行循环增加要增加的信息5、删除题目信息(于永峥)提示用户输入要进行删除操作的题目编号,如果在文件中有该信息存在,则将该题目编号所对应的题目信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。dele是删除信息函数,利用dowhile循环里面包含着条件成立后要删除的信息6、修改题目信息(于永峥)提示用户输入要进行修改操作的题目编号,如果在文件中有该信息存在,则将提示用户输入该编号对应的题目内容与学生信息,结果保存至原文件,并提示用户选择是否继续进行修改操作。Correct函数是修改信息的函数,依旧是用dowhile循环二、 设计思路此程序由一个主函数和七个自定义函数组成。调用Menu函数(吴恒臻)通过printf输出主菜单。Setfile函数(吴恒臻)是创建函数,定义文件指针变量以读写形式创建一个文件,根据提示录入信息.。look函数(分为编号、年份、题目名称三种形式赵晨)是查找信息函数,以dowhile进行循环,以数组的形式显示信息,分别是按题目编号,按题目名称,按出题年份查询,每一个项目里有包含一个dowhile循环。Add函数(赵晨)是增加信息函数,以dowhile来进行循环增加要增加的信息.dele函数(于永峥)是删除信息函数,利用dowhile循环里面包含着条件成立后要删除的信息。Correct函数(于永峥)是修改信息的函数,依旧是用dowhile循环。每一个函数都用了goto语句和调用了writefile文件函数。Main函数(吴恒臻)中用了switch语句来选择要调用的函数。三、 设计结果及分析程序可以运行,不存在明显问题。在主菜单中可以选择1-5来实现功能的选择。然后根据提示输入信息。之后查询,修改,增加,删除,都可正常运行。输入乱码后会自动跳转到主菜单。1、如果无题库信息,则建立题库,如图所示:(如果有信息,则直接跳至主菜单。如图3)2、建立如图所示的信息,编号为1.3、建立完信息来到主菜单,如图所示,进行功能选择。4、查询题目信息:按照编号查询结果如下图所示:同理,按照题目名称查询和年份查询运行结果如下:5、添加题目信息在主菜单中选择添加题目信息,程序运行如图所示:系统提示是否继续添加。(至此,文件中已有已添加的题目信息)6、删除题库中题目信息在主菜单中选择删除信息选项,进行题目信息的删除,程序运行结果如图所示:7、修改题库中题目信息在主菜单中选择修改功能,进行题目信息的修改,程序运行结果如图所示:8、最后是系统的退出,如图所示:四、 总结通过此次的程序设计课学到了很多,对C语言也有了更好的了解,同时也对C程序的操作和调试也有了进一步的掌握。从中了解到了C语言是国内外广泛使用的语言,而且还知道了它的功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高等特点。特别的适合于编写系统软件。总之经过了几天的奋斗我们都掌握了很多知识,收获了很多。期间,虽然我们小组遇到了一些问题,在刚刚编完时,出现了许多错误,其中最主要的便是查找函数的问题,出现了查找到函数但是显示未查找到的问题,经过几次改写、查找资料和向老师请教,最终将这个问题解决了。同时,在编写过程中还出现了一些因马虎而产生的小错误,不过最后经过仔细检查都解决了。还有,在编写添加函数时出现了一些问题和BUG,但经过参考一些资料和老师的辅导后,找出了问题所在。在编写这个系统的过程中我们体会到了团队合作得重要性,没有我们组各个成员的分工合作、集体商议与老师的指导,一个人是很难完成设计的,而且在开始的时候遇到了很多问题没法解决,摆好时间没有进展,当我认为是设计思路错误,想要放弃重来时,也是队友及朋友的鼓劲支持,才得以见到柳暗花明的一刻。一个星期很快就过去了,程序设计课也接近尾声了,通过请教别人,在发现问题然后解决问题的过程中体会到了不一样的快乐!虽然有时会为了一个小小的BUG苦恼不已,但当解决后却是异常的兴奋!现在回想来看这个程序觉得不是很复杂,但我们却不能很顺利的完成,因此我们还要好好的学习,努力奋斗! 五、附录(源代码)#include#include#include#define N 20/N限定各信息字符串占用的长度#define M 2000/M限定题库存储题目数量typedef struct timuint bh;/定义题目编号int nf;/定义题目年份char mc20;/定义题目名称char nr200;/定义题目内容char xsxh20;/定义学生学号char xsxm20;/定义学生姓名char xsdh20;/定义学生电话TIMU;TIMU tmM;int Count=0;/用来统计储存的题目个数void Menu(void);/显示主菜单函数void set(void);/创建文件函数void add(void);/增加信息函数void dele(void);/删除信息函数void correct(void);/修改信息函数void Look(void);/查找信息函数void writeFile();/储存数据到文件的函数/=/功能:创建题库信息文件,根据提示输入题库的各项信息,将题库信息存储到一个二进制文件中./主要思路:定义文件指针变量以读写形式创建一个文件,根据提示录入信息./=/void setFile()FILE *fp;fp=fopen(c:timu.txt,w);if(fp=NULL)printf(Cant open file!n);return;printf(请根据提示开始建立文件的第一条信息!n);doprintf(编号: );scanf(%d,&tm0.bh);while(tm0.bh0);doprintf(年份: );scanf(%d,&tm0.nf);while(tm0.nf2013);printf(题目名称:);scanf(%s,tm0.mc);printf(题目内容: );scanf(%s,tm0.nr);printf(选题学生学号: );scanf(%s,tm0.xsxh);printf(选题学生姓名:);scanf(%s,tm0.xsxm);printf(选题学生电话: );scanf(%s,tm0.xsdh);fflush(stdin);fprintf(fp,%d %d %s %s %s %s %sn,tm0.bh,tm0.nf,tm0.mc,tm0.nr,tm0.xsxh,tm0.xsdh,tm0.xsxm);fclose(fp);Count=1;system(cls);/=/读取题库信息函数/=/void readFile()FILE *fp;int i;fp=fopen(c:timu.txt,r);if (fp=NULL)printf(cannot open read filen);return;i=0;while (!feof(fp)fscanf(fp,%d %d %s %s %s %s %sn,&tmi.bh,&tmi.nf,tmi.mc,tmi.nr,tmi.xsxh,tmi.xsdh,tmi.xsxm);i+;fclose(fp);Count=i;/=/功能:显示系统菜单/参数:无/返回值:无/主要思路:利用printf函数输出菜单/=/void Menu(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请输入您要进行的操作: nn);printf(t 1. 查询题目信息文件n);printf(t 2. 增加题目信息n);printf(t 3. 删除题目信息n);printf(t 4. 修改题目信息n);printf(t 5. 退出系统nn);printf(t 请选择按键(1-5): );int main(void) int select;FILE *fp;fp=fopen(c:timu.txt,r);if(fp=NULL)setFile();elsefclose(fp); readFile(); while(1)Menu();/调用Menu函数显示主菜单scanf(%d,&select);/输入想选择的功能fflush(stdin);/清空缓存switch(select)/对select进行多分支选择case 1: system(cls);Look();break;case 2: system(cls);add();break;case 3: system(cls);dele();break;case 4:system(cls);correct();break;case 5: system(cls);printf(nt谢谢使用,再见!n);exit(0);default:system(cls);printf(nt按键有误,请重新选择!n);return 0;/=/功能:查找信息/主要思路:利用循环及数组显示信息/=/void Look(void)int j,find,z,i,f;/find为查询方式的数字,j,z,i,f用于循环char ch10;/接受y/n和回车char mc20;/储存输入要查询的名称FILE *fp;if(fp=fopen(c:timu.txt,r)=NULL)printf(Cant open file!n);return;if (Count=0)printf(库中没有题目,无法查询!n);return;printf(请选择查询方式n1. 按照编号查询n2. 按照题目名称查询n3. 按编题年份查询n请输入:n);scanf(%d,&find);fflush(stdin);if(find=1)doprintf(n请输入编号进行查询:);scanf(%d,&j);for(i=0;iCount;i+)if(tmi.bh=j)/找到相配匹的编号printf(题目编号:%dn编题年份:%dn题目名称:%sn题目内容:%sn选题学生学号:%sn选题学生姓名:%sn选题学生电话:%sn,tmi.bh,tmi.nf,tmi.mc,tmi.nr,tmi.xsxh,tmi.xsxm,tmi.xsdh);break;if(i=Count)printf(没查到该编号的题目!n);printf(是否继续查询?(y/n):);scanf(%s,ch);while(strcmp(ch,y)=0);/用来重复查询if(find=2)doz=0;printf(n请输入题目名称进行查询: );scanf(%s,mc);for(i=0;iCount;i+)if(strcmp(tmi.mc,mc)=0)/找到想匹配的题目名称z=1;printf(题目编号:%dn编题年份:%dn题目名称:%sn题目内容:%sn选题学生学号:%sn选题学生姓名:%sn选题学生电话:%snn,tmi.bh,tmi.nf,tmi.mc,tmi.nr,tmi.xsxh,tmi.xsxm,tmi.xsdh);/break;if(z=0)printf(没查到该名称的题目!n);printf(是否继续查询?(y/n):);scanf(%s,ch);while(strcmp(ch,y)=0);if(find=3) do z=0; printf(n请输入出题年份); scanf(%d,&f); for(i=0;iCount;i+)if(tmi.nf=f)/找到想匹配的出题年份z=1;printf(题目编号:%dn编题年份:%dn题目名称:%sn题目内容:%sn选题学生学号:%sn选题学生姓名:%sn选题学生电话:%snn,tmi.bh,tmi.nf,tmi.mc,tmi.nr,tmi.xsxh,tmi.xsxm,tmi.xsdh);if(z=0)printf(没查到该年份的题目!n);printf(是否继续查询?(y/n):);scanf(%s,ch);while(strcmp(ch,y)=0);system(cls);fclose(fp);/=/每次添加、删除、修改时所需要调用的写入文件函数/=/void writeFile()FILE *fp;int i;fp=fopen(c:timu.txt,w);if(fp=NULL)printf(Cant open file for write!n);return;for (i=0;iCount;i+)fprintf(fp,%d %d %s %s %s %s %sn,tmi.bh,tmi.nf,tmi.mc,tmi.nr,tmi.xsxh,tmi.xsdh,tmi.xsxm);fclose(fp);/=/功能:增加信息/主要思路:利用do,while循环/=/void add(void)char ch2;int j,i,flag;dob1:;b2:;i=Count;doprintf(编号:);scanf(%d,&tmi.bh);flag=0;for (j=0;jCount;j+)if (tmj.bh=tmi.bh)flag=1;break;while(flag=1);doprintf(年份: );scanf(%d,&tmi.nf);while(tmi.nf2013);printf(题目名称:);scanf(%s,tmi.mc);printf(题目内容:);scanf(%s,tmi.nr);printf(选题学生学号:);scanf(%s,tmi.xsxh);printf(选题学生姓名:);scanf(%s,tmi.xsxm);printf(选题学生电话: );scanf(%s,tmi.xsdh);Count+;printf(题库中已经包含%d个题目的信息!n,Count);printf(是否继续添加?(y/n):);scanf(%s,ch);while(strcmp(ch,y)=0);system(cls);writeFile();/=/功能:删除信息/主要思路:利用循环./=/void dele(void)int j,i;char ch2;doprintf(请输入编号进行删除: );scanf(%d,&j);for (i=0;iCount;i+)if (tmi.bh=j)break;if (i=Count)printf(没有找到编号为%d的题目!,j);goto del;printf(题目编号:%dn编题年份:%dn题目名称:%sn题目内容:%sn选题学生学号:%sn选题学生姓名:%sn选题学生电话:%snn,tmi.bh,tmi.nf,tmi.mc,tmi.nr,tmi.xsxh,tmi.xsxm,tmi.xsdh);printf(是否真的要删除该题?(y/n);scanf(%s,ch);if (strcmp(ch,y)!=0)goto del;for (j=i+1;jCount;j+)tmj-1=tmj;Count-=1;writeFile();printf(题目已删除成功!n);del:printf(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新质生产力:生活中的实例
- 宿迁新质生产力赋能培训
- 物资仓储管理课件
- 2026年高考总复习优化设计一轮复习政治(人教福建版)-第2课 我国的社会主义市场经济体制
- 新质生产力相关行业解析
- 新质生产力党建引领
- 2025年生物饲料添加剂产品性能提升鉴定报告
- 2025年政府会计准则考试题及答案解析
- 广东省深圳市平湖中学2025年高三生物第一学期期末学业质量监测试题
- 微生物、洁净作业和卫生知识培训试卷及答案
- 中级政工考试题库及答案
- (2025年标准)工作就业协议书
- 2025年浙江省中考道德与法治试题答案详解讲评(课件)
- 如何用飞书高效讲解
- 广州南沙深化面向世界的粤港澳全面合作白皮书(2022.06-2025.06)
- 2025年陕西教师编制招聘考试笔试试题(含答案)
- 信息公开条例培训课件
- 2025年留疆战士考试题库及答案
- 新初一入学分班考试语文卷(含答案)
- 2025年全国《中小学教育管理》知识考试题库与答案
- 2025年高考英语新课标Ⅱ卷点评及2026备考方向 课件
评论
0/150
提交评论