C语言图书管理系统程序设计报告_第1页
C语言图书管理系统程序设计报告_第2页
C语言图书管理系统程序设计报告_第3页
C语言图书管理系统程序设计报告_第4页
C语言图书管理系统程序设计报告_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

fop

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论