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

下载本文档

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

文档简介

1、 东南大学C语言课程设计报告课程名称: 计算机综合课程设计 学 院: 土木工程学院 设计题目: 图书信息管理系统设计 级 别: A级 学生姓名: 学 号: 同组学生: 学 号: 指导教师: 2012年 09月05日 课程报告任务书题目图书信息管理系统主 要 内 容图书信息包括:登录号,书名,作者名,分类号,出版单位,出版时间,价格等。试设计一图书信息管理系统,使之提供以下功能:系统以菜单方式工作;图书信息录入功能图书信息用文本文件形式保存;图书信息浏览功能;查询和排序功能: 按书名查找; 按作者名查找;图书信息删除功能;图书信息修改功能。任 务 要 求采用模块化程序设计;鼓励可视化编程;源程序

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

3、信息录入、浏览、排序、删除和修改等功能。所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各种处理。图书信息包括登录号、书名、作者名、分类号、出版单位、出版时间、价格等。图书信息的录入和显示要求有一定的标准格式,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、删除和修改等根本操作。关键字:图书信息管理 C语言 链表 结构目录设计的目的与要求-4分析-4总体设计-5主要功能算法-5完整程序及注释-8调试分析-24总结-28辩论记录-29教师意见-29 设计的目的与要求 1.1设计的目的 使用链表和结构等结构数据,编写一C语言程序,实现图书信 息管理的功能,通过此系

4、统可对图书馆图书信息进行管理和维护等操作,给图书管理人员带来便利。 1.2设计的要求 图书信息包括:登录号,书名,作者名,分类号,出版单位,出版时间,价格等。试设计一图书信息管理系统,使之提供以下功能:系统以菜单方式工作2图书信息录入功能图书信息用文本文件形式保存3图书信息浏览功能4查询和排序功能: 按书名查找 按作者名查找5图书信息删除功能6图书信息修改功能2.分析根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,排序,删除和修改等功能的

5、操作,所以需要建立相应的函数模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时到达所要目的。3.总体设计 根据题目要求,我们经过分析和讨论后,决定将此系统分为十个功能模块:菜单项选择择模块图书信息录入功能模块图书信息浏览功能模块图书信息查询功能模块图书信息删除功能模块图书信息修改功能模块退出系统功能模块主要功能的算法 4.1 录入函数算法 4.2 按书名查找算法按作者名与此类似 4.3 删除图书信息算法修改与此类似4.4显示函数算法5.完整程序及注释#include /*引用库函数*/ #include # include # include # include # include ty

