1、目 录一、设计任务书3二、本组课题及本人任务3三、程序功效介绍4四、主体内容41设计分析42程序结构53各模块功效及程序说明54. 源程序65操作方法.176试验结果187设计体会22五、附录231.步骤图23 2.过程列表26一、设计任务书1.目标1)复习、巩固C语言基础知识,深入加深对C语言了解和掌握。2)课程设计为学生提供了一个既动手又动脑,独立实践机会,将书本上理论知识和实际有机结合起来,锻炼学生分析处理实际问题能力。提升学生适应实际,实践编程能力。3)培养学生在项目开发中团体合作精神、创新意识及能力。2.要求:1)对系统进行功效模块分析、控制模块分析正确,符合课题要求,实现对应功效;
2、能够加以其它功效或修饰,使程序愈加完善、合理。2)系统设计要实用,编程简练,可用,功效全方面。3)说明书、步骤图要清楚。4)统计设计情况(备查,也为编写设计说明书作好准备)。5)要求采取模块化程序设计方法,及锯齿型书写格式,要求上机调试经过和按设计汇报格式。6)设计上交内容:设计汇报一份(按格式书写);源程序一份,能编译成可实施文件并能正常运行。二、本组课题及本人任务课题:图书信息管理系统设计图书信息包含:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功效:1.系统以菜单方法工作。2.图书信息录入功效(图书信息用文件保留)输入。3.图书信息浏
3、览功效输出。4.查询和排序功效:(最少一个查询方法)算法。a. 按书名查。b.按作者名查询。本人任务:负责设计和编写图书信息管理系统修改图书信息部分。三、程序功效介绍 本系统是以visual C+ 6.0 环境下用C语言开发一个图书管理系统。本系统含有图书信息录入、浏览、删除、修改、查找(包含按书名、作者查找)功效。其中图书信息包含登录号、书名、作者名、分类号、出版单位、出版时间、价格,而且对信息以文件形式储存。另外本系统含有实用性同时代码逻辑谨慎清楚易懂,且界面美观。四、主体内容1设计分析本系统共分为一个主页面模块(主函数部分),五个功效模块(功效函数)分别为图书信息录入、图书信息浏览、图书
4、信息查询、图书信息删除、图书信息修改。设计时应该先写好主函数、定义好全局变量和功效函数,再对五个功效函数进行设计。在每个功效函数和主函数应中加入控制条件使用户能够随时退出系统,并在用户输入指令错误时候给提醒和退出选项。小组中五个人分别负担一个功效模块进行设计。并在每个人设计完成后经过主函数进行链接调试正确后方为完成。2程序结构(步骤图)系统运行选择功效1.信息录入键入信息2.信息浏览返回主菜单返回主菜单3.信息查询按书名查找按作者查找返回主菜单输入书名输入作者信息存在?是否输出信息返回主菜单4.信息删除输入删出信息代号输出删除后信息返回主菜单5.信息修改输入修改信息代号修改信息存在?是信息修改
5、否返回主菜单输出修改后信息6.退出系统3各模块功效及程序说明A、录入模块:本模块关键实施信息录入功效。B、浏览模块:本模块关键是实施把已经有信息输出浏览功效。C、查询模块:本模块关键是实施按书名和按作者名查找图书信息功效。D、删除模块:本模块关键实施删除图书信息功效。E、修改模块(本人设计模块):本模块关键实施图书信息修改功效。在用户选择该功效后。首先,系统会弹出已存在信息列表并让用户选择所要修改信息项目。然后,当用户选定要修改信息后会弹出信息目录,用户需按次序依次修改信息内容。最好当全部信息项目全部修改完成以后,按回车键会在窗口上输出修改后内容。4. 源程序#include#include#
6、include#include#define MAX 100struct Studentint num;/*登录号*/char name100;/*书名*/char author100;/*作者名*/char fn100;/*分类号*/char place100;/*出版单位*/char day100;/*出版时间*/float money;/*价格*/stuMAX;main()/*主函数*/void Input();/*输入*/void Display();/*输出*/void Find();/*查找*/void Modify();/*删除*/void Change();/*修改*/int
7、n; for(;)printf(n); printf(n); printf( n); printf( 欢迎来到图书信息管理系统 n); printf( n); printf( n);printf( 主菜单 n);printf( n); printf( 1.图书信息录入 n); printf( n);printf( 2.图书信息浏览 n); printf( n);printf( 3.图书信息查询 n); printf( n);printf( 4.图书信息删除 n); printf( n);printf( 5.图书信息修改 n); printf( n);printf( 6.退出系统 n); pri
8、ntf( n); printf(nn); printf(请输入选择项(1-6):); scanf(%d,&n); printf(nnnn); if(n0&n7)switch(n) case 1:Input();break; case 2:Display();break; case 3:Find();break; case 4:Modify();break; case 5:Change();break; case 6:printf(n); printf( n); printf( 谢谢使用! n); printf( 再见! n); printf( n); printf(n); exit(0); e
9、lse printf(n); printf( n); printf( 输入错误! n); printf( 请退出! n); printf( n); printf(n); break;void Find()/*查找*/ FILE *fp;int i;int choose,t;char ans100; doprintf(1.按书名查找n);printf(2.按作者名查找n);printf(返回主菜单(其它数字)n);scanf(%d,&choose);if(choose=1)printf(输入所查书名:n);scanf(%s,ans);t=-1;if(choose=1)for(i=0;iMAX;i
10、+) if(strcmp(ans,stui.name)=0) t=i; fp=fopen(student,rb);for(i=0;fread(&stui,sizeof(struct Student),1,fp)=1;i+)printf(%d %s %s %s %s %s %fn,stut.num,stut.name,stut.author,stut.fn,stut.place,stut.day,stut.money);if(t=-1) printf(不存在该信息n);else if(choose=2)printf(输入所查作者名:n);scanf(%s,ans);t=-1;if(choose=
11、2)for(i=0;iMAX;i+)if(strcmp(ans,stui.author)=0) t=i; fp=fopen(student,rb);for(i=0;fread(&stui,sizeof(struct Student),1,fp)=1;i+) printf(%d %s %s %s %s %s %fn,stut.num,stut.name,stut.author,stut.fn,stut.place,stut.day,stut.money);if(t=-1) printf(不存在该信息n);else return;while(1);void Display()/*输出*/FILE
12、*fp; int i; fp=fopen(student,rb); printf(n); printf( 图书列表n); printf(-n); printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n); printf(-n); for(i=0;fread(&stui,sizeof(struct Student),1,fp)=1;i+)printf(%6d %8s %8s %8s %8s %8s %8.2fn,stui.num,stui.name,stui.author,stui.fn,stui.place,stui.day,stui.money);fclose(fp);voi
13、d Input()/*输入*/FILE *fp;int n;fp=fopen(student,ab+); for(n=0;nMAX;n+)printf(n=%d 输入序号n(当输入n=-1时,返回),n=,n+); scanf(%d,&n);if(n=-1) fclose(fp);return;elseprintf(请输入登录号 书名 作者名 分类号 出版单位 出版时间 价格n);scanf(%d%s%s%s%s%s%f,&stun.num,stun.name,stun.author,stun.fn,stun.place,stun.day,&stun.money); fwrite(&stun,
14、sizeof(struct Student),1,fp);fclose(fp);void Modify()/*删除*/FILE *fp;int i,flag,n,s,j; fp=fopen(student,rb+); rewind(fp); printf( 图书列表n); printf(-n); printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n); printf(-n); for(i=0;fread(&stui,sizeof(struct Student),1,fp)=1;i+) printf(%6d %8s %8s %8s %8s %8s %8.2fn,stui.num
15、,stui.name,stui.author,stui.fn,stui.place,stui.day,stui.money); printf(n); n=i;printf(输入待删除图书号:n);scanf(%d,&s);for(i=0,flag=1;flag∈i+)if(s=stui.num)for(j=i;jn-1;j+)stuj.num=stuj+1.num; strcpy(stuj.name,stuj+1.name); strcpy(stuj.author,stuj+1.author); strcpy(stuj.fn,stuj+1.fn); strcpy(stuj.place,s
16、tuj+1.place);strcpy(stuj.day,stuj+1.day);stuj.money=stuj+1.money;flag=0;if(!flag)n=n-1;else printf(没有此号n);fp=fopen(student,wb);for(i=0;in;i+)fwrite(&stui,sizeof(struct Student),1,fp); fclose(fp);fp=fopen(student,r); printf( 图书列表n); printf(-n); printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n); printf(-n); for(i=
17、0;in;i+) fread(&stui,sizeof(struct Student),1,fp); printf(%6d %8s %8s %8s %8s %8s %8.2fn,stui.num,stui.name,stui.author,stui.fn,stui.place,stui.day,stui.money); printf(n); fclose(fp);void Change()/*修改*/ FILE *fp; int i,num,n; int flag=0; fp=fopen(student,rb); printf(n); printf( 图书列表n); printf(-n); p
18、rintf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n); printf(-n); for(i=0;fread(&stui,sizeof(struct Student),1,fp)=1;i+)printf(%6d %8s %8s %8s %8s %8s %8.2fn,stui.num,stui.name,stui.author,stui.fn,stui.place,stui.day,stui.money);fclose(fp); printf(请输入要修改图书号:); scanf(%d,&num); for(i=0;i=MAX;i+) if(stui.num=num) print
19、f( 图书列表n); printf(-n); printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n); printf(-n); printf(%6d %8s %8s %8s %8s %8s %8.2fn,stui.num,stui.name,stui.author,stui.fn,stui.place,stui.day,stui.money); printf(-nn); n=i; flag=1; break; if(flag=0)printf(n); printf( 输入错误!n); printf( 请返回!n); printf(n); return; printf(nnn)
20、; fp=fopen(student,rb+); fseek(fp,n*sizeof(struct Student),0); printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n); scanf(%d%s%s%s%s%s%f,&stun.num,stun.name,stun.author,stun.fn,stun.place,stun.day,&stun.money); fwrite(&stui,sizeof(struct Student),1,fp); fclose(fp); fp=fopen(student,rb); printf( 图书列表n); printf(-n);
21、 printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n); printf(-n); for(i=0;fread(&stui,sizeof(struct Student),1,fp)=1;i+) printf(%6d %8s %8s %8s %8s %8s %8.2fn,stui.num,stui.name,stui.author,stui.fn,stui.place,stui.day,stui.money); printf(-nn); fclose(fp);5操作方法(步骤)第一步:双击打包好.exe程序,打开程序。第二步:依据窗口提醒内容作出选择。第三步:依据弹出二级菜单作
22、出选择。第四步:依据所选内容进行对应操作。第五步:操作完成,依据提醒返回主菜单会直接退出该系统。6试验结果A、图书信息录入:数据输入:数据输出:B、图书信息浏览输入数据:数据输出:C、图书信息查询输入数据:输出数据:D、图书信息删除:输入数据:输出数据:E、图书信息修改输入数据:输出数据:F、系统退出输入数据:数据输出:7设计体会。在这一周程序设计实习当中并不是一帆风顺。刚开始到电脑面前听完老师讲了一大堆,我根本就不知道要做什么,用什么做。 我并没有被眼前一点小困难所击倒,我相信困难总是有措施处理。于是开始两天我就在网上找多种相关文章、视频。刚开始我就只是看着网上东西照猫画虎做部分小程序,慢慢
23、经过这些模拟我也逐步懂了部分东西。经过两天原始知识积累后,我开始尝试着根据自己想法做了部分小系统。起初会出现很多问题,不是这儿少了就是那错了。在这么那样错误中我明白编程是一件很严谨事,容不得半点错误,一步走错,全盘皆输!在出现错误时我通常是上网搜索相关答案,听听大家想法,往往一个问题处理方法是多个多样,各自有其精妙之处。有处理方法浅显易懂,不过易出现漏洞;有复杂难懂,不过逻辑紧密,无丝毫破绽。编程是一门逻辑游戏,一但了解其游戏规则,便发觉乐趣无穷。有时候自己有很多想法,但因为自己水平有限不能很好地实现,每到那时候我就有一个强烈愿望想要把问题处理,做出自己想东西。一但处理了问题,那种愉快非亲身经
24、历者不能感受! 说实话,在网上即使信息很多,不过会让人晕了头脑,做起来也不是那么轻易。可能我程序比起她人来说可能会有些许不足,不过那个个代码全部是出自我手,每一寸屏幕全部是我自己想法,全部是我自己。我认为不成功没关系,关键是要有自己努力成功心,而要成功光是剽窃她人是不行,得拿出自己东西,自己创新,要勇于尝试! 王杰 .7.9七、附录1.步骤图主页面:信息录入:信息浏览:信息查询:信息删除:信息修改:系统退出:2.关键过程列表A、程序开头定义:#include:#include是编译预处理指令,就是在编译前将stdio.h这个文件里函数全部添加到你写cpp文件中。#include:在编译前C语言
25、里面相关字符数组函数定义头文件,就是在编译前将stdio.h这个文件里函数全部添加到你写cpp文件中。#include:在编译前将stdlib.h这个文件里函数全部添加到你写cpp文件中。#include:在编译前将conio.h这个文件里函数全部添加到你写cpp文件中。#define MAX 100:#define 就是在编译器编译之前对代码进行字符串替换,即是把MAX换成100.B、struct Student:结构体,定义结构体是整个程序共用体,即是该结构体可在每个模块中不从新定义就使用。C、main()主函数模块关键变量、函数:void Input():自定义输入函数。void Dis
26、play():自定义输出函数。void Find():自定义查找函数。void Modify():自定义删除函数。void Change():自定义修改函数。for():循环函数。switch():选择函数,判定用户输入数字进行功效选择。exit():退出循环函数。D、void Input()输入模块关键变量、函数:FILE *fp:申明fp是指针,用来指向FILE类型对象。fopen():fopen函数用来打开一个文件。printf():输出函数,以程序员要求数据类型把数据输出到窗口上。scanf():输入函数,以程序员要求数据类型输入数据。if()else:条件判定函数。fclose():
27、关闭文件函数,功效为关闭打开文件,以预防数据丢失。fwrite():向文件写入一个数据块。sizeof():以字节形式给出了其操作数存放大小。for():循环函数。E、void Display()输出函数关键变量、函数: FILE *fp:申明fp是指针,用来指向FILE类型对象。fread():在文件中读出一个数据块赋值给某一个变量fopen():fopen函数用来打开一个文件。fclose():关闭文件函数,功效为关闭打开文件,以预防数据丢失。printf():输出函数,以程序员要求数据类型把数据输出到窗口上。scanf():输入函数,以程序员要求数据类型输入数据。if()else:条件判
28、定函数。for():循环函数。F、void Find()查找函数关键变量和函数: FILE *fp:申明fp是指针,用来指向FILE类型对象。 char ans100:一个定义为字符型有100个元素数组。strcmp(,):比较函数。比较逗号两边值是否一样,假如一样返回值为0,不然为1 。do.while:循环函数,当函数返回值为1时退出循环,不然继续循环。fopen():fopen函数用来打开一个文件。fclose():关闭文件函数,功效为关闭打开文件,以预防数据丢失。if()else:条件判定函数。for():循环函数。printf():输出函数,以程序员要求数据类型把数据输出到窗口上。s
29、canf():输入函数,以程序员要求数据类型输入数据。G、void Modify()删除函数关键变量和函数:fopen():fopen函数用来打开一个文件。fclose():关闭文件函数,功效为关闭打开文件,以预防数据丢失。rewind():将文件指针重新指向一个流开头。if()else:条件判定函数。for():循环函数。printf():输出函数,以程序员要求数据类型把数据输出到窗口上。scanf():输入函数,以程序员要求数据类型输入数据。sizeof():以字节形式给出了其操作数存放大小。H、void Change()修改函数关键变量和函数: fopen():fopen函数用来打开一个文件。fclose():关闭文件函数,功效为关闭打开文件,以预防数据丢失。fseek(): 重定位流(数据流/文件)上文件内部位置指针。 fwrite():向文件写入一个数据块。if()else:条件判定函数。for():循环函数。printf():输出函数,以程序员要求数据类型把数据输出到窗口上。scanf():输入函数,以程序员要求数据类型输入数据。sizeof():以字节形式给出了其操作数存放大小。
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100