C语言程序设计----图书信息管理系统_第1页
C语言程序设计----图书信息管理系统_第2页
C语言程序设计----图书信息管理系统_第3页
C语言程序设计----图书信息管理系统_第4页
C语言程序设计----图书信息管理系统_第5页
免费预览已结束,剩余21页可下载查看

下载本文档

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

文档简介

1、褊州攵就义学?程序设计根底C»课程设计报告图书信息治理系统学生姓名:朱斌学号:202111354班级:电力工程与治理1201班指导老师:邓伟华日期:2021.07.05兰州交通大学新能源与动力工程学院C语言课程设计报告一、设计目标1二、总体设计2三、详细设计3五、分析及结论错误!未定义书签.六、参考文献10七、附录11源程序清单11、设计目标图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等.设计的图书信息治理系统,应当具备能提供以下功能:1、系统以菜单方式工作2、图书信息录入功能一一输入3、图书信息浏览功能一一输出4、图书信息查询功能一一算法查询方式:1按书名查

2、询.2.按作者名查询5、图书信息的删除与修改、总体设计1 .程序设计组成框图2.程序流程图三、详细设计1、系统登录模块(f1()本函数由朱斌设1)函数的功能:验证治理员信息,进入菜单功能界面2)函数的入口:从main()的switch()结构中进入,即choice的值为1时进入函数,然后提示用户通过键盘对输入治理员账户及密码.3)函数调用关系:被主函数调用.由switch()开关结构中进入,并在文中无返回值的空值void函数.4)函数的出口:当验证失败,提示重新输入.当验证成功,通过“ENTER键,跳出switch()开关函数,进入菜单功能模块,继续执行选择结构.程序流程图:图书登录系统界面2

3、 .菜单功能选择模块(f2()本函数由周勇设计1)函数功能:主要作用是提示用户操作,表达模块化思想,主要是显示出菜单让用户选择要进行的任务2)函数入口:从主函数void中的adm_servelist()进入函数,这是直接被主函数void()调用的.3)函数调用关系:被主函数调用.并在文中无返回值的空值void函数.4)函数的出口:执行完所有的printf()函数后自动退出该函数.主函数的流程图2-删除图书4-信息咨询一创立图书M州交通大学图书信息治理系统:士-添加图书S3-信息浏览:修改图书XMXHHXWtKXHXHXJCXXHXXKXXJtXXXXXJCXHJCXXXiMXJCXX请输入所选

4、择的呼号虫.菜单界面3 .修改与删除模块(f3()本函数由王文模设计图书删除1)函数功能:利用while循环和if语句和scanfgetcharsearchchangedel函数,完成对图书信息(分类名出版单位出版时间价格)的修改和删除2)函数入口:从主函数main()中的system("cls");/*清屏命令*/menu();/*菜单函数提示用户怎样选择*/进入函数,这是直接被主函数main()调用的.3)调用关系:voidchange(intx)是改变图书信息,它里面又调用了book_search();4)函数出口:执行完所有的printf()函数后自动退出该函数.程

5、序框架图删除功能*J输入登录号删除一用"与已进行替换荒成删除功能4结束a图书修改该模块实现根据用户需求,将需要修改的图书名输入,进彳ffor循环查找是否有此书,假设无,那么显示未找到,退出,假设有,那么显示输入新的图书信息,开始输入修改的信息,进行for循环开始录入,替换原文件信息结束显示“修改成功号版格编出价名全书别改琪推258间改名时修弃会放-,13603C:Eociuentsand£©5%式2(1>111运十131:.1桌面新晁文件夹朱斌.工©清萍择你爱修改的僖息编号博物入新编号:皿打加1隆法成珈是否将修改后的信息保存到文件中?犷心旬存成珈图

