版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、图书信息管理系统课程设计报告 指导老师:任姚鹏 班 级: 1204 学生姓名:沈彬峰 杨庆忠 高升 赵淑欣 梁铭阳 学 号 :50 04 30 24 54 完成日期:2013.11.30 运城学院计算机科学与技术系目录问题概述-3系统目标-3设计的过程及步骤-3函数设计-4系统实现-7主要问题及解决措施-15总结-16参考文献-16一、问题概述(对问题背景及主要实现的功能进行简要说明。)随着图书馆图书的不断增加,图书管理的难度也随之加大,一个好的图书馆图书信息管理系统,能够使图书管理工作简便,有条不紊。通过C语言学习,我们已经能够完成基本的C语言编程,此次实训,是将学习和实践结合,充分感受C语
2、言解决实践问题的魅力。此次编写的图书馆信息管理系统,能够实现基本的图书管理功能。它包括图书库的创建,打印图书信息表,录入新图书,修改图书信息,删除图书信息。图书库包含图书的各方面信息,编号,类型,作者,出版社,等等,并且打印图书信息表。录入,修改,删除这些功能都是对图书库的操作。借书,还书这两项最重要的功能也都能很好的实现。把此系统应用于图书馆的图书管理,能使图书馆的各项工作便捷,可靠的完成。二、系统目标 2.1(对系统技术的目标)根据所学的程序设计基础原理与程序设计的知识,能够针对一个小型的程序设计基础管理系统,进行系统的需求分析,系统设计,程序设计基础设计,编码,测试等,完成题目要求的功能
3、,从而达到掌握开发一个小型系统程序设计的目的。2.2(对系统技术的要求)图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:1图书信息录入功能(图书信息用文件保存)2图书信息浏览功能3查询或排序功能:(至少一种查询方式)(1)按书名查询(2)按作者名查询注:查询结果用链表的形式保存并输出4图书信息的删除与修改三、设计的过程及步骤1、需求分析(描述系统需求,既详细分析系统需求和功能)根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的
4、输入输出等操作;在程序中需实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。2、设计文件结构(设计文件结构,并扼要说明设计缘由)此系统根据所要实现的功能,使用的函数等综合考虑,设计了文件名为book的二进制文件用来存储载入图书信息,通过使用存储和载入图书信息,进一步进行录入新图书,修改,删除图书等一系列操作,两步操作相互结合,使各个功能很好的实现了,运用C语言的文件功能,也是整个程序的主线。 3、设计系统功能图(根据需求分析结果和文件结构,应用结构化分析与设计技术设计功能结构图,如下图所示)图书信息管理
5、系统 查询图书信息输入图书信息按书名修改图书信息浏览图书信息载入图书信息存储图书信息按书名删除图书信息按书名查询按作者名查询退出系统 四、函数设计( 详细分析每一个子模块的子功能,定义主要的子函数原型,并对每一个函数的功能加以说明)4.1此系统主要有7个功能,也就有主要的7个函数,他们分别是enter(book); /输入图书信息list(book); /浏览图书信息search(book); /查询图书信息modify(book); /修改图书信息del(book); /删除图书信息save(book); /存储图书信息load(book); /载入图书信息exit(0); /退出系统4.2
6、每个函数所用到的主要的数据结构是结构体:struct books char no20; /登录号 char booknum20; /分类号 char bookname20; /书名 char authorname20; /作者 char cbs20; /出版社char time20; /出版时间 char price5; /图书价格 struct books *next; struct books *prior; ; 4.3界面设计这是程序刚运行时的界面,界面上共有1-8八个选项,界面简洁大方,让用户一目了然。这是输入图书信息时的界面,图书基本信息一共有七个输入项,分别是登录号、书名、作者名、
7、分类号、出版单位、出版时间、价格。在这一模块中,每输入一本图书的信息都要输入一个编号,这个编号便于管理员的管理和查找,节省时间。这是存储信息界面:这是查看完整信息的界面,在这里大家可以看到图书的所有信息。 这是查询图书信息的界面,在这里大家可以看到所要查找的图书信息这是修改图书信息时的界面,在这个界面只需要输入该图书的名字就可以修改该图书的其他信息,方便了工作人员,简洁方便。继续修改界面:这是删除图书信息时的界面,只需要输入该书的名字就可以删除与之相关的信息,方便了工作人员的管理。这是载入信息界面:五、系统实现#include #include #include /*-定义books结构体-*
8、/struct books char no20; /登录号 char booknum20; /分类号 char bookname20; /书名 char authorname20; /作者 char cbs20; /出版社char time20; /出版时间 char price5; /图书价格 ;/*-建立一个链表-*/typedef struct node struct books data; struct node *next; Node;/*-函数声明-*/void enter(Node *book); /输入图书信息void list(Node *book); /浏览图书信息void
9、 search(Node *book); /查询图书信息void modify(Node *book); /根据书名查找并修改信息void del(Node *book); /删除图书信息void save(Node *book); /存储图书信息void load(Node *book); /载入图书信息/*-输入图书信息-*/void enter(Node *book)/输入图书信息Node *p,*r,*s; char n10; /先用于输入图书分类号,也用于判断是否跳出循环 r=book; s=book-next; /使s为第一个有用的结点 while(r-next!=NULL) /这
10、个循环的作用是使r为最后一个有用的结点 r=r-next; /将指针置于最末尾 while(1) system(cls); /清屏 printf(提示:输入0则返回主菜单!n); printf(n请你输入登录号:); scanf(%s,n); if(strcmp(n,0)=0) break; p=(Node *)malloc(sizeof(Node); /申请空间 strcpy(p-data.no,n); printf(n请输入分类号:); scanf(%s,p-data.booknum); printf(n请输入书名:); scanf(%s,p-data.bookname); printf(
11、n请输入作者名:); scanf(%s,&p-data.authorname); printf(n请输入出版社:); scanf(%s,&p-data.cbs); printf(n请输入出版时间:); scanf(%s,&p-data.time); printf(n请输入图书价格:); scanf(%s,&p-data.price); printf(提示:已经完成一条记录的添加。n); p-next=NULL; r-next=p; /这一步是必需的,将p与先前的链表连起来构成一条新链表 r=p; /也是必需的.将r 又重设为新链的最后一个有用结点 /*-浏览图书信息-*/void list(N
12、ode *book) /浏览图书信息Node *p=book; system(cls); /清屏 if(!p) printf(n提示:没有记录可以显示!n); return; printf(登录号t书号t 书名 t作者t 出版社t 出版时间 图书价格n); while(p-next) printf(n%-10s%-6s%-18s%-10s%-15s%-10s%-5sn,p-data.no,p-data.booknum,p-data.bookname,p-data.authorname,p-data.cbs,p-data.time,p-data.price); p=p-next; /*-查询图书
13、信息-*/void search(Node *book) /查询图书信息 Node *p; int sel;int flag2=0,ha=0; char find20; system(cls); /清屏 p=book-next; if(!book-next)/若链表为空 printf(n提示:没有资料可以查询!n); return; printf(提示:n=0退出n=1按书名查询n=2按作者名查询n); scanf(%d,&sel); if(sel=1) printf(n输入你要查询的书名:); scanf(%s,find); while(p) if(strcmp(p-data.booknam
14、e,find)=0) flag2+; if(flag2=1&ha!=flag2) printf(登录号t书号t 书名 t作者t 出版社t 出版时间 图书价格n); printf(n%-10s%-6s%-18s%-10s%-15s%-10s%-5sn,p-data.no,p-data.booknum,p-data.bookname,p-data.authorname,p-data.cbs,p-data.time,p-data.price); ha=flag2; /end if else if(flag2ha) printf(n%-10s%-6s%-18s%-10s%-15s%-10s%-5sn,
15、p-data.no,p-data.booknum,p-data.bookname,p-data.authorname,p-data.cbs,p-data.time,p-data.price); ha=flag2; /end if p=p-next; /end while if(flag2) printf(n*按设备名称%s查询的有%d条记录:*nn,find,flag2); else printf(n按书名%s查询的结果为0个nn,find); /end if else if(sel=2) printf(n输入你要查询的作者名:); scanf(%s,find); while(p) if(st
16、rcmp(p-data.authorname,find)=0) flag2+; if(flag2=1&ha!=flag2) printf(登录号t书号t 书名 t作者t 出版社t 出版时间 图书价格n); printf(n%-10s%-6s%-18s%-10s%-15s%-10s%-5sn,p-data.no,p-data.booknum,p-data.bookname,p-data.authorname,p-data.cbs,p-data.time,p-data.price); ha=flag2; /end if else if(flag2ha) printf(n%-10s%-6s%-18s
17、%-10s%-15s%-10s%-5sn,p-data.no,p-data.booknum,p-data.bookname,p-data.authorname,p-data.cbs,p-data.time,p-data.price); ha=flag2; /end if p=p-next; /end while if(flag2)printf(n*按设备名称%s统计的有%d条记录:*nn,find,flag2); else printf(n按作者名%s查询的结果为0个nn,find); /end if else if(sel=0) return;/*-修改图书信息-*/void modify(
18、Node *book) /根据书名查找并修改信息 char name20; int c,b,t; Node *p; system(cls); /清屏 list(book); if(!book-next) printf(n提示:没有资料可以修改!n); return; printf(请输入你要查询的书名:); scanf(%s,name); p=book-next; while(p!=NULL) if(strcmp(p-data.bookname,name)=0) /如果找到的话返回的是符合要求 break; p=p-next; if(p) printf(n需要进行修改的选项n 1.登录号 2.
19、分类号 3.书名 4.作者名 5.出版社 6.出版时间 7.图书价格n); printf(请输入你想修改的那一项序号:n); scanf(%d,&c); if(c8|cdata.no); break; case 2: printf(n请输入分类号:); scanf(%s,p-data.booknum); break; case 3: printf(n请输入书名:); scanf(%s,p-data.bookname); break; case 4: printf(n请输入作者名:); scanf(%s,&p-data.authorname); break; case 5: printf(n请输
20、入出版社:); scanf(%s,&p-data.cbs); break; case 6: printf(n请输入出版时间:); scanf(%s,&p-data.time); break; case 7: printf(n请输入图书价格:); scanf(%s,&p-data.price); break; /end switch printf(n); printf(n是否确定所修改的信息?n 是 请按1 ; 不,重新修改 请按2: n); scanf(%d,&b);while(b=2); printf(n浏览修改后的所有图书信息:n); printf(n); list(book); save
21、(book); printf(n继续修改请按1,不再修改请按0n); scanf(%d,&t); switch(t) case 1:modify(book);break; case 0:break; default :break; /end switch /end if/*-删除图书信息-*/void del(Node *book) /删除图书信息 Node *p,*r,*s; char find50; system(cls); /清屏 if(!book-next) printf(n提示:没有资料可以显示!n); return; printf(n提示:请输入您要删除的图书的名字!n); sca
22、nf(%s,find); p=book-next; while(p!=NULL) if(strcmp(p-data.bookname,find)=0)/如果找到的话返回的是符合要求 break; p=p-next; if(!p) printf(n提示:找不到您想删除的图书分类号!n); else r=book; while(r-next!=p) r=r-next; s=r-next; r-next=r-next-next; /*-存储图书信息-*/void save(Node *book) /存储图书信息 int n; Node *p; FILE *fp;printf(需要保存吗?(1-保存
23、0-不保存));scanf(%d,&n);if(n) if(book-next=NULL)printf(无记录);else p=book-next; if(fp=fopen(books.txt,w+) = NULL) /打开文件,并判断打开是否正常 printf(打开文件出错!n); / 打开文件出错 exit(1); p=book-next; while(p!=NULL) fprintf(fp, %s %s %s %s %s %s %sn,p-data.no,p-data.booknum,p-data.bookname,p-data.authorname,p-data.cbs,p-data.
24、time,p-data.price);/*从文件读入记录*/ p = p-next; fclose(fp); /end if/*-载入图书信息-*/void load(Node *book) /载入图书信息 Node *p,*q; FILE *fp=NULL;/指向文件的指针 int recordNum;/ 统计记录数 if(fp=fopen(books.txt,r+)= NULL) /打开文件 printf(打开文件出错!n); /不能打开 exit(1); p=book; recordNum = 0; while(!feof(fp) q=(Node*)malloc(sizeof(Node)
25、; fscanf(fp, %s %s %s %s %s %s %sn,p-data.no,p-data.booknum,p-data.bookname,p-data.authorname,p-data.cbs,p-data.time,p-data.price);/*从文件读入记录*/ p-next=q; q-next=NULL; p=q; recordNum+; fclose(fp); printf(文件里共有%d条记录:n,recordNum);/*-主函数-*/ void main() int flag; Node *p,*book; book=(Node*)malloc(sizeof(N
26、ode); book-next=NULL; p=book; dosystem(cls); /清屏printf(ntt*图书信息管理系统*n); printf(tt*tt|1.输入图书信息 *n); printf(tt*tt|2.浏览图书信息 *n); printf(tt*tt|3.查询图书信息 *n); printf(tt*tt|4.修改图书信息 *n); printf(tt*tt|5.删除图书信息 *n); printf(tt*tt|6.载入图书信息 *n); printf(tt*tt|7.退出系统 *n); printf(tt*nnn); printf(tt请输入以上序号进行选择:n);f
27、flush(stdin); /清除文件缓冲区scanf(%d,&flag); switch(flag) case 1: enter(book); save(book); system(pause); break; /输入图书信息 case 2: list(book); system(pause); break; /浏览图书信息 case 3: search(book); system(pause); break; /查询图书信息 case 4: modify(book); system(pause); break; /修改图书信息 case 5: del(book); system(pause
28、); break; /删除图书信息 case 6: load(book); system(pause); break; /载入图书信息 case 7: exit(0); system(pause); break; /退出系统default: printf(n提示:输入错误!n); break; /end switch while(flag!=0);六、程序调试结果,测试过程中遇到的主要问题及采取的解决措施 此次实践课编写的是一个应用程序,相对于以前我们见到的程序,它要大得多,对数据的输出格式也有较高要求,这次编程让自己对许多平时不注意的小的知识点有了新的巩固;我先编的主函数,调试后我又一个一个模块的往上加,每
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮业食品安全管理与监督手册(标准版)
- 金融风险管理理论与方法(标准版)
- 会议安全管理与应急预案制度
- 公共交通服务设施管理制度
- 车站环境卫生管理制度
- 养老院档案信息管理制度
- 2026年柳州银行股份有限公司招聘备考题库及完整答案详解一套
- 中信证券股份有限公司分支机构2026年校园招聘备考题库有答案详解
- 养老院入住老人健康监测制度
- 2026年重庆飞驶特人力资源管理有限公司派往某单位党建工作辅助岗招聘备考题库及完整答案详解1套
- 石子厂规范管理制度
- (高清版)DBJ∕T 13-278-2025 《福建省电动汽车充电基础设施建设技术标准》
- 2025年高一数学必修一数学竞赛模拟题
- QGDW11970.7-2023输变电工程水土保持技术规程第7部分水土保持设施质量检验及评定
- 2025至2030年中国止鼾器行业市场现状调查及前景战略研判报告
- 人教版信息科技五年级全一册 第26课 寻找最短的路径 课件
- 人民军队性质宗旨教育
- T-CEPPEA 5002-2019 电力建设项目工程总承包管理规范
- 护士长管理培训课件
- 暂缓行政拘留申请书
- TSG 21-2015《固定式压力容器安全技术监察规程》
评论
0/150
提交评论