C语言程序设计题库管理系统.docx
- 文档编号:5361944
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:24
- 大小:553.52KB
C语言程序设计题库管理系统.docx
《C语言程序设计题库管理系统.docx》由会员分享,可在线阅读,更多相关《C语言程序设计题库管理系统.docx(24页珍藏版)》请在冰豆网上搜索。
C语言程序设计题库管理系统
程序设计基础课程设计报告
班级:
计算机科学与技术1103班
姓名:
杨广宇
指导教师:
胡宏涛
完成日期:
2012年9月6日
(题目)
1.设计题目与要求
(简要介绍课程设计题目内容与要求。
)
1设计内容
要求输入试题(仅限选择题和填空题)基本信息,实现试题浏览.,查询,修改功能,并将数据保存至文本文件。
2要求
功能完善,界面友好。
2.算法设计与描述(要求有相关流程图)
2.1算法设计与描述
(描述算法设计、实现过程。
)
1.提供可操作的主菜单:
输出主菜单,用户可根据菜单来选择操作。
根据客户输入的选项来运行不同的功能,运行不同的函数。
2.。
试题信息的录入函数:
按照提示输入题的题号,题目内容,并提示用户是否继续录入,每输入一个记录,全局变量n就自增,最后最为函数的返回值返回。
3.保存试题信息函数:
将文件的所有数据通过fprintf来写入指定文本文档,完成后关闭文件,没有返回值
4.载入试题信息函数:
通过fopen函数打开指定文件,通过fscanf来读取文件里的数据,最后返回记录数,避免了每次打开时都要输入数据的麻烦。
5.查询记录函数:
细分为按题号,题目两种方式来进行查询记录,并能对查询记录不存在进行提示。
遍历所有结构体找出符合的输出。
6.修改记录函数:
首先判断用户要修改的试题序号是否存在,进行相应的系统提示,然后遍历所有记录找出符合的,按照提示依次进行修改项目,返回记录值不变(没增加也没减少)。
7.删除记录函数:
首先判断用户要删除的试题序号是否存在,进行相应的系统提示,然后遍历所有记录找出符合的删除,冰讲后面的所有数据向前移动一个位置,记录数减一并返回。
2.2主要流程图
(用N—S图描述。
)
1,、输入函数
2、保存函数
3、载入函数
4、查询函数
5、修改函数
6、删除函数
3.设计软硬件环境
硬件设备系统:
MicrosoftWindowsXPProfessional版本2002
机型:
Inter®Core™2DuoCPUE8400@3.00GHz2.99GHz,2.00GB内存
软件设备MicrosoftVisualC++6.0应用程序调试
4.源程序代码清单
#include
#include
#include
typedefstruct
{
chartihao[10];//题号
chartimu[15];//题目
}Data;
Datada[80];
intmenu_select()
{
charc;
do{
system("cls");
printf("\t\t\t========题库管理系统========\n");
printf("\t\t\t┌───────────┐\n");
printf("\t\t\t│1.题目的输入│\n");
printf("\t\t\t│2.题目的浏览│\n");
printf("\t\t\t│3.题目信息更改│\n");//包括删除,插入和更改
printf("\t\t\t│4.题目信息查询│\n");
printf("\t\t\t│5.题目文件操作│\n");//包括保存,读取和复制
printf("\t\t\t│0.退出管理系统│\n");
printf("\t\t\t└───────────┘\n");
printf("\t\t\t============================\n");
printf("\n\t\t请您选择(0-5):
");
c=getchar();
}while(c<'0'||c>'5');
return(c-'0');
}
voidtihaosort(Datadat[],intn)//题号排序
{
inti,j;
Datatemp;
for(i=0;i da[i]=dat[i]; for(i=0;i for(j=i+1;j if(strcmp(da[i].tihao,da[j].tihao)>0) { temp=da[i];da[i]=da[j];da[j]=temp; } printf("\t\t========排序成功========\n"); } voidSaveText(Datadat[],intn)//保存函数 { inti; FILE*fp;/*指向文件的指针*/ if((fp=fopen("txl.txt","wb"))==NULL)/*打开文件,并判断打开是否正常*/ { printf("\t不能打开文件\n");/*没打开*/ exit (1);/*退出*/ } fprintf(fp,"%d",n);/*将记录数写入文件*/ fprintf(fp,"\r\n"); for(i=0;i { fprintf(fp,"%-8s%-6s",dat[i].tihao,dat[i].timu); fprintf(fp,"\r\n");/*将换行符号写入文件*/ } fclose(fp); } intLoadText(Datadat[])//载入函数 { inti,n; FILE*fp; if((fp=fopen("txl.txt","r"))==NULL) { printf("不能打开文件\n"); exit (1); } fscanf(fp,"%d",&n);/*读入记录数*/ for(i=0;i fscanf(fp,"%s%s\n",dat[i].tihao,dat[i].timu);/*按格式读入记录*/ fclose(fp); returnn;/*返回记录数*/ } intCharu(Datadat[],intn)//插入函数 { Datatemp;/*新插入记录信息*/ inti=0,j,k; chars[20]; do { printf("\t请插入您的数据\n"); printf("\t题号: "); scanf("\t%s",temp.tihao); for(k=0;k { if(strcmp(dat[k].tihao,temp.tihao)==0) { printf("\t-------该记录已存在,请重新输入! -------\n"); system("pause"); system("cls"); break; } } }while(strcmp(dat[k].tihao,temp.tihao)==0); printf("\t题目: "); scanf("\t%s",temp.timu); printf("\t请输入插入位置的题号: "); scanf("\t%s",s);/*输入插入位置的题号*/ while(strcmp(dat[i].tihao,s)! =0&&i if(i==n) { printf("\t------------题库中没有记录,请查询后再操作! -------------\n"); returnn; } for(i=0;strcmp(dat[i].tihao,s)! =0;i++); printf("\n\t\t***********插入成功! ************\n"); for(j=n-1;j>=i;j--)/*从最后一个结点开始向后移动一条*/ { strcpy(dat[j+1].tihao,dat[j].tihao);/*当前记录的题号拷贝到后一条*/ strcpy(dat[j+1].timu,dat[j].timu); } strcpy(dat[i].tihao,temp.tihao);/*将新插入记录的题号拷贝到第i个位置*/ strcpy(dat[i].timu,temp.timu); n++;/*记录数加1*/ returnn; } intShuru(Datadat[],intn)//输入函数 { inti=0; charch; while(ch! ='n'&&ch! ='N')//用来判断是否继续输入 { system("cls"); printf("\t题号: "); scanf("\t%s",dat[n+i].tihao); printf("\t题目: "); scanf("\t%s",dat[n+i].timu); printf("\n\t是否继续添加? (Y/N)"); scanf("\t%c",&ch); i++; } return(n+i);//其实输入除了N和n的任意键均能实现继续添加的功能 } voidList(Datadat[],intn)//显示函数 { inti; printf("========================共%d条记录============================\n",n); printf("┌─────────────────────────────┐\n");/*格式*/ printf("│题号│题目│\n"); printf("└─────────────────────────────┘\n"); for(i=0;i { printf("%2s\t%3s\n",dat[i].tihao,dat[i].timu);/*按格式输出*/ printf("───────────────────────────────\n"); } system("pause"); } intShanchu(Datadat[],intn)//删除函数 { chars[20];/*要删除记录的题号*/ inti=0,j; printf("\t请输入想删除记录中的题号: "); scanf("%s",s); while(strcmp(dat[i].tihao,s)! =0&&i if(i==n) { printf("\t题库中没有此题! \n"); return(n); } for(j=i;j { strcpy(dat[j].timu,dat[j+1].timu); strcpy(dat[j].tihao,dat[j+1].tihao); } printf("\t\t\t已经成功删除! \n"); return(n-1); } voidChazhao(Datadat[],intn)//查询函数 { intj; printf("\t\n请选择查询方式: \n"); printf("\t┌──────┐\n"); printf("\t│1------题号│\n"); printf("\t│0------返回│\n"); printf("\t└──────┘\n"); printf("请选择: "); scanf("%d",&j); if(j==1) { chars[20]; inti=0; printf("\t请输入想查询的题号: "); scanf("\t%s",s); while(strcmp(dat[i].tihao,s)! =0&&i if(i==n) { printf("\t题库中没有此题! \n"); return; } printf("\t此题内容\n"); printf("\t%5s\n",dat[i].timu); }; } voidBiangeng(Datadat[],intn)//修改函数 { chars[20]; inti=0; printf("\t请输入想修改的试题的题号: "); scanf("%s",s); while(strcmp(dat[i].tihao,s)! =0&&i if(i==n) { printf("\t题库中没有此题! \n"); return; } printf("\t题号: "); scanf("\t%s",dat[i].tihao); printf("\t题目: "); scanf("\t%s",dat[i].timu); printf("\n\t修改成功! "); } voidCopyText()//复制文件函数 { charout];/*目标文件名*/ inti,n; Datatemp[80]; FILE*fp,*fc; if((fp=fopen("txl.txt","rb"))==NULL)/*打开记录文件*/ { printf("\t\t不能打开文件\n");/*显示不能打开文件信息*/ exit (1);/*退出*/ } printf("\t\t输入目标文件名(例如c: \\out): "); scanf("%s",outfile); if((fc=fopen(outfile,"wb"))==NULL)/*打开目标文件*/ { printf("\t\t不能打开文件\n");/*显示不能打开文件信息*/ exit (1);/*退出*/ } fscanf(fp,"%d",&n);/*读出文件记录数*/ fprintf(fc,"%d",n);/*写入目标文件数*/ fprintf(fc,"\r\n");/*写入换行符*/ for(i=0;i { fscanf(fp,"%s%s\n",temp[i].tihao,temp[i].timu); fprintf(fc,"%-8s%-6s",temp[i].tihao,temp[i].timu); fprintf(fc,"\r\n");/*写入换行符*/ } fclose(fp);/*关闭源文件*/ fclose(fc);/*关闭目标文件*/ printf("\t\t您已成功复制文件! \n"); } /*主函数*/ voidmain() { intn=0; for(;;) { switch(menu_select()) { case1: system("cls"); n=Shuru(da,n); break; case2: system("cls"); intk; printf("\t\t\t======题库信息管理系统======\n"); printf("\t\t\t┌──────────┐\n"); printf("\t\t\t│1.显示全部题目│\n"); printf("\t\t\t│2.按题号排序信息│\n"); printf("\t\t\t│0.返回上一级菜单│\n"); printf("\t\t\t└──────────┘\n"); printf("\t\t\t============================\n"); printf("\n\t\t请选择: "); scanf("%d",&k); switch(k) { case1: //显示信息 system("cls"); List(da,n); break; case2: //题号排序 tihaosort(da,n); system("pause"); break; case0: ; }break; case3: system("cls"); intm; printf("\t\t\t=====题库信息管理系统=====\n"); printf("\t\t\t┌──────────┐\n"); printf("\t\t\t│1.题库信息的修改│\n"); printf("\t\t\t│2.题库信息的删除│\n"); printf("\t\t\t│3.题库信息的插入│\n"); printf("\t\t\t│0.返回│\n"); printf("\t\t\t└──────────┘\n"); printf("\t\t\t==========================\n"); printf("\n\t\t请选择: "); scanf("%d",&m); switch(m) { case1: system("cls"); Biangeng(da,n); printf("\t"); system("pause"); break; case2: system("cls"); n=Shanchu(da,n);/*删除记录*/ printf("\t"); system("pause"); break; case3: system("cls"); n=Charu(da,n);//插入函数 printf("\t"); system("pause"); break; case0: ; }break; case4: system("cls"); printf("\n\t*****在题库中查找记录******\n"); Chazhao(da,n); printf("\t"); system("pause"); break; case5: system("cls"); intx; printf("\t\t\t=====题库信息管理系统=====\n"); printf("\t\t\t┌──────────┐\n"); printf("\t\t\t│1.题库信息的载入│\n"); printf("\t\t\t│2.题库信息的保存│\n"); printf("\t\t\t│3.题库信息的复制│\n"); printf("\t\t\t│0.返回│\n"); printf("\t\t\t└──────────┘\n"); printf("\t\t\t==========================\n"); printf("\n\t\t请选择: "); scanf("%d",&x); switch(x) { case1: n=LoadText(da); printf("\t\t您已经成功的将题目导入到题库! \n"); printf("\t"); system("pause"); break; case2: printf("\t\t=========题库的保存=========\n"); SaveText(da,n); printf("\n\t\t保存成功\n"); printf("\t"); system("pause"); break; case3: CopyText();/*保存数据*/ printf("\t"); system("pause"); break; case0: ; }break; case0: printf("\n\t\t\t感谢您的使用,再见! \n"); exit(0); } } } 5.程序运行结果 (可截屏程序运行界面。 ) 1、主界面显示 2、试题的输入 3、函数的保存 4、试题库的载入 5,、试题的浏览与查询 6、函数的修改与删除 6.设计总结 (重点从设计方法、实现技术、功能等几方面总结。 ) 通过此次的程序设计课学到了很多,对C语言也有了更好的了解,同时也对C程序的操作和调试也有了进一步的掌握。 尽管程序中的一部分是从网上复制过来的,但其中都加入了自己手动修改的元素,并且把一些以前不懂的弄懂了,总之经过了几天的奋斗我们都掌握了很多知识,收获了很多。 开学的第一天,老师们就让我们分组进行程序设计,题目发下来顿时怵了,只是几个人在一起商量了一下把程序的大致框架熟悉了一下,但由于是头一次搞,根本不知道从哪些地方着手,原本学到的只是到真正运用的时候才显得那么的苍白,就这样整整一个上午的时间什么进展都没有,我们只是在那里看书,熟悉知识。 下午有网了,我们便取巧XX了一个程序进行调试,目的是熟悉分析程序的运转效果,查询整理我们所需要的应用函数,于是才渐渐摸清了我们要进行的方向。 首先,我们要进行的是主体框架的设置,为了节省时间,我们拟在一个运行程序里进行删减,从整体中将“肉”剔除,然后得到我们的主体,刚开始不懂得,只知道将哪来的代码胡乱的删去了事,后来发现程序虽然没错了,但只剩下了一副空壳,原有的功能都没有了。 然后,我们商议给这副“骨架”填“肉”,因为这我们也吃了不少口头,拼命看书了解掌握相应函数如save&load的相关函数,网上查找相应函数的用法以和问题解决办法,再不行的我们就请教老师,也因此吃够了BUG的苦头。 终于,经历了九九八十一难,我们提前完成了程序的调试,欢呼声~~~~ 我们从中遇到的问题有N++个,我们也学到了很多知识。 其一、我们刚开始进行试题输入的时候,总是输入后杳无音讯,查无所踪,无法进行浏览和查询,我们网上查询才知道是出在了文件的保存和载入的问题,于是我们inquire出s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 题库 管理 系统