图书信息管理系统设计_第1页
图书信息管理系统设计_第2页
图书信息管理系统设计_第3页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、WORD格式东南大学C 语言课程设计报告课程名称:计算机综合课程设计学院:土木工程学院设计题目:图书信息管理系统设计级别:A级学生*:学号:同组学生:学号:指导教师:2021年09 月05日专业资料整理WORD格式- 1 -专业资料整理WORD格式课程报告任务书题目图书信息管理系统图书信息包括:登录号,书名,作者名,分类号,出版单位,出版时间,价格等。试 设计一图书信息管理系统,使之提供以下功能:1) 系统以菜单方式工作;主 2)图书信 息录 入 功能图书信息用文本文件形式保存 ;要3)图书信息浏览功能;内查询和排序功能:4)容按书名查找;按作者名查找;5) 图书信息删除功能;6) 图书信息修

2、改功能。采用模块化程序设计;鼓励可视化编程;源程序中应有足够的注释;任学生可自行增加新功能模块视情况可另外加分;务必须上机调试通过;要求注重算法运用,优化存储效率与运算效率;需提交源程序 ( 含有注释 ) 及相关文件 ( 数据或数据库文件 ) ;(cpp 文件、 txt或 dat 文件等 )提交设计报告书成绩评定评定教师专业资料整理WORD格式- 2 -专业资料整理WORD格式摘要:随着当今社会开展, 信息化水平逐步提高, 对图书管理有了新的要求, 因此,编写一个信息管理系统是十分必要的。为了满足图书管理的要求, 通过计算机技术给图书管理人员带来便利。 使用C语言编写图书管理系统,其中主要运用

3、了构造化设计与链表构造。本系统主要实现图书信息管理的功能, 通过此系统可对图书馆库存图书信息进展管理和维护操作。实现了图书馆内管理的一般功能,包括图书信息录入、浏览、排序、删除和修改等功能。 所设计的系统以菜单方式工作, 为用户提供清晰的使用提示, 依据用户的选择来进展各种处理。图书信息包括登录号、书名、作者名、分类号、出版单位、出版时间、价格等。图书信息的录入和显示要求有一定的标准格式,录入的图书信息用文件形式保存, 并可以对其进展浏览、 查询、删除和修改等根本操作。关键字:图书信息管理C语言链表构造目录1. 设计的目的与要求 -42. 分析 -43. 总体设计 -54. 主要功能算法 -5

