C语言图书管理系统程序设计报告(共20页).docx
精选优质文档-倾情为你奉上目录33444556.171822232326一、设计任务书1.目的1)复习、巩固C语言的基础知识,进一步加深对C语言的理解和掌握。2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。3)培养学生在项目开发中团队合作精神、创新意识及能力。2.要求:1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理。2)系统设计要实用,编程简练,可用,功能全面。3)说明书、流程图要清楚。4)记录设计情况(备查,也为编写设计说明书作好准备)。5)要求采用模块化程序设计方法,及锯齿型书写格式,要求上机调试通过和按设计报告格式。6)设计上交内容:设计报告一份(按格式书写);源程序一份,能编译成可执行文件并能正常运行。二、本组课题及本人任务课题:图书信息管理系统设计图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:1.系统以菜单方式工作。2.图书信息录入功能(图书信息用文件保存)输入。3.图书信息浏览功能输出。4.查询和排序功能:(至少一种查询方式)算法。a.按书名查。b.按作者名查询。本人任务:负责设计和编写图书信息管理系统的修改图书信息部分。三、程序功能简介本系统是以visualC+环境下用C语言开发的一个图书管理系统。本系统具有图书信息录入、浏览、删除、修改、查找(包括按书名、作者查找)功能。其中图书信息包括登录号、书名、作者名、分类号、出版单位、出版时间、价格,并且对信息以文件形式储存。另外本系统具备实用性的同时代码逻辑谨慎清晰易懂,且界面美观。四、主体内容1设计分析本系统共分为一个主页面模块(主函数部分),五个功能模块(功能函数)分别为图书信息录入、图书信息浏览、图书信息查询、图书信息删除、图书信息修改。设计时应该先写好主函数、定义好全局变量和功能函数,再对五个功能函数进行设计。在每个功能函数和主函数应中加入控制条件使用户可以随时退出系统,并在用户输入指令错误的时候给予提醒和退出选项。小组中的五个人分别承担一个功能模块进行设计。并在每个人设计完成后通过主函数进行链接调试正确后方为完成。2程序结构(流程图)系统运行选择功能1.信息录入键入信息2.信息浏览返回主菜单返回主菜单3.信息查询按书名查找按作者查找返回主菜单输入书名输入作者信息存在?是否输出信息返回主菜单4.信息删除输入删出信息代号输出删除后的信息返回主菜单5.信息修改输入修改信息代号修改信息存在?是信息修改否返回主菜单输出修改后的信息6.退出系统3各模块的功能及程序说明A、录入模块:本模块主要执行信息录入功能。B、浏览模块:本模块主要是执行把已有信息输出浏览功能。C、查询模块:本模块主要是执行按书名和按作者名查找图书信息的功能。D、删除模块:本模块主要执行删除图书信息的功能。E、修改模块(本人设计模块):本模块主要执行图书信息修改功能。在用户选择该功能后。首先,系统会弹出已存在信息列表并让用户选择所要修改的信息项目。然后,当用户选定要修改的信息后会弹出信息目录,用户需按顺序依次修改信息内容。最好当所有信息项目都修改完成之后,按回车键会在窗口上输出修改后的内容。4.源程序#include<>#include<>#include<>#include<>#defineMAX100structStudentintnum;/*登录号*/charname100;/*书名*/charauthor100;/*作者名*/charfn100;/*分类号*/charplace100;/*出版单位*/charday100;/*出版时间*/floatmoney;/*价格*/stuMAX;main()/*主函数*/voidInput();/*输入*/voidDisplay();/*输出*/voidFind();/*查找*/voidModify();/*删除*/voidChange();/*修改*/intn;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");printf("n");printf("nn");printf("请输入选择项(1-6):");scanf("%d",&n);printf("nnnn");if(n>0&&n<7)switch(n)case1:Input();break;case2:Display();break;case3:Find();break;case4:Modify();break;case5:Change();break;case6:printf("n");printf("n");printf("谢谢使用!n");printf("再见!n");printf("n");printf("n");exit(0);elseprintf("n");printf("n");printf("输入错误!n");printf("请退出!n");printf("n");printf("n");break;voidFind()/*查找*/FILE*fp;inti;intchoose,t;charans100;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;i<MAX;i+)if(strcmp(ans,stui.name)=0)t=i;fp=fopen("student","rb");for(i=0;fread(&stui,sizeof(structStudent),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");elseif(choose=2)printf("输入所查作者名:n");scanf("%s",ans);t=-1;if(choose=2)for(i=0;i<MAX;i+)if(strcmp(ans,stui.author)=0)t=i;fp=fopen("student","rb");for(i=0;fread(&stui,sizeof(structStudent),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");elsereturn;while(1);voidDisplay()/*输出*/FILE*fp;inti;fp=fopen("student","rb");printf("n");printf("图书列表n");printf("-n");printf("登录号书名作者名分类号出版单位出版时间价格n");printf("-n");for(i=0;fread(&stui,sizeof(structStudent),1,fp)=1;i+)printf("%6d%8s%8s%8s%8s%8s%n",stui.num,stui.name,stui.author,stui.fn,stui.place,stui.day,stui.money);fclose(fp);voidInput()/*输入*/FILE*fp;intn;fp=fopen("student","ab+");for(n=0;n<MAX;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,sizeof(structStudent),1,fp);fclose(fp);voidModify()/*删除*/FILE*fp;inti,flag,n,s,j;fp=fopen("student","rb+");rewind(fp);printf("图书列表n");printf("-n");printf("登录号书名作者名分类号出版单位出版时间价格n");printf("-n");for(i=0;fread(&stui,sizeof(structStudent),1,fp)=1;i+)printf("%6d%8s%8s%8s%8s%8s%n",stui.num,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<n;i+)if(s=stui.num)for(j=i;j<n-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,stuj+1.place);strcpy(stuj.day,stuj+1.day);stuj.money=stuj+1.money;flag=0;if(!flag)n=n-1;elseprintf("没有此号n");fp=fopen("student","wb");for(i=0;i<n;i+)fwrite(&stui,sizeof(structStudent),1,fp);fclose(fp);fp=fopen("student","r");printf("图书列表n");printf("-n");printf("登录号书名作者名分类号出版单位出版时间价格n");printf("-n");for(i=0;i<n;i+)fread(&stui,sizeof(structStudent),1,fp);printf("%6d%8s%8s%8s%8s%8s%n",stui.num,stui.name,stui.author,stui.fn,stui.place,stui.day,stui.money);printf("n");fclose(fp);voidChange()/*修改*/FILE*fp;inti,num,n;intflag=0;fp=fopen("student","rb");printf("n");printf("图书列表n");printf("-n");printf("登录号书名作者名分类号出版单位出版时间价格n");printf("-n");for(i=0;fread(&stui,sizeof(structStudent),1,fp)=1;i+)printf("%6d%8s%8s%8s%8s%8s%n",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)printf("图书列表n");printf("-n");printf("登录号书名作者名分类号出版单位出版时间价格n");printf("-n");printf("%6d%8s%8s%8s%8s%8s%n",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");fp=fopen("student","rb+");fseek(fp,n*sizeof(structStudent),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(structStudent),1,fp);fclose(fp);fp=fopen("student","rb");printf("图书列表n");printf("-n");printf("登录号书名作者名分类号出版单位出版时间价格n");printf("-n");for(i=0;fread(&stui,sizeof(structStudent),1,fp)=1;i+)printf("%6d%8s%8s%8s%8s%8s%n",stui.num,stui.name,stui.author,stui.fn,stui.place,stui.day,stui.money);printf("-nn");fclose(fp);5操作方法(流程)第一步:双击打包好的.exe程序,打开程序。第二步:根据窗口提示内容作出选择。第三步:根据弹出的二级菜单作出选择。第四步:根据所选内容进行相应的操作。第五步:操作完毕,根据提示返回主菜单会直接退出该系统。6试验结果A、图书信息录入:数据输入:数据输出:B、图书信息浏览输入数据:数据输出:C、图书信息查询输入数据:输出数据:D、图书信息删除:输入数据:输出数据:E、图书信息修改输入数据:输出数据:F、系统退出输入数据:数据输出:7设计体会。在这一周的程序设计实习当中并不是一帆风顺的。刚开始到电脑面前听完老师讲了一大堆,我根本就不知道要做什么,用什么做。我并没有被眼前的一点小困难所击倒,我相信困难总是有办法解决的。于是开始的两天我就在网上找各种相关的文章、视频。刚开始我就只是看着网上的东西照猫画虎的做一些小程序,慢慢的通过这些模仿我也渐渐的懂了一些东西。通过两天的原始知识积累后,我开始尝试着按照自己的想法做了一些小系统。起初会出现很多问题,不是这儿少了就是那错了。在这样那样的错误中我明白编程是一件很严谨的事,容不得半点错误,一步走错,全盘皆输!在出现错误时我通常是上网搜索相关的答案,听听大家的想法,往往一个问题的解决方法是多种多样的,各自有其精妙之处。有的解决方法浅显易懂,但是易出现漏洞;有的复杂难懂,但是逻辑紧密,无丝毫破绽。编程是一门逻辑的游戏,一但了解其游戏规则,便发现乐趣无穷。有时候自己有很多的想法,但由于自己的水平有限不能很好地实现,每到那时候我就有一种强烈的愿望想要把问题解决,做出自己想的东西。一但解决了问题,那种快乐非亲身经历者不能感受!说实话,在网上虽然信息很多,但是会让人晕了头脑,做起来也不是那么容易的。也许我的程序比起别人的来说可能会有些许不足,但是那个个代码都是出自我手,每一寸屏幕都是我自己的想法,都是我自己的。我觉得不成功没关系,重要的是要有自己努力成功的心,而要成功光是抄袭别人的是不行的,得拿出自己的东西,自己的创新,要敢于尝试!王杰七、附录1.流程图主页面:信息录入:信息浏览:信息查询:信息删除:信息修改:系统退出:2.主要过程列表A、程序开头定义:#include<>:#include是编译预处理指令,就是在编译前将这个文件里的函数都添加到你写的cpp文件中。#include<>:在编译前C语言里面关于字符数组的函数定义的头文件,就是在编译前将这个文件里的函数都添加到你写的cpp文件中。#include<>:在编译前将这个文件里的函数都添加到你写的cpp文件中。#include<>:在编译前将这个文件里的函数都添加到你写的cpp文件中。#defineMAX100:#define就是在编译器编译之前对代码进行字符串替换,即是把MAX换成100.B、structStudent:结构体,定义的结构体是整个程序的共用体,即是该结构体可在每个模块中不从新定义就使用。C、main()主函数模块主要变量、函数:voidInput():自定义输入函数。voidDisplay():自定义输出函数。voidFind():自定义查找函数。voidModify():自定义删除函数。voidChange():自定义修改函数。for():循环函数。switch():选择函数,判断用户输入的数字进行功能选择。exit():退出循环函数。D、voidInput()输入模块主要变量、函数:FILE*fp:声明fp是指针,用来指向FILE类型的对象。fopen():?fopen函数用来打开一个文件。printf():输出函数,以程序员规定数据类型把数据输出到窗口上。scanf():输入函数,以程序员规定的的数据类型输入数据。if()else:条件判断函数。fclose():关闭文件的函数,功能为关闭打开的文件,以防止数据丢失。fwrite():向文件写入一个数据块。sizeof():以字节形式给出了其操作数的存储大小。for():循环函数。E、voidDisplay()输出函数主要变量、函数:FILE*fp:声明fp是指针,用来指向FILE类型的对象。fread():在文件中读出一个数据块赋值给某一个变量fopen():?fopen函数用来打开一个文件。fclose():关闭文件的函数,功能为关闭打开的文件,以防止数据丢失。printf():输出函数,以程序员规定数据类型把数据输出到窗口上。scanf():输入函数,以程序员规定的的数据类型输入数据。if()else:条件判断函数。for():循环函数。F、voidFind()查找函数主要的变量和函数:FILE*fp:声明fp是指针,用来指向FILE类型的对象。charans100:一个定义为字符型的有100个元素的数组。strcmp(,):比较函数。比较逗号两边的值是否一样,如果一样返回值为0,否则为1。do.while:循环函数,当函数返回值为1时退出循环,否则继续循环。fopen():?fopen函数用来打开一个文件。fclose():关闭文件的函数,功能为关闭打开的文件,以防止数据丢失。if()else:条件判断函数。for():循环函数。printf():输出函数,以程序员规定数据类型把数据输出到窗口上。scanf():输入函数,以程序员规定的的数据类型输入数据。G、voidModify()删除函数主要变量和函数:fopen():?fopen函数用来打开一个文件。fclose():关闭文件的函数,功能为关闭打开的文件,以防止数据丢失。rewind():将文件指针重新指向一个流的开头。if()else:条件判断函数。for():循环函数。printf():输出函数,以程序员规定数据类型把数据输出到窗口上。scanf():输入函数,以程序员规定的的数据类型输入数据。sizeof():以字节形式给出了其操作数的存储大小。H、voidChange()修改函数主要变量和函数:fopen():?fopen函数用来打开一个文件。fclose():关闭文件的函数,功能为关闭打开的文件,以防止数据丢失。fseek():流(/文件)上的内部位置。fwrite():向文件写入一个数据块。if()else:条件判断函数。for():循环函数。printf():输出函数,以程序员规定数据类型把数据输出到窗口上。scanf():输入函数,以程序员规定的的数据类型输入数据。sizeof():以字节形式给出了其操作数的存储大小。专心-专注-专业