6、书修改界面图书删除界面4 .图书信息浏览(f4()本函数由张旭东设计1)函数的功能:显示图书的信息(编号价格作者出版单位出版时间类别)2)函数的入口:从主函数main()中的system("cls");/*清屏命令*/menu();/*菜单函数提示用户怎样选择04信息浏览/进入函数,这是直接被主函数main()调用的.3)函数调用关系:被主函数调用.并在文中无返回值的空值void函数.4)函数的出口:执行完所有的printf()函数后自动退出该函数.图书信息显示书器登录骂显示书名显示书的价格框架图图书浏览流程图图书浏览5.图书查询本函数由杨国峥设计D函数的功能:按着书名查询

7、与作者名查询,输出排序结果.2)函数的入口:程序从main()的while()开关结构中进入,即choice的值为4时进入该函数,开始进入该函数,进入函数后,首先翻开文件,然后利用“printf()选择按书名查询与作者名查询,假设flag=1或flag=2那么有此书.假设flag=0那么无此书,并退出查询.3)函数调用关系:被主函数调用.由while()开关结构中进入,并在文中无返回值的空值void函数.4)函数的出口:当输出查询结果用printf()标准输出到屏幕上,然后结束该函数,而执行主函数main()中"break;"跳出while()开关函数,继续执行if选择结构

8、.按图书名查询兰州交通大学图书信息治理系统请输入选项.一27茯圉书名查询2-拒作竟名查询0-iH出善询f选择的编号也'墓查询的的书作者名:高尔基你所查询的图书信息如下价格*工科基类别编号图书名作翥名出*301211352大学01230.00I按作者名查询6.输入模块本函数由闫鹏设计1)函数的功能:利用for循环语句和scanf、gets、getchar函数完成对结构数组的输入,存放图书信息(图书编号、图书名、作者名、出版社、类别、出版时间、价格).2)函数的入口:从主函数main()中的system("cls");/*清屏命令*/menu();/*菜单函数提示用户怎

9、样选择*/进入函数,这是直接被主函数main()调用的.3)函数调用关系:被主函数调用.并在文中无返回值的空值void函数.4)函数的出口:执行完所有的printf()函数后自动退出该函数.程序框架图:,一、录入请输入图书编请输入请输入k作者名J(、(请输入请输入【出版社J1类别JI(>请输入'出版时;(、请输入【价格/C0仓硅匡I-H丁用书寻入氏羊品国穴C:DocuneiLtsandratoiA桌面,3f建文件夹、二请输入作者名砒11理学为12物杰大同20妻华编名名社:I时?书书格萨图图善类出价JAlAlXJAglXJA意祠注请请请胃请请青图书信息输入四、调试与测试调试方法:翻

10、开MicrosoftVisualC+6.0,先将各个功能函数的的内容清空,只保存主函数main(),然后编译检验main()函数中是否有错,如果没有错误,再连接、运行.确认main()函数一切无误后,然后参加功能函数menu()函数与f1()函数,由于menu()函数比拟简单,所以与f1()函数一起进行调试,f1()函数中主要注意读取文件,与写入文件,这都是二进制的形式.假设menu()函数与f1()函数编译、连接、运行没问题,继续参加f2()函数,就这样的方法依次检查调试f3()函数、f4()函数.当所有的功能函数都加上且正确无误时,就可以进入下一个环节一程序的测试.测试方法:运行程序,然后

11、进入销售治理系统的界面,在这里需要做的就是把自己当成一个公司的程序使用者,来对该程序进行使用,看该程序有哪些方面用着不够爽,把这些问题依次整理出来,再对源程序进行修改,在这个过程中也需要对程序进行调试,不过不必将各个功能函数的的内容清空再进行如上述的调试方法,而是,改一部份运行一次,看是否有无.如f1()函数有误,那么先修改f1()函数,一块一块的进行修改,就是遵循C语言的模块化设计原理,假设所有的都改正来了,且运行无误,那就大功告成了.在调试中遇到的问题:在调试过程中,我们遇到诸多小问题,但都在我们共同讨论后解决了.1、问题:标点符号在输入的时候,使用的是中文输入法,这种错误一般都难以发现,

12、让修改的时候找不到目标.解决方法:用“替换.如果程序中的error很多,不管error是什么,先将标点替换成英文的标点.2、问题:调试时,有的时候编译后没什么问题,就是在点击连接link时出现了错误.而且,这种错误让我们不知道怎么修改.但是我们的程序确实正确.解决方法:将源程序保存(save),然后关掉MicrosoftVisualC+6.0,重新启动MicrosoftVisualC+6.0,五、分析及结论A、在设计中我们实现了设计目标的所有内容即:1、系统以菜单方式工作2、图书信息录入功能一一输入3、图书信息浏览功能一一输出4、图书信息查询功能一一算法查询方式:1按书名查询.2.按作者名查询

13、5、图书信息的删除与修改B、其中遇到了以下问题:不能清楚的建立设计模块,不会修改出现的错误等等.解决方案:向同学寻求帮助,向他们学习,最终通过自己努力建立了模块.不可防止地程序中肯定依然存在者某些问题在应用中不断提升自己的水平,攻克遇到的困难.C、该程序的缺乏:函数较复杂,界面不美观.H实践心得经过一个多星期的编译原理课程设计,在我们一组的共同的努力下,顺利完成该课程设计.通过该课程设计,掌握了编译程序工作的根本过程及其各阶段的根本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程及其相关的技术,对课本上的知识也有了更深的理解.老师常说,课本上的知识是机械的,外表的,要学会去运用,要举一

14、反三.现在终于深刻的了解了这句话.经过这次的课程设计,发现书本上很深奥的知识变的更为简单,同样,对C程序原理也了有更深的理解.知道和理解了该理论在计算机中是怎样执行的,对该理论在实践中的应用有深刻的理解.通过该课程设计,把死板的课本知识变得生动有趣,激发了学习的积极性.能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解.课程设计中程序比拟复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要的命令去除.除了课堂外,课程设计是最能学到东西的,最考验人的.在做课程设计的这段时间,时刻都感到自己学的知识有多么的贫瘠.经过这次课程设计,让我们对C+城门语言有了更深的熟悉,操作水平

15、有了提升要想是写出的代码能运行,需要耐心细心,毅力以及充分的体力.只有经过屡次编辑,屡次编译,再屡次运行,才能编写出更好的程序,有时候需要屡次的更正才能到达所要的运行结果.在编写本程序时,在网上寻找的参考程序起到了很大的启发与参考作用.六、参考文献1、?C语言程序设计.谭浩强版?2、?C语言上机指导?3、«MicrosoftVisualC+6.0指南?4、附:在编写本程序时,在网上寻找的参考程序起到了很大的启发与参考作用.七、附录源程序清单源程序清单#include<stdio.h>#include<stdlib.h>#include<string.h&

16、gt;structbook/声明BOOK1的所有变量intnum;charbname50;charwname20;charpress50;charsort50;inttime;floatprice;structbook*next;添加图书验证新添加的图书编码是否已存在删除图书structbook*creatbook();/创立链表structbook*addbook(structbook*head);/intyanzheng(structbook*head,intm);/voiddeletebook(structbook*head);/将链表写入文件voidfprint(structbook*

17、head);structbook*load();从文件中读取信息并建成链表voidprint_book(structbook*head);/将链表信息输出voidchaxun(structbook*head);查询图书信息voidwname_chaxun(structbook*head);/按作者名查询图书voidbname_chaxun(structbook*head);按图书名查询图书voidxiugai(structbook*head);修改图书信息intmain()本代码由小组设计(intchoice,n,x,y=1,c,c1=317;/choice选择进入哪项功能:对图书的增删改查c

18、hara,d,b10,b110="317"structbook*head=NULL;/声明一个新的book类while(y)/实现登录退出系统这两个选项在输入口令错误时产生的循环(system("cls");/清屏printf("|=|n");printf("|欢送进入|n");printf("|兰州交通大学图书治理系统|n");printf("|=|n");printf("|请输入选项(0-1)|n");printf("|=|n");

19、printf("|1-用户登录|n");printf("|0-退出系统|n");printf("|=|nn");printf("请输入您的选择:");scanf("%d",&n);/读取选项0/1printf("n");getchar();/从stdio流中读字符switch(n)/进入选择case0:y=0;break;case1:printf("请输入您白用户名:");gets(b);/获取输入的字符将字符赋值为bprintf("n&

20、quot;);printf("请输入您的密码:");scanf("%d",&c);printf("n");if(strcmp(b,b1)!=0|c!=c1)strcmp比拟功能b1c1之前赋值为317317只要刚输入的b与c存在不等于317printf("验证失败,请重新输入!n");scanf("%c",&d);getchar();system("cls");)elseprintf("验证通过!请按Enter键进入!n");scanf(&

21、quot;%c",&d);getchar();x=1;while(x)system("cls");本代码由朱斌设计printf("n");printf("兰州交通大学图书信息治理系统n");printf("n");printf("*n");printf("|请输入选项(0-6)|n");*printf("|1-添加图书2-删除图书|nn");printf("|3-信息浏览4-信息查询|nn");printf("

22、;|5-修改图书6-创立图书|nn");printf("|0-退出系统|n");ntf("*n");printf("请输入所选择的序号:");scanf("%d",&choice);getchar();system("cls");switch(choice)/选择进入哪项功能:对图书的增删改查case0:x=0;break;case 1:head=load();/链头尾节点一致相同即文件为空if(head=NULL)printf("文件为空,请先录入数据!n"

23、;);getchar();break;)elsehead=addbook(head);/链表的表头与新参加的内容相同即添加成功printf("添加成功!n");printf("是否将新信息保存到文件?(y/n)n");scanf("%c",&a);getchar();switch(a)case'n':break;case'y':fprint(head);printf("保存成功!n");getchar();break;break;case 2:head=load();/链头尾

24、节点一致即文件为空if(head=NULL)printf("文件为空,请先录入数据!n");getchar();break;elsedeletebook(head);/执行删除getchar();break;break;case 3:head=load();if(head=NULL)/链头尾节点一致即文件为空printf("文件为空,请先录入数据!n");getchar();break;elseprint_book(head);/执行浏览getchar();break;case4:head=load();if(head=NULL)链头尾节点一致即文件为空

25、printf("文件为空,请先录入数据!n");getchar();break;elsechaxun(head);/执行查询getchar();break;case5:head=load();if(head=NULL)/链头尾节点一致即文件为空printf("文件为空,请先录入数据!n");getchar();break;elsexiugai(head);/执行修改getchar();break;break;case6:printf("注意:输入图书编码为0时结束!n");head=creatbook();/找到相同信息询问是否替换p

26、rintf("是否将输入的信息保存到文件以覆盖文件中已存在的信息?(y/n)n");getchar();scanf("%c",&a);getchar();switch(a)case'n':break;case'y':fprint(head);/将链表写入文件printf("保存成功!n");getchar();break;break;default:printf("您的输入有误,请重新输入!n");getchar();break;break;default:printf(&q

27、uot;您的输入有误!请重新输入!n");getchar();break;设计本代码由周勇和王文模/录入数据并形成链表structbook*creatbook()structbook*head,*tail,*p;/声明数据链表intnum,time,n;charbname50,wname20,press50,sort50;floatprice;intsize=sizeof(structbook);head=tail=NULL;printf("请输入图书编号:");scanf("%d",&num);printf("请输入图书名:

28、");scanf("%s",bname);getchar();printf("请输入作者名:");scanf("%s",wname);getchar();printf("请输入出版社:");scanf("%s",press);getchar();printf("请输入类别:");scanf("%s",sort);getchar();printf("请输入出版时间:");scanf("%d",&tim

29、e);getchar();从键盘中输入一个值printf("请输入价格:");scanf("%f",&price);getchar();while(1)p=(structbook*)malloc(size);p->num=num;strcpy(p->bname,bname);/赋值把后者复制给前者strcpy(p->wname,wname);/赋值把后者复制给前者strcpy(p->press,press);/赋值把后者复制给前者strcpy(p->sort,sort);/赋值把后者复制给前者p->time=t

30、ime;p->price=price;p->next=NULL;if(head=NULL)head=p;elsetail->next=p;/赋值将地址付给下一个形成链tail=p;doprintf("请输入图书编号:");scanf("%d",&num);n=yanzheng(head,num);/验证添加的图书编号是否已存在if(n=0)break;elseprintf("您输入的编号已存在,请重新输入!n");while(1);if(num=0)break;elseprintf("请输入图书名:

31、");scanf("%s",bname);getchar();printf("请输入作者名:");scanf("%s",wname);getchar();printf("请输入出版社:");scanf("%s",press);getchar();printf("请输入类别:");scanf("%s",sort);getchar();printf("请输入出版时间:");scanf("%d",&tim

32、e);getchar();printf("请输入价格:");scanf("%f",&price);getchar();returnhead;intyanzheng(structbook*head,intm)structbook*p;p=head;while(p!=NULL)if(p->num=m)break;p=p->next;)if(p=NULL)return0;elsereturn1;)/将新链表写入文件中voidfprint(structbook*head)FILE*fp;charch='1'structbook

33、*p1;if(fp=fopen("f1.txt","w")=NULL)字符IO流printf("Fileopenerror!n");exit(0);)fputc(ch,fp);/将字符ch写到文件指针fp所指向的文件的当前写指针的位置for(p1=head;p1;p1=p1->next)/依次写入fprintf(fp,"%d%s%s%s%s%d%fn",p1->num,p1->bname,p1->wname,p1->press,p1->sort,p1->time,p1-&g

34、t;price);)fclose(fp);/关闭释放内存)本代码由闫鹏设计/从文件中读取图书信息structbook*load()FILE*fp;charch;structbook*head,*tail,*p1;head=tail=NULL;/链表初始化if(fp=fopen("f1.txt","r")=NULL)printf("Fileopenerror!n");exit(0);)ch=fgetc(fp);/意为从文件指针fp指向的文件中读取一个字符读取一个字节后光标位置后移一个字节if(ch='1')(while(

35、!feof(fp)/检测fp流上的文件结束符p1=(structbook*)malloc(sizeof(structbook);fscanf(fp,"%d%s%s%s%s%d%fn",&p1->num,p1->bname,p1->wname,p1->press,p1->sort,&p1->time,&p1->price);if(head=NULL)head=p1;elsetail->next=p1;tail=p1;tail->next=NULL;fclose(fp);returnhead;else

36、returnNULL;/将整个链表的信息输出voidprint_book(structbook*head)structbook*ptr;if(head=NULL)printf("n没有信息!n");return;printf("图书信息列表如下n");printf("=n");printf("编号图书名作者名出版社类别出版时间价格n");for(ptr=head;ptr;ptr=ptr->next)/依次输出printf("%d%s%s%s%s%d%.2fn",ptr->num,pt

37、r->bname,ptr->wname,ptr->press,ptr->sort,ptr->time,ptr->price);printf("=n");本代码由张旭东设计/删除图书信息voiddeletebook(structbook*head)(inta;charb,ch='1'structbook*p1,*p2;FILE*fp;printf("请输入要删除的图书编号:");scanf("%d",&a);p1=head;if(p1->num=a&&p1

38、->next=NULL)当文件中只有一组数据printf("是否清空文件!(y/n)n");getchar();scanf("%c",&b);getchar();switch(b)case'n':break;case'y':if(fp=fopen("f1.txt","w")=NULL)/重新写入printf("Fileopenerror!n");exit(0);fclose(fp);printf("文件已清空!n");elsewh

39、ile(p1->num!=a&&p1->next!=NULL)/当文件中不只有一组数据p2=p1;p1=p1->next;if(p1->next=NULL)if(p1->num=a)p2->next=NULL;printf("是否确定从文件中彻底删除该图书?(y/n)n");getchar();scanf("%c",&b);switch(b)case'n':break;case'y':fprint(head);printf("删除成功!n");

40、getchar();break;elseprintf("没有找到要删除的数据!n");getchar();elseif(p1=head)head=p1->next;printf("是否确定从文件中彻底删除该图书?(y/n)n");getchar();scanf("%c",&b);switch(b)case'n':break;case'y':fprint(head);printf("删除成功!n");getchar();break;elsep2->next=p1->next;printf("是否确定从文件中彻底删除该图书?(y/n)n");getchar();scanf("%c",&b);switch(b)case'n':break;case'y':fprint(head);printf(&q

温馨提示

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

评论

0/150

提交评论