程序设计基础课程设计报告班级:计算机科学与技术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.源程序代码清单#includestdio.h#includestdlib.h#includestring.htypedefstruct{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;in;++i)da[i]=dat[i];for(i=0;in-1;++i)for(j=i+1;jn;++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;in;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;in;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;kn;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&&in)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;in;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&&in)i++;/*查找要删除的记录题号*/if(i==n){printf(\t题库中没有此题!\n);return(n);}for(j=i;jn-1;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&&in)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&&in)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()//复制文件函数{charoutfile[20];/*目标文件名*/inti,n;Datatemp[80];FILE*fp,*fc;if((fp=fopen(txl.txt,rb))==NULL)/*打开记录文件*/{printf(\t\t不能打开文件\n);/*显示不能打开文件信息*/exit(1);/*退出*/}printf(\t\t输入目标文件名(例如c:\\outfile.txt):);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;in;i++){fsca