4、5. 完整程序及注释 -86. 调试分析 -247. 总结 -288. 辩论记录 -299. 教师意见 -29专业资料整理WORD格式- 3 -专业资料整理WORD格式1. 设计的目的与要求1.1 设计的目的使用链表和构造等构造数据,编写一 C 语言程序,实现图书信息管理的功能, 通过此系统可对图书馆图书信息进展管理和维护等操作, 给图书管理人员带来便利。1.2 设计的要求图书信息包括:登录号,书名,作者名,分类号,出版单位,出版时间,价格等。试设计一图书信息管理系统,使之提供以下功能:( 1系统以菜单方式工作( 2 图 书信 息录 入功 能图书信息用文本文件形式保存( 3图书信息浏览功能(

5、4查询和排序功能:按书名查找按作者名查找( 5图书信息删除功能( 6图书信息修改功能2.分析根据题目要求,应当把图书信息用构造体形式输入,再定义一个全局变量和文件指针进展整个程序的运行,然后把图书信息送到文件中,所以应该提供一个构造体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,排序,删除和修改等功能的操作,所以需要建立相应的函数模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时到达所要目的。专业资料整理WORD格式- 4 -专业资料整理WORD格式3.总体设计根据题目要求,我们经过分析和讨论后,决定将此系统分为十个功能模块:( 1 菜单项选择择模块( 2图书信息录入功

6、能模块( 3 图书信息浏览功能模块( 4 图书信息查询功能模块( 5 图书信息排序功能模块( 6 图书信息删除功能模块( 7 图书信息修改功能模块( 8 图书数据保存功能模块( 9 信息文件翻开功能模块( 10退出系统功能模块4. 主要功能的算法4.1录入函数算法专业资料整理WORD格式- 5 -专业资料整理WORD格式4.2按书名查找算法按作者名与此类似4.3 删除图书信息算法修改与此类似专业资料整理WORD格式- 6 -专业资料整理WORD格式4.4 显示函数算法5. 完整程序及注释#include<iostream.h>/* 引用库函数 */#include <stdi

7、o.h># include <string.h># include <conio.h># include <stdlib.h># include <windows.h>typedef struct book_info/ 定义图书信息的构造体变量并声明新的类型名char AN10;/*登录号 */char name20;/*书名 */char author20;/*作者名 */char clc10;/*分类名 */char company20;/*出版单位 */char date20;/*出版日期 */char price10;/*价格 */

8、struct book_info *next;专业资料整理WORD格式- 7 -专业资料整理WORD格式Booklist,*Pointer;int num=0;/全局变量的定义Pointer Head=NULL;/头指针为空FILE *fp;/指向文件的指针/* 声明函数 */int menu_select();/*主菜单函数 */void Insert(Pointer * Head);/*录入函数 */void Scan(Pointer Head);/*显示函数 */void Search_name(Pointer Head);/*按书名查找函数 */void Search_author(P

9、ointer Head);/*按作者名查找函数 */void Listbyname(Pointer *Head);/*按书名排序函数 */void Delete(Pointer * Head);/删除函数void Update(Pointer Head);/修改函数void Save();/用文本文件形式保存函数void Read();/读入文本文件函数void Exit();/退出函数void main()/ 主函数system("cls");/*运行前清屏 */for(;)switch(menu_select()case 1:Insert(& Head);bre

10、ak;case 2:Scan(Head);break;专业资料整理WORD格式- 8 -专业资料整理WORD格式case 3:Search_name(Head);break;case 4:Search_author(Head);break;case 5:Listbyname(&Head);break;case 6:Delete(&Head);break;case 7:Update(Head);break;case 8:Save();break;case 9:Read();break;case 0:Exit();default:putchar('a');menu_

11、select() / 主菜单函数int a;printf("nttt欢迎使用图书信息管理系统nnnnntt *请按任意键进入系统菜单 ! * n");getch();system("cls");printf("tt*MENU*n");/主菜单专业资料整理WORD格式- 9 -专业资料整理WORD格式printf("tt1.录入图书信息 n");printf("tt2.浏览图书信息 n");printf("tt3.按书名查询图书信息 n");printf("tt4.按

12、作者名查询图书信息 n");printf("tt5.图书信息排序 n");printf("tt6.删除图书信息 n");printf("tt7.修改图书信息 n");printf("tt8.图书数据保存 n");printf("tt9.图书信息文件翻开 n");printf("tt0.退出 n");printf("tt*n");doprintf("nt请选择您所需要的效劳:");scanf("%d",&am

13、p;a);while (a<0|a>9);return a;void Insert(Pointer * Head)/ 录入图书信息函数char AN10 ;char c;Pointer p,q,r;printf("ntt*请输入图书信息*n");/*交互输入 */printf("ntt请输入登录号 :");scanf("%s",AN);p=q= * Head;/检测登录号是否重复专业资料整理WORD格式-10-专业资料整理WORD格式while(p!=NULL)if(strcmp(p->AN,AN)=0)printf

14、 ("已经有一样的登录号: ");return;elseq=p;p=p->next;r=(Pointer)malloc(sizeof(Booklist);r->next=NULL;if(r=NULL)printf("分配空间失败 !");return;if(q=NULL)* Head=r; else q->next=r;strcpy(r->AN,AN);printf("ntt输入书名 :"); /录入图书信息scanf("%s",r->name);getchar();printf(&q

15、uot;ntt输入作者名 :");scanf("%s",r->author);getchar();printf("ntt输入分类号 :");scanf("%s",r->clc) ;getchar();printf("ntt输入出版单位 :");scanf("%s",r->company) ;getchar();printf("ntt输入出版日期 :");专业资料整理WORD格式-11-专业资料整理WORD格式gets(r->date) ;pr

16、intf("ntt输入价格 :");scanf("%s",r->price); doprintf("ntt录入成功 !");num+;printf("选择是否继续录入 (Y/N)" :");/*连续录入图书信息 */getchar();scanf("%c",&c);if(c='y'|c='Y')Insert(Head);elseif(c='n'|c='N')return;elseprintf("nt

17、t输入错误,请重新输入!");while(c!='y'&&c!='n'&&c!='Y'&&c!='N');void Scan(Pointer Head)/ 显示图书信息函数Pointer p;p=Head;if(p=NULL)printf("记录为空 ");/检测是否有图书信息else专业资料整理WORD格式-12-专业资料整理WORD格式printf("nt共有 %d条记录 ",num);while(p!=NULL)printf(&

18、quot;nntt登录号: %-10s",p->AN);/显示图书信息printf("ntt书名:%-20s",p->name);printf("ntt作者名:%-20s",p->author);printf("ntt分类号:%-10s",p->clc);printf("ntt出版单位: %-20s",p->company);printf("ntt出版时间: %-20s",p->date);printf("ntt价格:¥%-10s"

19、;,p->price);p=p->next;printf("ntt请按任意键回到主菜单");return;void Search_name(Pointer Head)/ 按书名查找函数int flag=0;/标记变量的初值char name10;Pointer p;printf ("n请输入需要查询的书名:");scanf("%s",name);printf("ntt*以下是您查找的信息*");p=Head;while(p!=NULL)if(strcmp(p->name,name)=0)/查找符合

20、的图书专业资料整理WORD格式-13-专业资料整理WORD格式printf("nt登录号:%-10s",p->AN);printf("nt书名:%-20s",p->name);printf("nt作者名:%-20s",p->author);printf("nt分类号:%-10s",p->clc);printf("nt出版单位: %-20s",p->company);printf("nt出版时间: %-20s",p->date);printf

21、("nt价格:¥%-10s",p->price);flag=1;/找到标记变量设为1p=p->next;/指针走到下一个节点elsep=p->next;if(flag=0)printf("ntt没有一样书名纪录 ");printf("ntt请按任意键返回主菜单");getchar();void Search_author(Pointer Head)/按作者名查找函数int flag=0;char author10;Pointer p;printf ("n请输入需要查询的作者名:");scanf(&

22、quot;%s",author);printf("ntt*以下是您查找的信息*");p=Head;while(p!=NULL)/查找符合的图书专业资料整理WORD格式-14-专业资料整理WORD格式if(strcmp(p->author,author)=0)/*找到图书显示信息 */printf("nt登录号:%-10s",p->AN);printf("nt书名:%-20s",p->name);printf("nt作者名:%-20s",p->author);printf("

23、;nt分类号:%-10s",p->clc);printf("nt出版单位: %-20s",p->company);printf("nt出版时间: %-20s",p->date);printf("nt价格:¥%-10s",p->price);flag=1;p=p->next;elsep=p->next;if(flag=0)printf("ntt没有一样作者名纪录 ");printf("ntt请按任意键返回主菜单");getch();void Listb

24、yname(Pointer *Head)/按书名排序函数Pointer p,q;int i,j;char t10;char c;if(Head=NULL)专业资料整理WORD格式-15-专业资料整理WORD格式printf("ntt没有任何资料! n");return;if(num=0)/检查是否存在数据可供排序printf("ntt图书信息记录为空!请按任意键返回主菜单。");getchar();return;p=q=*Head;for(i=0;i<num;i+)/排序for (j=i+1;j<num;j+)q=p;p=p->next

25、;/使指针指向下一个结点if(strcmp(q->name,p->name)>0)/检查二者排序先后/p指针对应数据应排于 q 指针对应数据后, p, q进展数据交换strcpy(t,p->AN);strcpy(p->AN,q->AN);strcpy(q->AN,t);strcpy(t,p->author);strcpy(p->author,q->author);strcpy(q->author,t);strcpy(t,p->clc);strcpy(p->clc,q->clc);strcpy(q->clc

26、,t);专业资料整理WORD格式-16-专业资料整理WORD格式strcpy(t,p->company);strcpy(p->company,q->company);strcpy(q->company,t);strcpy(t,p->date);strcpy(p->date,q->date);strcpy(q->date,t);strcpy(t,p->name);strcpy(p->name,q->name);strcpy(q->name,t);strcpy(t,p->price);strcpy(p->price

27、,q->price);strcpy(q->price,t);q=*Head;p=*Head;doprintf("nt排序完成,是否显示 (Y/N)" :");/*询问是否显示排序结果*/getchar();scanf("%c",&c);if(c='y'|c='Y')Scan(*Head);/显示排序结果elseif(c='n'|c='N')return;/返回主菜单else专业资料整理WORD格式-17-专业资料整理WORD格式printf("ntt输

28、入错误,请重新输入!");/错误那么继续询问while(c!='y'&&c!='n'&&c!='Y'&&c!='N');void Delete(Pointer *Head)/* 删除函数 */int flag=1;char AN10;char c,z;Pointer p,q;printf("ntt*图书删除 *n");printf("t请输入要删除图书的信息的登录号:");scanf("%s",AN);p=q=*H

29、ead;/* 查找符合条件的图书 */while(p!=NULL&&flag)if(strcmp(p->AN,AN)=0)/*找到该图书 */printf("tn登录号: %-10s",p->AN);/显示即将要删除的图书的信息printf("tn书名: %-20s",p->name);printf("tn作者名: %-20s",p->author);printf("tn分类号: %-10s",p->clc);printf("tn出版单位: %-20s&quo

30、t;,p->company);printf("tn出版时间: %-20s",p->date);printf("tn价格:¥ %-10sn",p->price);printf("确定删除 "确定请输 Y,其它那么不删除 ");/询问是否删除getchar();scanf("%c",&z);if(z='Y'|z='y')专业资料整理WORD格式-18-专业资料整理WORD格式if(p=*Head)*Head=p->next;free(p);/*删

31、除图书信息 */elseq->next=p->next;free(p);flag=0;elseprintf("图书信息未删除,返回主菜单。");return;elseq=p;p=p->next;/*指针走到下一个节点 */printf("tt删除成功! n");if(flag)printf("t没有找到可以删除的数据!");doprintf("选择是否继续删除 (Y/N)" :");/*连续删除图书信息 */getchar();scanf("%c",&c);i

32、f(c='y'|c='Y')Delete(Head);/*继续删除 */elseif(c='n'|c='N')return;/*不删除返回主菜单 */elseprintf("ntt输入错误,请重新输入!");专业资料整理WORD格式-19-专业资料整理WORD格式while(c!='y'&&c!='n'&&c!='Y'&&c!='N');void Update(Pointer Head)/* 图书信息

33、修改函数 */int flag=1;char AN10;char c;Pointer p;printf("ntt*图书信息修改 *n");printf("t请输入要修改的图书的登录号:");scanf("%s",AN);/*查找符合条件的图书 */p=Head;while(p!=NULL&&flag)if(strcmp(p->AN,AN)=0)printf("ntt请输入登录号 :");/*修改图书信息 */scanf("%s",p->AN);printf("

34、;ntt输入书名 :");scanf("%s",p->name);getchar();printf("ntt输入作者名 :");scanf("%s",p->author);getchar();printf("ntt输入分类号 :");scanf("%s",p->clc) ;getchar();专业资料整理WORD格式-20-专业资料整理WORD格式printf("ntt输入出版单位 :");scanf("%s",p->co

35、mpany) ;getchar();printf("ntt输入出版日期 :");gets(p->date);printf("ntt输入价格 :");scanf("%s",p->price);flag=0;printf("修改成功 !n");elsep=p->next;/*指针走到下一个节点 */if(flag)printf("ntt没有该图书记录 !");doprintf("选择是否继续修改 (Y/N)" :");/*连续修改图书信息 */getc

36、har();scanf("%c",&c);if(c='y'|c='Y')Update(Head);/*继续修改 */elseif(c='n'|c='N')return;/不修改,返回菜单elseprintf("ntt输入错误,请重新输入!");while(c!='y'&&c!='n'&&c!='Y'&&c!='N');/输入错误那么继续询问专业资料整理WORD格式-21-专

37、业资料整理WORD格式void Save()/* 以文本文件形式保存的函数*/Pointer p;p=Head;char file20;/*用来存放文件保存路径以及文件名*/printf("请输入文件路径及文件名:");scanf("%s",file);if(fp=fopen(file,"w+")=NULL)/*判断能否翻开文件 */printf("不能翻开文件 !n");return;while(p!=NULL)fprintf(fp,"%st%st%st%st%st%st%sn",p->

38、AN,p->name,p->author,p->clc,p->company,p->date,p->price);/将数据写入文件p=p->next;/*下移一个结点 */fclose(fp);/写入完成,关闭文件printf("文件已经保存 !n");return ;void Read()/* 读入文本文件的函数 */Pointer p,q;int m=0;char file20;printf("请输入文件路径及文件名:");scanf("%s",file);/*输入文件路径及名称 */专业

39、资料整理WORD格式-22-专业资料整理WORD格式if(fp=fopen(file,"r+")=NULL)/检查文件是否存在printf("不能翻开文件 !n");return;m=m+1;if(m=1)p=(Pointer)malloc(sizeof(Booklist);/*开辟一个新单元 */Head=p;/ 将 p 的地址赋给头指针Headfscanf(fp,"%st%st%st%st%st%st%stn",&p->AN,&p->name,&p->author,&p->c

40、lc,&p->company,&p->date,&p->price);/*文件读入 */donum=num+1;/ 记录书籍信息量if(num=1) /区别开链表开头与中间的处理方法Head->next=p;else q->next=p;q=p;p=(Pointer)malloc(sizeof(Booklist); /*开辟一个新单元 */fscanf(fp,"%st%st%st%st%st%st%stn",&p->AN,&p->name,&p->author,&p->clc,&p->company,&p->date,&p->price);/读入文件数据while(!feof(fp);/ 检查文件是否完毕,假设是那么停顿读入,否那么继续读入 q->

温馨提示

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

评论

0/150

提交评论