版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、叮叮小文库东南大学C语言课程设计报告课程名称:计算机综合课程设计学 院:土木工程学院设计题目:图书信息管理系统设计级 别:A 级学生姓名:学 号:同组学生: 学 号:指导教师:2012年09月05日课程报告任务书题目图书信息管理系统主 要 内 容图书信息包括:登录号,书名,作者名,分类号,出版单位, 出版时间,价格等。试设计一图书信息管理系统,使之提供以 下功能:1) 系统以菜单方式工作;2) 图书信息录入功能(图书信息用文本文件形式保存);3) 图书信息浏览功能;4) 查询和排序功能:按书名查找;按作者名查找;5) 图书信息删除功能;6) 图书信息修改功能。任 务 要 求采用模块化程序设计;
2、鼓励可视化编程;源程序中应肩足够的注释;学生可自行增加新功能模块(视情况可另外加分);必须上机调试通过;注重算法运用,优化存储效率与运算效率;需提交源程序(含有注释)及相关文件(数据或数据库文件);(cpp文件、txt或dat文件等)提交设计报告书成绩评定评定 教师摘要:随着当今社会发展,信息化水平逐步提高,对图书管理有了新的要求,因 此,编写一个信息管理系统是十分必要的。为了满足图书管理的要求,通过计算机技术给图书管理人员带来便利。 使用 C语言编写图书管理系统,其中主要运用了结构化设计与链表结构。本系统主要 实现图书信息管理的功能,通过此系统可对图书馆库存图书信息进行管理和维护 操作。实现
3、了图书馆内管理的一般功能,包括图书信息录入、浏览、排序、删除 和修改等功能。所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依 据用户的选择来进行各种处理。图书信息包括登录号、书名、作者名、分类号、 出版单位、出版时间、价格等。图书信息的录入和显示要求有一定的规范格式, 录入的图书信息用文件形式保存,并可以对其进行浏览、查询、删除和修改等基本操作。关键字:图书信息管理 C语言 链表结构目录1 .设计的目的与要求42 .分析43 .总体设计54 .主要功能算法55 .完整程序及注释86 .调试分析247 .总结288 .答辩记录299 .教师意见291 .设计的目的与要求1.1 设计的目的
4、使用链表和结构等结构数据,编写一 C语言程序,实现图书信 息管理的功能,通过此系统可对图书馆图书信息进行管理和维护等操作, 给图书 管理人员带来便利。1.2 设计的要求图书信息包括:登录号,书名,作者名,分类号,出版单位, 出版时间,价格等。试设计一图书信息管理系统,使之提供以下功能: (1)系统以菜单方式工作(2)图书信息录入功能(图书信息用文本文件形式保存)(3)图书信息浏览功能(4)查询和排序功能:按书名查找按作者名查找(5)图书信息删除功能(6)图书信息修改功能2 .分析根据题目要求,应当把图书信息用结构体形式输入,再定义一个 全局变量和文件指针进行整个程序的运行,然后把图书信息送到文
5、件 中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需 实现图书信息录入,浏览,查询,排序,删除和修改等功能的操作, 所以需要建立相应的函数模块来实现;另外还需提供键盘式选择菜单 实现功能,在运行时达到所要目的。3 .总体设计根据题目要求,我们经过分析和讨论后,决定将此系统分为十个功 能模块:(1)菜单选择模块(2)图书信息录入功能模块(3)图书信息浏览功能模块(4)图书信息查询功能模块(5)图书信息排序功能模块(6)图书信息删除功能模块(7)图书信息修改功能模块(8)图书数据保存功能模块(9)信息文件打开功能模块(10)退出系统功能模块4 .主要功能的算法4.1 录入函数算法-13
6、 -4.2按书名查找算法(按作者名与此类似)4.3删除图书信息算法(修改与此类似)4.4显示函数算法5 .完整程序及注释#include<iostream.h> /* 引用库函数 */#include <stdio.h># include <string.h># include <conio.h># include <stdlib.h># include <windows.h>typedef struct book_info/定义图书信息的结构体变量并声明新的类型名char AN10;/*登录号*/char name20;
7、/*书名*/char author20;/*作者名*/char clc10;/*分类名*/char company20;/*出版单位*/char date20;/*出版日期*/char price10;/*价格*/struct book_info *next;Booklist,*Pointer;int num=0;/ 全局变量的定义Pointer Head=NULL;/ 头指针为空FILE *fp;/指向文件的指针/*声明函数*/int menu_select();/* 主菜单函数 */void Insert(Pointer * Head);/*录入函数 */void Scan(Pointer
8、 Head);/*显示函数 */void Search_name(Pointer Head);/*按书名查找函数 */void Search_author(Pointer Head);/*按作者名查找函数 */void Listbyname(Pointer *Head);/*按书名排序函数 */void Delete(Pointer * Head);/删除函数void Update(Pointer Head);/ 修改函数void Save();/用文本文件形式保存函数void Read();/读入文本文件函数void Exit();/退出函数void main() / 主函数system(&
9、quot;cls");/*运行前清屏 */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:Listbyname(&Head);break;case 6:Delete(&Head);break;case 7:Update(Head);break;case 8:Save();break;case 9:Read();br
10、eak;case 0:Exit();default:putchar('a'); menu_select() /主菜单函数 int a;printf("nttt欢迎使用图书信息管理系统nnnnntt * 请按任意键进入系统菜单! * n");getch();system("cls");printf("tt*MENU*n");/菜单printf("tt1.录入图书信息n");printf("tt2.浏览图书信息n");printf("tt3.按书名查询图书信息n"
11、);printf("tt4.按作者名查询图书信息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(&quo
12、t;%d",&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;/检测登录号是否重复while(p!=NULL)if(strcmp(p->AN,AN)=0)printf (" 已经有相同的登录
13、号:");return;elseq=p;p=p->next;r=(Pointer)malloc(sizeof(Booklist);r->next=NULL;if(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(
14、"%s”,r->author);getchar();printf("ntt 输入分类号:");scanf("%s”,r->clc);getchar();printf("ntt 输入出版单位:");scanf("%s”,r->company);getchar();printf("ntt 输入出版日期:");gets(r->date);printf("ntt输入价格:");scanf("%s”,r->price); doprintf("nt
15、t录入成功!");num+;printf("选择是否28续录入(Y/N)? : ");/*连续录入图书信息*/getchar();scanf("%c",&c);if(c='y'|c='Y')Insert(Head);elseif(c='n'|c='N')return;elseprintf("ntt输入错误,请重新输入!");while(c!='y'&&c!='n'&&c!='Y
16、9;&&c!='N'); void Scan(Pointer Head) /显示图书信息函数Pointer p;p=Head;if(p=NULL)printf("记录为空");/检测是否有图书信息 else叮叮小文库printf("nt共有 族记录",num);while(p!=NULL)printf("nntt登录号:-10s",p->AN);/ 显示图书信息printf("ntt书名:-20s",p->name);printf("ntt作者名:-20s&qu
17、ot;,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;printf("ntt请按任意键回到主菜单");return; void Search_name(Pointer Head) / 按书名查找函数
18、int flag=0;/标记变量的初值char name10;Pointer p;printf ("n请输入需要查询的书名:");scanf("%s",name);-32 -printf("ntt*以下是您查找的信息*"p=Head;while(p!=NULL)printf("nt登录号:%-10s”,p->AN);printf("nt书名:%-20s",p->name);printf("nt作者名:%-20s",p->author);printf("nt分
19、类号:%-10s",p->clc);printf("nt出版单位%-20s",p->company);printf("nt出版时间:%-20s",p->date);printf("nt价格:¥%-10s",p->price);flag=1;/找到标记变量设为1p=p->next;/ 指针走到下一个节点elsep=p->next;if(flag=0)printf("ntt没有相同书名纪录");printf("ntt请按任意键返回主菜单");g
20、etchar(); void Search_author(Pointer Head) / 按作者名查找函数 int flag=0;char 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);pri
21、ntf("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("nt价格:¥%-10s",p->price);flag=1;p=p->next;elsep=p->nex
22、t;if(flag=0)printf("ntt没有相同作者名纪录");printf("ntt请按任意键返回主菜单");getch(); void Listbyname(Pointer *Head) / 按书名排序函数Pointer p,q;int i,j;char t10;char c;if(Head=NULL)printf("ntt 没有任何资料! n");return;if(num=0)/检查是否存在数据可供排序printf("ntt图书信息记录为空! !请按任意键返回主菜单。");getchar();retu
23、rn;p=q=*Head;for(i=0;i<num;i+)/ 排序for (j=i+1;j<num;j+)q=p;p=p->next;/使指针指向下一个结点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->au
24、thor,t);strcpy(t,p->clc);strcpy(p->clc,q->clc);strcpy(q->clc,t);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
25、,t);strcpy(t,p->price);strcpy(p->price,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;/返回主菜单elseprint
26、f("ntt 输入错误,请重新输入!!");/错误则继续询问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&qu
27、ot;,AN);p=q=*Head;/*查找符合条件的图书*/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
28、t;,p->company);printf("tn出版时间:-20s",p->date);printf("tn价格:¥ %-10sn",p->price);printf("确定删除?确定请输Y,其它则不删除");/询问是否删除getchar();scanf("%c",&z);if(z='Y'|z='y') if(p=*Head) *Head=p->next;free(p);/*删除图书信息*/elseq->next=p->next
29、;free(p); flag=0; elseprintf("图书信息未删除,返回主菜单。");return;elseq=p;p=p->next;/*指针走到下一个节点*/printf("tt删除成功! ! n"); if(flag) printf("t没有找到可以删除的数据!!");doprintf("选择是否28续删除(Y/N)? : ");/*连续删除图书信息*/getchar();scanf("%c",&c);if(c='y'|c='Y')De
30、lete(Head);/* 继续删除 */ else if(c='n'|c='N') return;/* 不删除返回主菜单*/ elseprintf("ntt输入错误,请重新输入!");while(c!='y'&&c!='n'&&c!='Y'&&c!='N');void Update(Pointer Head) /* 图书信息修改函数 */int flag=1;char AN10;char c;Pointer p;printf(&q
31、uot;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("ntt输入书名:");scanf("%s”,p->name);getchar();printf(
32、"ntt输入作者名:");scanf("%s”,p->author);getchar();printf("ntt输入分类号:");scanf("%s”,p->clc);getchar();printf("ntt 输入出版单位:");scanf("%s”,p->company);getchar();printf("ntt输入出版日期:");gets(p->date);printf("ntt输入价格:");scanf("%s”,p-&g
33、t;price);flag=0;printf("修改成功!n");elsep=p->next;/* 指针走到下一个节点*/if(flag)printf("ntt 没有该图书记录!");doprintf("选择是否28续修改(Y/N)? : ");/*连续修改图书信息*/getchar();scanf("%c",&c);if(c='y'|c='Y')Update(Head);/* 继续修改 */elseif(c='n'|c='N')retu
34、rn;/不修改,返回菜单elseprintf("ntt输入错误,请重新输入!");输入错误则继续询问while(c!='y'&&c!='n'&&c!='Y'&&c!='N');void Save()/*以文本文件形式保存的函数*/Pointer p;p=Head;char file20; /*用来存放文件保存路径以及文件名*/printf("请输入文件路径及文件名:”);scanf("%s",file);if(fp=fopen(fil
35、e,"w+")=NULL)/* 判断能否打开文件 */ printf("不能打开文件!n");return; while(p!=NULL) fprintf(fp,"%st%st%st%st%st%st%sn",p->AN,p->name,p->author,p-> clc,p->company,p->date,p->price);/将数据写入文件p=p->next;/* 下移一个结点*/ fclose(fp);/ 写入完成,关闭文件 printf("文件已经保存!n"
36、);return ; void Read() /*读入文本文件的函数*/Pointer p,q;int m=0;char file20;printf("请输入文件路径及文件名:”); scanf("%s",file);/*输入文件路径及名称*/if(fp=fopen(file,"r+")=NULL)检查文件是否存在 printf("不能打开文件!n");return; m=m+1; if(m=1) p=(Pointer)malloc(sizeof(Booklist);/*开辟一个新单元 */Head=p;/将p的地址赋给头指
37、针 Head fscanf(fp,"%st%st%st%st%st%st%stn",&p->AN,&p->name,&p->author ,&p->clc,&p->company,&p->date,&p->price);/* 文件读入 */ do num=num+1;/记录书籍信息量 if(num=1) / 区别开链表开头与中间的处理方法 Head->next=p; else q->next=p; q=p; p=(Pointer)malloc(sizeof(Book
38、list); /*开辟一个新单元 */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->next=p; p->next=NULL;/链表结尾处理 num=num+1;正确的图书信息量 printf("
39、;写入数据成功,可返回浏览其信息。"); fclose(fp);/*结束读入,关闭文件*/return; void Exit() /*退出程序的函数*/char c;doprintf("ntt 退出中是否保存到文件(Y/N)?");/*询问是否保存图书信息,防止丢失*/getchar();scanf("%c",&c);if(c='y'|c='Y')Save();exit(0);else if(c='n'|c='N')exit(0);elseprintf("ntt输
40、入错误,请重新输入!!");while(c!='y'&&c!='n'&&c!='Y'&&c!='N');/错误则继续询问6 .调试分析主菜单界面F 力I” 1士 费川曲 勺5小,口rUTSrff A *,4,m # 1g用图*速 "霞1?由 一书书书尚选泽5A需由内脏寻,!1rlm*»1*# 涓胃彳:法甘若 t,wv-ferWMirvwwwr 1空应, 时孙高受教竽 罗虎羯宋柏生1k当联用七比京 CKI tK AdVan斗弓盘"+L星口版
41、9;"于士挈出此社E白 10 Ai fit¥?¥寸4壬吐!不X.TW亲父<相.5 J ± :讦耳.?里帆 .T,:位间 号:.用中时 窘| 合中斤寸七.L;1-2345678-0通信询查MW文可节*石零书善心书书in=<济言行计俘图臼iF.«. 书 心图询肮入叠聚4n输入书名同*言送归£普西馆J常及隹苦宅:Q得希国及分典号|力丸山版里世;清华一大条出版社罚入:出版7中;$巾|小而fit就人价唁:的T人域0," 1渔I革三吉也.+X入仃5 f :浏览图书信息页面线性键数苛建之科学出版社按书名查询图书信息页面谪输入第瞥五诃的书名i军事在饱雌I卜;粒同当.-当咱r皆泊咸与rt韦杳!I出P*以Ft专处:吏找郭IT 4二、.nlWWg按作者查询图书信息页面查,EM 也>r獐造薛客印播空计服号:4:曷弓.丁弄4町;工由7,中世艮帘以&l
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宁夏银川外国语实验校2026届中考试题猜想语文试卷含解析
- 玄芪平消汤对早期糖尿病肾病防治作用的实验探究
- 猪血红蛋白及戊二醛聚合猪血红蛋白分离纯化工艺的深度剖析与创新探索
- 纺织厂生产调度管理制度
- 某铝业厂生产流程操作细则
- 中百集团百年品牌打造
- 2026年孕中期唐氏筛查告知练习题
- 2026年青年干部求职面试礼仪知识题库
- 2026年民族知识竞赛专用题库
- 2026年未成年人媒介素养提升与信息辨别题库
- 湖南省长沙市湖南师大附中教育集团2022-2023学年七下期中数学试题(原卷版)
- 洞箫曲谱200首带目录
- 2024年山东省泰安市中考物理试卷(附真题答案)
- GB/T 44585.1-2024风险管理在接入IT网络的医疗器械中的应用第1部分:联网医疗器械或健康软件在其实施和使用中的安全、有效性和网络安全
- PAS 2050:2011-商品和服务在生命周期内的温室气体排放评价规范(英文)
- 23J916-1 住宅排气道(一)
- DL-T2078.2-2021调相机检修导则第2部分:保护及励磁系统
- 手术患者安全转运与交接
- GB/T 43924.2-2024航空航天MJ螺纹第2部分:螺栓和螺母螺纹的极限尺寸
- 农业机械设计手册上册
- 2024年广东中山市文化广电旅游局招聘笔试冲刺题
评论
0/150
提交评论