6、pedef struct book_info/定义图书信息的结构体变量并声明新的类型名 char AN10; /*登录号*/ char name20; /*书名*/ char author20; /*作者名*/ char clc10; /*分类名*/ char company20; /*出版单位*/ char date20; /*出版日期*/ char price10; /*价格*/ struct book_info *next; Booklist,*Pointer;int num=0;/全局变量的定义Pointer Head=NULL;/头指针为空FILE *fp;/指向文件的指针 /*声明

7、函数*/int menu_select();/*主菜单函数*/void Insert(Pointer * Head);/*录入函数*/void Scan(Pointer Head);/*显示函数*/void Search_name(Pointer Head);/*按书名查找函数*/void Search_author(Pointer Head);/*按作者名查找函数*/void Delete(Pointer * Head);/删除函数void Update(Pointer Head);/修改函数void Exit();/退出函数void main()/主函数 system(cls);/*运行前

8、清屏*/ for(;) switch(menu_select() case 1:Insert(& Head); break; case 2:Scan(Head); break; case 3:Search_name(Head); break; case 4:Search_author(Head); break; case 5:Delete(&Head); break; Case6:Update(Head); break; case 0:Exit(); default: putchar(a); menu_select()/主菜单函数 int a; printf(nttt欢送使用图书信息管理系统n

9、nnnntt * 请按任意键进入系统菜单! * n); getch(); system(cls); printf(tt*MENU*n);/主菜单 printf(tt 1. 录入图书信息n); printf(tt 2. 浏览图书信息n); printf(tt 3. 按书名查询图书信息n); printf(tt 4. 按作者名查询图书信息n); printf(tt 5. 删除图书信息n); printf(tt 7. 修改图书信息n); printf(tt 0. 退出n); printf(tt*n); do printf(nt请选择您所需要的功能:); scanf(%d,&a); while (a6

10、); 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;/检测登录号是否重复while(p!=NULL)if(strcmp(p-AN,AN)=0) printf (已经有相同的登录号:);return; else q=p;p=p-next;r=(Pointer)malloc(sizeof(Booklist);r-next=NULL;if(

11、r=NULL)printf(分配空间失败!);return;if(q=NULL)* Head=r;elseq-next=r; strcpy(r-AN,AN); printf(ntt输入书名:); /录入图书信息 scanf(%s,r-name); getchar(); printf(ntt输入作者名:); scanf(%s,r-author); getchar(); printf(ntt输入分类号:); scanf(%s,r-clc) ; getchar(); printf(ntt输入出版单位:); scanf(%s,r-company) ; getchar(); printf(ntt输入出版

12、日期:); gets(r-date) ; printf(ntt输入价格:); scanf(%s,r-price); doprintf(ntt录入成功!);num+;printf(选择是否继续录入(Y/N)?:); /*连续录入图书信息*/getchar();scanf(%c,&c);if(c=y|c=Y)Insert(Head);else if(c=n|c=N) return; else printf(ntt输入错误,请重新输入!);while(c!=y&c!=n&c!=Y&c!=N);void Scan(Pointer Head) /显示图书信息函数Pointer p;p=Head;if(p

13、=NULL)printf(记录为空);/检测是否有图书信息else printf(nt共有%d条记录,num);while(p!=NULL) printf(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,p-price); p=p-next;p

14、rintf(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)/查找符合的图书 printf(nt登录号: %-10s,p-AN); printf(nt书名: %-20s,p-name); printf(nt作者名: %-20s

15、,p-author); printf(nt分类号: %-10s,p-clc); printf(nt出版单位:%-20s,p-company); printf(nt出版时间:%-20s,p-date); printf(nt价格: ¥%-10s,p-price); flag=1;/找到标记变量设为1 p=p-next;/指针走到下一个节点 else p=p-next;if(flag=0)printf(ntt没有相同书名纪录);printf(ntt请按任意键返回主菜单);getchar();void Search_author(Pointer Head) /按作者名查找函数int flag=0;ch

16、ar author10;Pointer p;printf (n请输入需要查询的作者名:);scanf(%s,author);printf(ntt* 以下是您查找的信息 *);p=Head;while(p!=NULL)/查找符合的图书 if(strcmp(p-author,author)=0)/*找到图书显示信息*/ printf(nt登录号: %-10s,p-AN); printf(nt书名: %-20s,p-name); printf(nt作者名: %-20s,p-author); printf(nt分类号: %-10s,p-clc); printf(nt出版单位:%-20s,p-compa

17、ny); printf(nt出版时间:%-20s,p-date); printf(nt价格: ¥%-10s,p-price); flag=1; p=p-next; else p=p-next;if(flag=0)printf(ntt没有相同作者名纪录);printf(ntt请按任意键返回主菜单);getch(); 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

18、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,p-company); printf(tn出版时间:%-20s,p-date); printf(tn价格:¥%-10sn,p-price); printf(确定删除?确定请输Y,

19、其它那么不删除);/询问是否删除getchar();scanf(%c,&z); if(z=Y|z=y) if(p=*Head)*Head=p-next;free(p);/*删除图书信息*/ elseq-next=p-next;free(p);flag=0; else printf(图书信息未删除,返回主菜单。); return; else q=p;p=p-next;/*指针走到下一个节点*/ printf(tt删除成功!n);if(flag)printf(t没有找到可以删除的数据!);doprintf(选择是否继续删除(Y/N)?:); /*连续删除图书信息*/getchar();scanf(

20、%c,&c);if(c=y|c=Y)Delete(Head);/*继续删除*/else if(c=n|c=N) return;/*不删除返回主菜单*/ else printf(ntt输入错误,请重新输入!);while(c!=y&c!=n&c!=Y&c!=N);void Update(Pointer Head)/*图书信息修改函数*/int flag=1;char AN10;char c;Pointer p;printf(ntt* 图书信息修改 *n);printf(t请输入要修改的图书的登录号:);scanf(%s,AN);/*查找符合条件的图书*/p=Head;while(p!=NULL&

21、flag)if(strcmp(p-AN,AN)=0) printf(ntt请输入登录号:);/*修改图书信息*/ scanf(%s,p-AN); printf(ntt输入书名:); scanf(%s,p-name); getchar(); printf(ntt输入作者名:); scanf(%s,p-author); getchar(); printf(ntt输入分类号:); scanf(%s,p-clc) ; getchar(); printf(ntt输入出版单位:); scanf(%s,p-company) ; getchar(); printf(ntt输入出版日期:); gets(p-da

22、te); printf(ntt输入价格:); scanf(%s,p-price); flag=0;printf(修改成功!n); else p=p-next;/*指针走到下一个节点*/if(flag)printf(ntt没有该图书记录!);doprintf(选择是否继续修改(Y/N)?:); /*连续修改图书信息*/getchar();scanf(%c,&c);if(c=y|c=Y)Update(Head);/*继续修改*/else if(c=n|c=N) return;/不修改,返回菜单 else printf(ntt输入错误,请重新输入!);while(c!=y&c!=n&c!=Y&c!=N);/输入错误那么继续询问void Exit()/*退出程序的函数*/char c;doprintf(ntt退出中.是否保存到文件(Y/N)?); /*询问是否保存图书信息,防止丧失*/getchar();scanf(%

温馨提示

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

评论

0/150

提交评论