欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    图书信息管理系统设计(共30页).docx

    • 资源ID:13326216       资源大小:687.08KB        全文页数:30页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    图书信息管理系统设计(共30页).docx

    精选优质文档-倾情为你奉上东南大学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. 教师意见-29 1. 设计的目的与要求 1.1设计的目的 使用链表和结构等结构数据,编写一C语言程序,实现图书信 息管理的功能,通过此系统可对图书馆图书信息进行管理和维护等操作,给图书管理人员带来便利。 1.2设计的要求 图书信息包括:登录号,书名,作者名,分类号,出版单位,出版时间,价格等。试设计一图书信息管理系统,使之提供以下功能:(1) 系统以菜单方式工作(2)图书信息录入功能(图书信息用文本文件形式保存)(3)图书信息浏览功能(4)查询和排序功能: 按书名查找 按作者名查找(5)图书信息删除功能(6)图书信息修改功能2.分析根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,排序,删除和修改等功能的操作,所以需要建立相应的函数模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。3.总体设计 根据题目要求,我们经过分析和讨论后,决定将此系统分为十个功能模块:(1) 菜单选择模块(2) 图书信息录入功能模块(3) 图书信息浏览功能模块(4) 图书信息查询功能模块(5) 图书信息排序功能模块(6) 图书信息删除功能模块(7) 图书信息修改功能模块(8) 图书数据保存功能模块(9) 信息文件打开功能模块(10) 退出系统功能模块4. 主要功能的算法 4.1 录入函数算法 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; /*书名*/ 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");/主菜单 printf("tt 1. 录入图书信息n"); printf("tt 2. 浏览图书信息n"); printf("tt 3. 按书名查询图书信息n"); printf("tt 4. 按作者名查询图书信息n"); printf("tt 5. 图书信息排序n"); printf("tt 6. 删除图书信息n"); printf("tt 7. 修改图书信息n"); printf("tt 8. 图书数据保存n"); printf("tt 9. 图书信息文件打开n"); printf("tt 0. 退出n"); printf("tt*n"); do printf("nt请选择您所需要的服务:"); scanf("%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 ("已经有相同的登录号:");return; else q=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输入出版日期:"); 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=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;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)/查找符合的图书 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;/找到标记变量设为1 p=p->next;/指针走到下一个节点 else p=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("nt价格: ¥%-10s",p->price); flag=1; p=p->next; else p=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;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->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;/返回主菜单 else 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;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; else printf("图书信息未删除,返回主菜单。"); return; else q=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);/*继续删除*/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&&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"); 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 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);/*文件读入*/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->next=p;p->next=NULL;/链表结尾处理num=num+1;/正确的图书信息量printf("写入数据成功,可返回浏览其信息。");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输入错误,请重新输入!");while(c!='y'&&c!='n'&&c!='Y'&&c!='N');/错误则继续询问6. 调试分析 主菜单界面 录入信息页面 浏览图书信息页面 按书名查询图书信息页面 按作者查询图书信息页面 图书信息按书名排序页面 删除图书信息页面 (1)选择不删除 (2)选择删除 修改图书信息页面 保存文本文件界面 打开文本文件界面 写入界面 写入后浏览界面 退出程序界面 由程序的的调试结果可以看出,程序的各个功能运行正确无误,能达到要求。7.总结为了达到图书管理系统的要求,我们对各个功能分别设计一个函数,来完成特定的功能要求,再逐个进行编写,把复杂的程序简单化。最终,我们很好的编写了该图书信息管理系统,实现了图书馆内管理的一般功能,包括图书信息录入、浏览、查询、排序、删除、修改和保存文本文件等功能。只是我们的程序略显繁琐,还有待改进。C语言编程是一件很有趣的事,看着自己编写的程序能执行复杂的功能,有一种成就感。可是编程和调试的过程却是枯燥、繁琐的,特别是大的程序。但这其中不断发现问题,解决问题的过程,让我对C语言有了更深的了解,也锻炼了我的能力。我发现我越发喜欢上了编程。编写一套系统,要充分考虑程序的简洁明了,同时又要考虑充分实现系统的功能,最后还要考虑用户的需求与现实意义。这样才能编写出好的程序。同时我也明白了合作的重要性。一个大的编程,一个人要花很大的精力,往往很难独自完成,通过分工合作后,大的问题简单化,更容易解决。参考文献1. 谭浩强主编,C程序设计(第四版),清华大学出版社,20102. 谭浩强主编,C程序设计(第四版)学习辅导,清华大学出版社,20108. 答辩记录9.教师意见专心-专注-专业

    注意事项

    本文(图书信息管理系统设计(共30页).docx)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开