图书信息管理系统设计

上传人:无*** 文档编号:33315924 上传时间:2021-10-17 格式:DOCX 页数:35 大小:697.03KB
返回 下载 相关 举报
图书信息管理系统设计_第1页
第1页 / 共35页
图书信息管理系统设计_第2页
第2页 / 共35页
图书信息管理系统设计_第3页
第3页 / 共35页
点击查看更多>>
资源描述
精品文档东南大学C语言课程设计报告课程名称:计算机综合课程设计学 院:土木工程学院设计题目:图书信息管理系统设计级 别:A 级学生姓名:学 号:同组学生:学 号:指导教师:2012年09月05日课程报告任务书题目图书信息管理系统主 要 内 容图书信息包括:登录号,书名,作者名,分类号,出版单位, 出版时间,价格等。试设计一图书信息管理系统,使之提供以 下功能:1) 系统以菜单方式工作;2) 图书信息录入功能(图书信息用文本文件形式保存);3) 图书信息浏览功能;4) 查询和排序功能:按书名查找;按作者名查找;5) 图书信息删除功能;6) 图书信息修改功能。任 务 要 求采用模块化程序设计;鼓励可视化编程;源程序中应肩足够的注释;学生可自行增加新功能模块(视情况可另外加分);必须上机调试通过;注重算法运用,优化存储效率与运算效率;需提交源程序(含有注释)及相关文件(数据或数据库文件);(cpp文件、txt或dat文件等)提交设计报告书成绩评定评定 教师摘要: 随着当今社会发展,信息化水平逐步提高,对图书管理有了新的要求,因此,编写一个信息管理系统是十分必要的。为了满足图书管理的要求, 通过计算机技术给图书管理人员带来便利。 使用C 语言编写图书管理系统,其中主要运用了结构化设计与链表结构。本系统主要实现图书信息管理的功能, 通过此系统可对图书馆库存图书信息进行管理和维护操作。实现了图书馆内管理的一般功能,包括图书信息录入、浏览、排序、删除和修改等功能。所设计的系统以菜单方式工作, 为用户提供清晰的使用提示, 依据用户的选择来进行各种处理。图书信息包括登录号、书名、作者名、分类号、出版单位、出版时间、价格等。图书信息的录入和显示要求有一定的规范格式,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、 删除和修改等基本操作。关键字:图书信息管理C 语言 链表 结构目录1. 设计的目的与要求42. 分析 43. 总体设计 54. 主要功能算法55. 完整程序及注释86. 调试分析 247. 总结 288. 答辩记录 299. 教师意见 291 .设计的目的与要求1.1 设计的目的使用链表和结构等结构数据,编写一 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 录入函数算法-7 -欢迎下载4.2按书名查找算法(按作者名与此类似)4.3 删除图书信息算法(修改与此类似)4.4显示函数算法5 .完整程序及注释#include /* 引用库函数 */#include # include # include # include # include typedef 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;/ 指向文件的指针/* 声明函数 */int menu_select();/* 主菜单函数*/void Insert(Pointer * Head);/* 录入函数 */void Scan(Pointer 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(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();break;case 0:Exit();default:putchar(a); menu_select() / 主菜单函数 int a;请按任printf(nttt 欢迎使用图书信息管理系统nnnnntt *意键进入系统菜单! * n);getch();system(cls);printf(tt*MENU*n);/菜单- 9 -欢迎下载。精品文档printf(tt1.录入图书信息 n);printf(tt2.浏览图书信息 n);printf(tt3.按书名查询图书信息 n);printf(tt4.按作者名查询图书信息 n);printf(tt5.图书信息排序 n);printf(tt6.删除图书信息 n);printf(tt7.修改图书信息 n);printf(tt8.图书数据保存n);printf(tt9.图书信息文件打开n);printf(tt0.退出 n);printf(tt*n);do printf(nt 请选择您所需要的服务: );scanf(%d,&a);while (a9);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;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(%s,r-author);getchar();printf(ntt 输入分类号:);scanf(%s,r-clc) ;getchar();printf(ntt 输入出版单位:);scanf(%s,r-company) ;getchar();printf(ntt 输入出版日期 :);- 11 。-欢迎下载精品文档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);elseif(c=n|c=N)return;elseprintf(ntt 输入错误,请重新输入!);while(c!=y&c!=n&c!=Y&c!=N);void Scan(Pointer Head) / 显示图书信息函数Pointer p;p=Head;if(p=NULL)printf( 记录为空 );/ 检测是否有图书信息printf(nt共有 族记录,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;printf(ntt 请按任意键回到主菜单);return; void Search_name(Pointer Head) / 按书名查找函数int flag=0;/ 标记变量的初值char name10;Pointer p;printf (n 请输入需要查询的书名: );scanf(%s,name);- 15 。-欢迎下载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,p-author);printf(nt分类号:%-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 请按任意键返回主菜单);getchar(); 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);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(ntflag=1;价格:%-10s,p-price);p=p-next;elsep=p-next;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();return;p=q=*Head;for(i=0;inum;i+)/ 排序for (j=i+1;jnext;/ 使指针指向下一个结点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,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,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);/ 显示排序结果 else if(c=n|c=N)return;/ 返回主菜单printf(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;else- 19 。-欢迎下载printf(ntt*图书删除*n);printf(t 请输入要删除图书的信息的登录号: );scanf(%s,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,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;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);if(c=y|c=Y)Delete(Head);/* 继续删除 */elseif(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(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(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-price);flag=0;printf( 修改成功 !n);elsep=p-next;/* 指针走到下一个节点 */if(flag)printf(ntt 没有该图书记录!);doprintf( 选择是否继续修改(Y/N)? : );/* 连续修改图书信息*/getchar();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);/输入错误则继续询问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-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);/* 输入文件路径及名称 */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-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(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-next=p; p-next=NULL;/ 链表结尾处理 num=num+1;正确的图书信息量printf( 写入数据成功,可返回浏览其信息。 );fclose(fp);/* 结束读入,关闭文件*/return;- 23 。-欢迎下载精品文档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输入错误,请重新输入!!);while(c!=y&c!=n&c!=Y&c!=N);/错误则继续询问6.调试分析主菜单界面-31独迎下载II 书岳*息僚*另膏 I书由Me.lr.总 他录入信息页面浏览图书信息页面i条七不院住代.就 摩建七1零数匕出幅吐SM l K CMcifr.-f1第臼股1 管的3nr2 - E .:位周 母W!-时: .T-r用工可梆 ,宝于三匚行;隹间 号一息卓时, 1K名MWis 呼老尊it恭三华大学七所社之前6虹心h豆黄栗泰怕生 - r l:rf-按书名查询图书信息页面二9 i919-hBalBK 133456.7 899 Ktl;L,除改 ;|:KMIE他酒占树fr住区上 HT查/.T 下皆 午壬自仁 M M M K X M情遨择盘所需芟的眼算m5名笃事理沱芭桂MX 以 卜般 信盟 一 M . 幅 *川 f* i 4_专上军里里公力程作者左索薮蕾蕊昆普京大早出版社 出咕时同:3后睡TH-HS 脚队 ”4蔡程者蜒返回主窕单.可鼻海的忏fi Z,除卡才请选择您所需我的蜃务,T :位同 H七号单忖,息 看雪 开 基 疗 M甯皆版画目料层行 一 HH 图包春图售修圈限 3 14t-6793按作者查询图书信息页面叠性怛扬陈尼蚪孚匕加社* ”日】G 0图书信息按书名排序页面田UgfjdT-r:F.?,J,K 丰JUM谢设计荒凹版j 省浩建3华大浮出嘛社wain 1?号:的!-亲A -T-tu亨匕吟电高三吊.土 匕乔r他生商号莪苜出崛枝 2RH . (M Yew. .ffi号看1.单时:?.-与;.,一南京大学出炊社2R Sfl 8R工4(2)选择删除删除图书信息页面(1)选择不删除希i七里一秒6wrKviwkirvwYr9v#iiiwn m|FKM wi-n -恸t诵艰1i .iilj阿眼产k维工轿F蝌El;修改图书信息页面保存文本文件界面息一言I-W住 I? 开F 图 打*,己咽TGnxtt -qJn.2y于一二襟W j甘雪,,台骸窑富:迎他用图书信息三呷斗.泊1* -3盎仔评惘送人至女英,-H5”打开文本文件界面写入界面写入后浏览界面3TH用工Im二苫口工一工与&.五i-T 一二一分任间耳_| 弓 J?r说丈j南豆蚌出蹴2 Mi tl W h嚣3筮?:明陵:欣9电斓晚城苫而- -. . 公5E岳r,恺 不 耳&町 口 7 口 3KT司-FR 工Nr亏工匚JbxuiBJ工; 书K 4tp.mH书看鼻m卿 11 趾员朋饵型招翎弓币* 一” 二 士千8.卢二一,E*退出程序界面情书 开 不聿 打 *普厅而智J 七书由心tEFB害 nn,.u,t-n i,书窄用.竹书出豫西轴薪用豪的服务.3臼中是古畀存智文件“FOX海昵,iSSSiLV 4愚三田.一.一呈若丁仟手B件臼小产产 悟期.仁二府路校及工牛4由程序的的调试结果可以看出,程序的各个功能运行正确无误,能达到要求。7.总结为了达到图书管理系统的要求,我们对各个功能分别设计一个函数, 来完成 特定的功能要求,再逐个进行编写,把复杂的程序简单化。最终,我们很好的编 写了该图书信息管理系统,实现了图书馆内管理的一般功能,包括图书信息录入、 浏览、查询、排序、删除、修改和保存文本文件等功能。只是我们的程序略显繁 琐,还有待改进。C语言编程是一件很有趣的事,看着自己编写的程序能执行复杂的功能,有 一种成就感。可是编程和调试的过程却是枯燥、繁琐的,特别是大的程序。但这 其中不断发现问题,解决问题的过程, 让我对C语言有了更深的了解,也锻炼了 我的能力。我发现我越发喜欢上了编程。编写一套系统,要充分考虑程序的简洁精品文档明了, 同时又要考虑充分实现系统的功能, 最后还要考虑用户的需求与现实意义。这样才能编写出好的程序。同时我也明白了合作的重要性。 一个大的编程,一个人要花很大的精力,往往很难独自完成,通过分工合作后,大的问题简单化,更容易解决。参考文献1 .谭浩强主编,C程序设计(第四版),清华大学出版社,20102 .谭浩强主编,C程序设计(第四版)学习辅导,清华大学出版社,20108. 答辩记录9. 教师意见- 33 。-欢迎下载精品文档欢迎您的下载,资料仅供套考!致力为企业和个人提供合同协议, 策划案计划书,学习资料等等打造全网一站式需求-31独迎下载
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 其他分类 > 其它学术


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!