数据结构-图书管理系统实验报告
图书管理系统实验报告
图书管理系统1、用例图(1)借阅者用例图说明:借阅者能够通过该系统进行以下活动:1)查找图书:借阅者可以通过图书名称或ISBN/ISSN号查找图书的详细信息。
2)登录系统:借阅者能够通过校园卡编号和相关密码登陆自助机器,查询图书信息、个人信息和进行图书预订。
3)查询个人信息:每一个借阅者都可以通过自助机器在登录后查询自己的信息,但是不允许在未授权的情况下查询他人的信息。
为了防止有人蓄意查看他人信息,所以系统登录绑定手机号,每次借阅者登录系统时,自身的手机就会收到验证短信,只有输入验证码,才能登录系统。
4)预订图书:在登录自助机器后,借阅者可以预订相关书籍内容。
5)借阅图书:借阅者可以通过图书管理员借阅相关书籍。
6)归还图书:借阅者通过图书管理员归还书籍,如果未按时归还,需要缴纳罚金。
(2)图书管理员用例图说明:图书管理员能够通过该系统进行以下活动:1)处理借阅:借阅者可以通过图书管理员借阅书籍。
当图书管理员处理借阅时,需要检查用户的合法性,如果不合法,不允许借阅书籍,如果之前该图书已经被该借阅者预订,需要删除其预订信息。
2)处理归还:借阅者可以通过图书管理员归还书籍,当借阅者借阅的书籍超过一定的期限时,图书管理员需要收取罚金。
(3)系统管理员用例图说明:系统管理员能够通过该系统进行以下活动:1)查询书籍信息:系统管理员有权限去查询各种图书的信息。
2)添加书籍:书籍的添加时通过系统管理员进行的,图书添加时要输入书籍的详细信息。
3)删除书籍:书籍的删除也是通过系统管理员进行的,图书删除时书籍的所有信息都将被删除。
4)修改书籍:书籍的信息可以被系统管理员修改。
5)查询读者信息:系统管理员有权限去查询读者的信息。
6)添加读者:读者的添加是通过系统管理员进行的,读者被添加时要输入读者的详细信息。
例如新生开学和旁听生补办校园卡时,系统管理员需要更新读者数据库。
7)删除读者:读者的删除也是通过系统管理员进行的,读者被删除时读者的所有信息都将被删除。
数据结构上机实验之(图书管理)
数据结构实验报告实验题目:简单个人图书管理系统一.问题描述学生在自己的学习和生活中会有很多书籍(包括电子出版物),对所购买的书籍进行分类和统计是一种良好的习惯。
如果以文件来存储相关书籍的各种信息,包括分类、书名、作者、购买日期、价格、简介等,辅之以程序来使用这些文件,并加以维护,从而使图书管理工作变得轻松而有趣。
1.基本要求(1)能够以文件存储书籍的各种相关信息。
(2)提供查询工作:可按照一种或多种关键字查找需要的书籍;(3)提供排序功能:可按照一种或多种关键字对所有书籍进行排序,比如按价格进行排序,并输出排序结果。
(4)提供图书信息维护:初始化、增加、删除、修改、打印输出。
(5)提供登录认证工作:具有户头、密码认证。
(6)使用界面要适当美观、便捷。
二.算法分析1.整体设计图书管理系统的基本功能是借书与还书,并且包含图书与读者两个类及其数据库。
图书类的功能在于存放及维护图书的基本信息,包括图书编号,书名,在架情况等等。
图书数据库的功能在于实现对图书的相关操作,例如,增加图书,删除图书,更改图书,查找图书,显示图书等功能。
读者类的功能在于存放及维护读者的基本信息,例如读者编号,读者姓名,读者密码等等。
读者数据库的功能在于实现对读者的相关操作,包括增加读者,更改读者,删除读者,查找读者,显示读者信息等功能。
就此,主界面设计为(1)借书.(2)还书(3)图书信息管理(4)读者信息管理2.(1)系统层次结构图:(2)借书流程图:借书失败借书失败的情况为: 1. 读者编号不存在时; 2. 密码错误时; 3.图书不存在时;4. 图书已被借出时其余正常情况均为借书成功(3)还书流程图 还书失败还书失败的情况为:1.读者编号不存在时.。
2.图书不存在时.3.该图书已还回时其余正常情况均能还书成功.3.详细设计(部分).图书类Book{①私有成员:inttag;//是否存在判断:0:存在,1:已删int no;//图书编号char name[20];//书名intonshelf;//是否在架判断:0:已被借,1:在架②公有成员:void setname(char na[]);//设置书名;void delbook();//删除图书;void addbook(intn,char *na);//增加图书;intborrowbook();//借书;void retbook();//还书;void disp();//显示;}图书库类BDatabase{①私有成员:int top; //图书记录指针Book book[Maxb]; //图书记录②公有成员:BDatabase();//构造函数;~BDatabase();//析构函数;intaddbook(intn,char *na) //增加图书;Book *query(intbookid) // 排序;void disp() //显示;void bookdata();//图书信息管理的实现}读者类Reader{②私有成员:int tag; //是否存在判断:0:存在,1:已删int key;//读者密码;int no; //读者编号;char name[10]; //读者姓名;intborbook[Maxbor];读者记录;③公有成员:void setname(char na[]);//设置读者姓名void delreader();//删除读者void addreader(intn,char *na,int Key);//增加读者void borrowbook(intbookid);//读者借书intretbook(intbookid);//读者还书void disp();//显示读者}读者库类RDatabase:{①私有成员:int top; //读者记录指针;Reader read[Maxr];读者记录;②公有成员:RDatabase();//构造函数;~RDatabase();//析构函数;intaddreader(intn,char *na,int Key); //添加读者;Reader *query(intreaderid) ; //读者排序void disp(); //显示读者;readerdata();//读者信息管理的实现}三.主要实验结果:主页面图书信息维护:选择3进入图书信息管理主页面选择1 新增图书选择5 显示图书选择2 更改图书信息选择5,显示更改后的结果图书排序输出在依次输入编号为789,456的两本书后,选择7图书信息管理其他功能不赘言.读者信息管理:主页面选择4,进入读者信息管理主页面选择1,新增读者选择5,显示读者因为还未借书,所以借书编号为空选择4,查找读者选择3,删除读者删除后的信息显示:图书馆基本功能的实现1.借书:如果密码正确密码错误书已被借出时此时图书信息为读者信息为2.还书还书成功还书后图书信息为还书后再还相同的书如果读者编号不存在退出系统四.设计总结在选择这个实验题目后,我们小组经过多次对实验需求的讨论,并且到图书馆及网上查阅相关资料后,终于确定下来程序的主要结构。
图书管理系统实验报告(精选9篇)
图书管理系统实验报告图书管理系统实验报告(精选9篇)在学习、工作生活中,报告使用的频率越来越高,我们在写报告的时候要注意逻辑的合理性。
我敢肯定,大部分人都对写报告很是头疼的,以下是小编收集整理的图书管理系统实验报告(精选9篇),希望对大家有所帮助。
图书管理系统实验报告1根据文件精神要求,学区召开专项图书排查清理安排会议,对此项工作进行了详细的安排部署,现将自查情况做如下汇报:一、学校图书基本情况学区现有六年制完校X所,附设幼儿园X个。
小学常规教学班X 个,学校现有图书室、阅览室各一个,楼道图书阅览区四处,各班均配备了“班班有个图书角”项目设施,,创建了班级图书角。
二、图书排查清理情况反馈1、接到上级部门关于图书排查清理通知后,我学区认真学习文件精神,组织全学区各六年级完校(教学点)、幼儿园负责人召开专项工作会议,对有出版社出版的普通图书,封面使用“教育部新课标推荐书目”“教育部新课标指定书目”“中小学生语文新课标必读书系”“新课标课外指定阅读丛书”“教育部重点推荐”“教育部推荐”或“新课标重点推荐”“新课标推荐”等名称,传递虚假信息,严重误导学生和家长的情况作了详细说明,对此类图书误导师生的问题提高了思想认识,并对任务进行合理安排,确保了此项活动有序开展。
2、学校组织实施了以图书管理员重点清查和班主任协助排查的工作机制,明确职责,上下联动,对此次专项清查工作进行了任务分解。
图书管理员对入册的语言类、文学类、艺术类图书分类检查,重点检查了文学类绘本、故事书、名著。
各班主任利用班队会认真清查了班级图书角图书,对不符合规定的图书登记上报,完成清理工作。
经排查,我校(园)配备部分图书由上级部门配备,学校自选图书均从正规渠道购置,采购时进行了严格的审查把关,学校各类图书封面均无上述违规标识,不存在冒用国家教育部名义的情况。
三、学校今后的打算1、加强组织领导。
学校加强对图书的管理,从图书的采购、整理入册等案方面加强审查,加强此类专项行动的组织领导,明确学校职责分工,将此次专项行动与加强学校管理有机结合,科学有序推进。
数据结构课程设计图书管理系统实验报告
数据结构课程设计课程设计实验报告院(系、部): 信息工程学院 姓 名: 计141范文虎指导教师签名:2016年 6月29日·北京Beijing Institute of PetrochemicalTechnology目录一.设计题目····································二.设计目的····································三.实验分工····································四.算法思想分析································五.算法描述实现································1.数据结构类型定义2.算法流程图3.程序代码六.运行结果····································七.结论········································一.设计题目图书管理基本业务模拟图书管理一般包括图书采编、图书编目、图书查询及图书流通(借、还书)等基本业务。
图书管理系统实验报告范文(精选5篇)
图书管理系统实验报告图书管理系统实验报告范文(精选5篇)随着人们自身素质提升,报告有着举足轻重的地位,不同的报告内容同样也是不同的。
其实写报告并没有想象中那么难,下面是小编整理的图书管理系统实验报告范文(精选5篇),欢迎大家借鉴与参考,希望对大家有所帮助。
图书管理系统实验报告1一学期来我担任图书管理员工作,以前总以为图书室的工作只是简单的“借借还还”,其实他是一种学术性、技术性、创造性极强的工作,同时也是一种复杂、细致而繁琐的体脑结合的艰苦工作。
需要耐心、细致、周到的服务态度。
一、重视学习,不断提高自身业务素质。
图书室的工作看似简单的"借借还还",但却是一种学术性、技术性、创造性很强的的工作,同时也是一种复杂、细致而繁琐的、体脑结合的艰苦工作,既需要有耐心、细致、周到的服务态度,也需要有良好的专业水平。
所以,我除了勤奋踏实地工作外,平时还不断地注重提高自身素质,包括政治素质和业务素质,业务技能得到大大的提高。
二、充分发挥图书室的教育教学服务功能。
科学管理是图书室工作的手段,而图书室的服务工作是它的最终目的。
图书室服务的实质是“为人找书”、“为书找人”,为将图书收室藏的各种书刊推荐给最需要的教师和学生,为尽量发挥藏书的资料作用,图书室对师生实行开放服务,给师生供给更多、更自由地选书机会。
我平时注意倾听师生的意见,在此基础上,针对不一样年级、不一样学科、不一样爱好的教师和学生主动推荐和供给他们最感兴趣的书刊。
这些材料是教师备课、教育科研的良书益友,是他们更新知识、开阔视野的有力助手。
三、每周的读书活动顺利开展。
读书活动是全面提高学生素质的一个极其重要的载体,养成读好书的习惯将对一个人的发展产生终身影响。
由于学生认知水平、个性特点、兴趣爱好的不一样,我们在日常读书活动中,从实际出发,贴近学生的实际,根据其不一样年龄层次、心理特点和理解本事进行分层指导,由浅入深,循序渐进,逐步深化。
北京理工大学-数据结构实验报告-实验四--图书管理系统
实验四图书管理系统姓名:任子龙学号:1120140167 班级:05111451一。
需求分析(1)问题描述有一个小型书库保管了大量图书,关于图书有大量信息需要处理,这些信息包括图书的分类、书名、作者名、购买日期、价格等。
现要求编写一个程序以便于对图书的管理。
(2)基本要求:a.建立图书信息.b.提供查找功能,按照多种关键字查找需要的书籍。
例如按书名查找,输入书名后,将显示出该图书的所有信息,或显示指定信息。
c.提供排序功能,按照多种关键字对所有的书籍进行排序,例如按出版日期进行排序。
d.提供维护功能,可以对图书信息进行添加、修改、删除等功能。
(3)数据结构与算法分析将每一本书看作是一个基本单元。
由于涉及添加、修改操作,这里使用了链表作为数据存储结构;同时,考虑到排序功能,尝试使用双向链表。
其中,每本书作为一个结点,数据域包含char 型变量,指针域含有左右指针left和right。
二.概要设计1。
抽象数据类型的定义为实现上述功能,程序中使用了双向链表,只需要定义一种数据类型:typedef struct book{char number[10];char title[20];char author[10];char date[15];char price[10];struct book *right;struct book *left;}BK;注意结点的指针域有left和right两个。
2.本程序包含两个模块(1)主程序模块主函数只包含了Menu_select()函数。
目的是进入主菜单界面,进行功能选择;直到输入操作码0,退出系统;(2)双向链表单元模块——实现书籍信息的链式存储的抽象数据类型.各函数之间的调用关系:三。
详细设计1。
结点类型typedef struct book{char number[10];char title[20];char author[10];char date[15];char price[10];struct book *right;struct book *left;}BK;2.子函数(1)功能菜单调用函数Menu_select()使用户进入主菜单界面,进行功能选择;先进入无限循环,输入操作码进行系统管理工作,直到输入操作码0,退出系统;(2)各种功能函数Initialize()//初始化图书系统信息;Insert()//添加新的图书信息;Sort()//对图书进行排序,本程序可以实现按“图书编号”、“出版日期"、“图书价格”多种关键字进行排序;Search()//实现对图书的查找功能,本程序可以实现按“图书编号"、“出版日期”、“图书价格”多种关键字进行查找;deletebook()//删除无效的图书信息;Print_book()//打印全部图书信息。
数据结构课程设计报告-图书馆管理系统
广东某某学院《数据结构课程设计》题目:图书馆管理系统学号:姓名:年级:学院:专业:指导教师:目录一、问题描述与基本要求1.1问题描述1.2基本要求二、数据结构的设计2.1数据结构的选择三、软件模块结构图3.1大体模块关系图3.2各模块具体分析四、程序流程图五、源程序六、调试分析6.1程序错误修改及完善的过程6.2最终程序所有功能运行结果6.3测试数据七、用户使用手册八、心得体会一、问题描述与基本要求1.1问题描述设计一个计算机管理系统完成图书管理基本业务。
1.2基本要求1、每种书的登记内容包括书的编号、书名、著作者、现存量、库存量、书证号和归还日期。
2、建立空链表,以提高查找效率3、系统功能如下:图书入库:新购一种书,确定书号后,登记到图书账目表中,如果表中已有,则只将库存量增加;借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;归还:注销对借阅者的登记,改变该书的现存量。
二、数据结构设计2.1数据结构的选择用单链表的结构,通过编写相应功能函数来实现建立新结点、删除结点、修改结点中数据域的内容、输出结点数据域中的内容等功能。
2.2单链表的定义先定义单链表结点的数据域,数据域包括书的编号、书名、作者、现存量、库存量、书证号和归还日期;链表结点包括结点数据域和结点链域,最后再定义指向链表结点的指针。
以下为单链表的相关定义:typedef struct bookdata//定义结点数据域{int id;//书的编号char title[15];//书名char author[6];//作者int count;//现存量int stock;//库存量char figure[20];//书证号char deadline[10];//归还时期}bookdata;typedef struct node//定义链表结点{bookdata Data;//结点数据域struct node *next;//结点链域}booknode;typedef booknode *booklist;//指向链表结点的指针2.3重要函数的定义及说明1、void initlist(booklist &l)//建立空链表2、void insertlist(booklist &l)//插入链表结点,实现登陆功能(需要输入书的编号,以确定登陆书名)3、void deletelist(linklist &l)//删除链表结点,实现删除功能(需要输入书的编号,以确定删除的书名)4、void find(booklist l)//查找书的编码,实现查找功能(需要输入书的编号,以确定查找的书名)5、void lend(booklist l)//借阅图书,实现借阅功能(需要输入书的编号,以确定借阅的书名)6、void dele(booklist l)//删除录入借书的信息,实现删除录入借书的功能(需要输入书的编号,以确定删除录入的书名)7、void add(booklist l)//查找有没有相同的书籍8、void begin()//开始进入图书管理系统9、void Introduction()//介绍图书管理系统的功能10、void About()//图书管理系统的相关开发内容11、void welcome()//欢迎进入图书管理系统以下为重要函数的定义;void initlist(booknode *&l)//建立空链表{l=new booknode;l->next=NULL;}void insert(booknode *&l)//图书馆添加书籍(定刚开始图书馆零本书){booknode *q;booknode *p=l;int k=1;for(;p->next!=NULL;p->next){}//移动指针找到最后一个节点while(k==1){q=new booknode;cout<<"请输入书的编号(书号为0结束):"<<endl;cin>>q->id;if(p->id!=0){cout<<"请输入书名"<<endl;cin>>q->title;cout<<"请输入作者"<<endl;cin>>q->author;cout<<"请输入图书数量"<<endl;cin>>q->stock;q->next=p->next;p->next=q;}cout<<"请输入是否继续(1.继续/0.退出)"<<endl;cin>>k;}}void find(booknode *&l)//查找书的编码{int x,mark=0;booknode *p=l;cout<<"请输入该书的编号"<<endl;cin>>x;for(;p!=NULL;p=p->next){if(p->id==x){cout<<"查找成功!"<<endl;cout<<"此书的名称为:"<<p->title<<endl;cout<<"此书的作者是:"<<p->author<<endl;cout<<"此书的数量为:"<<p->stock<<endl;mark=1;}}if(mark==0){cout<<"对不起,图书馆没有这本书"<<endl;}}void lend(booknode *&l)//借阅图书{booknode *p=l;booknode *p2;p2=new booknode;int num,mark=0;char bookname[10];cout<<"请输入要查找书的名称"<<endl;cin>>bookname;for(;p!=NULL;p=p->next){if(strcmp(p->title,bookname)==0){cout<<"查找成功"<<endl;cout<<"请输入书证号"<<endl;cin>>p2->figure;cout<<"请输入归还日期"<<endl;cin>>p2->deadline;num=p->count;num=num-1;p->count=num;mark=1;}}if(mark==0){cout<<"对不起,图书馆没有这本书"<<endl;}}void dele(booknode *&l)//删除录入借书的信息{booknode *p=l,*q;char stuname[15];cout<<"请输入书证号"<<endl;cin>>stuname[15];while(p!=NULL){if(strcmp(p->figure,stuname)==0){q->next=p->next;delete p;p=q->next;//p=p->next;}}//q=p->next;//p->next=q->next;cout<<"注销成功"<<endl;}/*void add(booknode *&l)//查找有没有相同的书籍,{int r,mark=0;booknode *p=l;cout<<"请输入该书的编号"<<endl;cin>>r;while(p!=NULL){if(p->id=r)//表示有同种书就只增加库存量{int number=0,o;number=p->stock;cout<<"请输入添加书的数量"<<endl;cin>>o;number=number+o;p->stock=number;cout<<"该书的库存量为:"<<endl;cout<<p->stock;p=p->next;mark=1;}else//表示没有同种书就开辟空间存入信息{booknode *p1;p1=new booknode;cout<<"请输入书的编号"<<endl;cin>>p1->id;cout<<"请输入作者"<<endl;cin>>p1->author;cout<<"请输入书的数量"<<endl;cin>>p1->count;p1->next=p->next;p->next=p1;}}}*/三、软件模块结构图3.2各模块具体分析链表插入模块具体分析如下:链表删除模块具体分析如下:主函数链表插入模块链表删除模块 链表查找、借阅、模块链表显示模块InsertList(L) scanf( )p ->book.nodeP ->P ->book.authorP ->book.stockDeleteList(L)scanf( )s,stuname链表查找、借阅模块链表输出模块具体分析如下:Search(L) scanf( )i,booknodem,nP ->book.stockp -> P ->book.authoP2->figure P2->deadline Booknode(L)scanf( )p ->book.node,P -> P ->book.author,P ->book.count四、程序流程图输入5,谢谢使用输入4,删除借阅图书信息输入3,借阅图书输入2,查找图书信息输入6,退出管理系统输入1,录入图书信息结束D4C3BA 21输入数字,选择功能功能表与编号选择1-6InitList(B)主函数main( )开始1—>A4—>D五源程序#include<iostream>#include<string>#include<string.h>using namespace std;typedef struct node//定义链表节点{int id;//书的编号char title[10];//书名char author[10];//作者int count;//现存量int stock;//库存量char figure[20];//书证号char deadline[10];//归还时期struct node *next;}booknode;//typedef booknode *booklist;void initlist(booknode *&l)//建立空链表{l=new booknode;l->next=NULL;}void insert(booknode *&l)//图书馆添加书籍(定刚开始图书馆零本书){booknode *q;booknode *p=l;int k=1;for(;p->next!=NULL;p->next){}//移动指针找到最后一个节点while(k==1){q=new booknode;cout<<"请输入书的编号(书号为0结束):"<<endl;cin>>q->id;if(p->id!=0){cout<<"请输入书名"<<endl;cin>>q->title;cout<<"请输入作者"<<endl;cin>>q->author;cout<<"请输入图书数量"<<endl;cin>>q->stock;q->next=p->next;p->next=q;}cout<<"请输入是否继续(1.继续/0.退出)"<<endl;cin>>k;}}void find(booknode *&l)//查找书的编码{int x,mark=0;booknode *p=l;cout<<"请输入该书的编号"<<endl;cin>>x;for(;p!=NULL;p=p->next){if(p->id==x){cout<<"查找成功!"<<endl;cout<<"此书的名称为:"<<p->title<<endl;cout<<"此书的作者是:"<<p->author<<endl;cout<<"此书的数量为:"<<p->stock<<endl;mark=1;}}if(mark==0){cout<<"对不起,图书馆没有这本书"<<endl;}}void lend(booknode *&l)//借阅图书{booknode *p=l;booknode *p2;p2=new booknode;int num,mark=0;char bookname[10];cout<<"请输入要查找书的名称"<<endl;cin>>bookname;for(;p!=NULL;p=p->next){if(strcmp(p->title,bookname)==0){cout<<"查找成功"<<endl;cout<<"请输入书证号"<<endl;cin>>p2->figure;cout<<"请输入归还日期"<<endl;cin>>p2->deadline;num=p->count;num=num-1;p->count=num;mark=1;}}if(mark==0){cout<<"对不起,图书馆没有这本书"<<endl;}}void dele(booknode *&l)//删除录入借书的信息{booknode *p=l,*q;char stuname[15];cout<<"请输入书证号"<<endl;cin>>stuname[15];while(p!=NULL){if(strcmp(p->figure,stuname)==0){q->next=p->next;delete p;p=q->next;//p=p->next;}}//q=p->next;//p->next=q->next;cout<<"注销成功"<<endl;}/*void add(booknode *&l)//查找有没有相同的书籍,{int r,mark=0;booknode *p=l;cout<<"请输入该书的编号"<<endl;cin>>r;while(p!=NULL){if(p->id=r)//表示有同种书就只增加库存量{int number=0,o;number=p->stock;cout<<"请输入添加书的数量"<<endl;cin>>o;number=number+o;p->stock=number;cout<<"该书的库存量为:"<<endl;cout<<p->stock;p=p->next;mark=1;}else//表示没有同种书就开辟空间存入信息{booknode *p1;p1=new booknode;cout<<"请输入书的编号"<<endl;cin>>p1->id;cout<<"请输入作者"<<endl;cin>>p1->author;cout<<"请输入书的数量"<<endl;cin>>p1->count;p1->next=p->next;p->next=p1;}}}*/void begin(){booknode *l;initlist(l);int k;do{cout<<"******************************************"<<endl;cout<<" 欢迎您使用图书管理系统"<<endl;cout<<" 请选择"<<endl;cout<<"1. 添加图书信息"<<endl;cout<<"2. 查找图书信息"<<endl;cout<<"3. 借阅图书"<<endl;cout<<"4. 删除借阅图书信息"<<endl;cout<<"5. 增加图书"<<endl;cout<<"6. 退出系统"<<endl;cout<<"请选择"<<endl;cin>>k;switch(k){case 1:insert(l);break;case 2:find(l);break;case 3:lend(l);break;case 4:dele(l);break;case 5://add(l);//break;case 0:cout<<"******谢谢使用,再见******"<<endl;exit(0);default:cout<<"输入有误!!"<<endl;break;}}while(k!=0);}void Introduction(){cout<<" 系统介绍"<<endl;cout<<"****************************"<<endl;cout<<" 本系统主要实现图书信息"<<endl;cout<<" 增加添加查找借阅显示"<<endl;cout<<"****************************"<<endl;}void About(){cout<<" 开发人员"<<endl;cout<<"****************************"<<endl;cout<<"********** 冯翔**********"<<endl;cout<<"********** 李建超**********"<<endl;cout<<"********** 陈宥君**********"<<endl;cout<<"********** 袁美琪**********"<<endl;cout<<"****************************"<<endl;}void welcome(){while(1){int y;cout<<"************************************************"<<endl;cout<<" 欢迎使用图书管理系统"<<endl;cout<<"1. 管理系统"<<endl;cout<<"2. 开发人员"<<endl;cout<<"3. 系统简介"<<endl;cout<<"4. 退出"<<endl;cout<<"************************************************"<<endl;cin>>y;switch(y){case 1:begin();break;case 2:About();break;case 3:Introduction();break;case 4:exit(0);default:cout<<"输入有误"<<endl;system("pause");}}}int main(){welcome();return 0;}6.1程序错误修改及完善的过程我这次的课程设计题目是根据我们小组选择的,当看到这个题目时,我觉得还算比较简单,因为我之前数据结构实验就做过单链表的插入、删除、查找、输出,而这次活期图书管理系统要求的录入、查找、借阅、归还、库存量信息等功能,即可用单链表的相关功能函数来实现,于是我修改了之前写过的单链表的一些函数,以满足这次题目的要求,但在实验过程中仍出现了一些错误。
数据库实验报告-图书管理系统
《数据库应用系统》实验报告系:院 系:级:班 级:号:学 号:名:姓 名:一、功能需求说明和分析本实验要求实现一个图书管理系统,系统功能需求说明如下:本实验要求实现一个图书管理系统,系统功能需求说明如下:系统设置:参数、读者类型、图书类型、出版社、预约天数、管理员权限等的设置;系统设置:参数、读者类型、图书类型、出版社、预约天数、管理员权限等的设置; 系统管理:书籍资料、读者资料的管理和数据导入;系统管理:书籍资料、读者资料的管理和数据导入;基本操作:书籍借阅、续借、归还,新增书籍、读者,读者挂失、注销、退卡,书籍注销,丢失罚款;丢失罚款;系统查询:书籍资料、借阅、归还等的查询,读者资料、超期未还、书籍注销的查询;系统查询:书籍资料、借阅、归还等的查询,读者资料、超期未还、书籍注销的查询; 统计分析:书籍、读者资料分类统计,书籍、读者借阅排行榜;统计分析:书籍、读者资料分类统计,书籍、读者借阅排行榜; 罚款租金:可以进行罚款或租金的操作,并进行统计汇总;罚款租金:可以进行罚款或租金的操作,并进行统计汇总; 系统维护:备份、还原数据库,管理员登录密码修改。
系统维护:备份、还原数据库,管理员登录密码修改。
针对上述需求说明,对该系统的需求进行进一步的分析如下:针对上述需求说明,对该系统的需求进行进一步的分析如下:管理员权限:管理员权限:1. 图书的录入,查询,修改和注销;图书的录入,查询,修改和注销;2. 读者信息的添加,修改,查询和注销;读者信息的添加,修改,查询和注销;3. 个人账号登录,查看个人信息,修改密码,退出登录;个人账号登录,查看个人信息,修改密码,退出登录;4. 管理和授予读者借书权限;管理和授予读者借书权限;5. 正常还书和违规还书。
正常还书和违规还书。
读者权限:读者权限:1. 图书检索;图书检索;2. 登录,查看个人信息,查看借阅记录,退出登录;登录,查看个人信息,查看借阅记录,退出登录;3. 借书,还书;借书,还书;4. 续借已借书籍,预约书籍;续借已借书籍,预约书籍;5. 挂失和退卡注销。
数据库之图书管理系统实验报告
《数据库技术》课程设计说明书设计题目:图书馆数据库系统 设计者:xxxxxxxxxxxxxxx指导教师:xx xxx完成时间:2011年12月31日目录引言 (3)编写目的 (3)背景 (3)任务理解 (4)课设目标 (4)系统基本功能模块 (4)书籍管理子系统 (5)读者管理子系统 (5)借阅管理子系统 (5)需求分析 (5)系统分析 (6)系统设计 (6)概念结构设计 (7)概念结构 (7)整体E-R图 (7)局部E-R图 (8)数据字典 (8)逻辑结构设计 (13)数据库的实施 (15)总体视图 (15)关系图截图 (16)数据载入 (16)结构查询 (19)表的查找 (21)更新表中记录 (22)插入表中记录 (23)删除 (24)创建视图 (25)创建触发器 (26)存储过程 (27)索引 (28)实验小结 (29)引言随着计算机技术的不断应用和提高,计算机已经深入到社会生活的各个角落。
学生对知识的可望有增无减,图书馆用手工管理图书的方法,不仅效率低、易出错、手续繁琐,而且耗费大量的人力。
为了满足其管理人员对图书馆书籍,读者资料,借还书等进行高效的管理,在工作人员具备一定的计算机操作能力的前提下,此图书管理系统软件力求提高其管理效率。
编写目的本文档的编写一方面是为了完善图书管理系统软件的开发途径和应用方法,以求在最短的时间高效的开发图书管理系统。
另一方面从另一个角度培养我们对SQL的运用,将学到的知识运用于实际生活中。
1)通过对应用问题的功能分析,掌握功能分解与模块设计的基本模式,建立总体设计的概念。
2)进一步提高建库、索引、查询、关联等数据库基本操作技术。
3)通过对功能模块的具体实现,得到面向对象的程序设计方法的初步训练。
4)通过分析、设计、实现的全过程训练,提高我们分析问题、解决问题的能力,培养我们的创新意识。
背景数据库技术和Internet的飞速发展,使它们已经成为现代信息技术的重要组成部分,使现在计算机信息系统和计算机运用系统的基础和核心,对与任何一个企业来说,数据是企业的重要资产,如何有效利用这些数据,对于企业发展起着及其重要的作用。
数据库原理——图书馆管理系统实验报告
数据库综合实验报告问题描述1.1背景图书管理系统包括图书馆内书籍的信息、学生的信息和学生的借阅信息。
此系统功能分为面向学生和面向管理员两部分,其中学生可以进行借阅、续借、归还和查询书籍等操作,管理员可以完成书籍和学生的增加,删除和修改以及对学生,借阅、续借、归还的确认.1.2 数据需求本项目需要建立7个表,各功能如下:ID数据表名称数据表用途1 文献信息表图书的文献信息类型2 图书信息表馆藏图书的基本信息3 读者信息表存储读者的基本信息4 借还信息表包括图书的出借、归还和续借等信息5 预约信息表图书预约信息6 参数配置表系统对图书的管理的信息7 用户信息表用户的基本信息,包括权限和密码等1.3 事务需求能够管理图书信息和读者信息。
能够地进行各类图书信息查询。
能够进行各种借书管理,包括预约图书、借书和续借图书等。
给管理人员提供各种图书状态查询和图书流通信息分析功能。
数据库系统设计 2.1 E-R 模型设计文献类型表 PK 分类号分类名称 备注2.2 数据字典1.文献类型表 字段名称数据类型 可否为空 说明分类号 Char (2)主键 分类号为2位 分类名称Nvarchar (50) Not Null分类名称:中文图书、西文图书、中文期刊、西文期刊 备注 Text (16) Null备注2.图书信息表字段名称 数据类型 可否为空说明图书号 Char (12) 主键 图书号=分类号+其他信息 分类号 Char (2) 外键 主表为文献类型表 ISBN 号 Nvarchar (50) Null ISBN 号 题名 Nvarchar (50) Not Null 图书名称 作者 Nvarchar (50) Null 作者姓名图书信息表 PK 图书号 FK1 分类号ISBN 号 题名 作者主题词出版社版次存储日期图书数量 备注预约信息表 PK 预约ID FK2 FK1 读者号 图书号预约日期 预约标志读者信息表 PK 读者号 姓名身份证号 办理日期住址电话 罚款金额 借还信息表 PK 借还ID FK2 FK1 读者号 图书号借书日期 续借日期 还书日期 备注主题词Nvarchar(200)Null 图书简介出版社Nvarchar(50)Null 出版社名称版次Nvarchar(50)Null 出版次数存储日期Datetime(8)Null 存储的日期图书数量Int(4)Not Null 存储的图书数量备注Text(16)Null 图书信息备注3.读者信息表字段名称数据类型可否为空说明读者号Char(10)主键读者号为10位姓名Char(10)Not Null 读者姓名身份证号Char(18)Not Null 身份证号办理日期Datetime(8)Null 办理日期住址Nvarchar(50)Null 住址电话Nvarchar(50)Null 电话罚款金额Float(8) Null4.借还信息表字段名称数据类型可否为空说明借还ID Numberic(9)主键标识种子1、自增1 读者号Char(10)外键主表为读者信息表图书号Char(12)外键主表为图书信息表借书日期Datetime(8)Null 借书日期续借日期Datetime(8)Null 续借日期还书日期Datetime(8)Null 还书日期备注Text(16)Null 借还信息备注5.预约信息表字段名称数据类型可否为空说明预约ID Numberic(9)主键标识种子1、自增1 读者号Char(10)外键主表为读者信息表图书号Char(12)外键主表为图书信息表预约日期Datetime(8)Null 预约日期预约标志Char(10)Null 预约中、取消、已处理6.参数配置表字段名称数据类型可否为空说明借书时限Int(4)Not Null 借书的最长时间续借时限Int(4)Not Null 续借的最长时间最大借书量Int(4)Not Null 最大借书数目7.用户信息表字段名称数据类型可否为空说明用户ID Char(10)主键10位的用户ID用户名称Char(10)Not Null 用户名称用户类别Char(10)Not Null 读者、工作人员、管理人员密码Char(10)Not Null 密码为10位权限Text(16)Null 权限信息身份证号Char(18)Not Null 身份证号住址Nvarchar(50)Null 住址电话Nvarchar(50)Null 电话2.3 创建数据库在 Microsoft SQL Sever 2000 的环境下创建图书管理系统数据库及其需要的各种信息表打开SQL Server企业管理器,新建一个数据库,数据库名为“图书管理系统”然后在该数据库中创建需要的各种数据库表,最后按照数据字典建立表的关联。
数据结构图书管理系统实验报告
竭诚为您提供优质文档/双击可除数据结构图书管理系统实验报告篇一:数据结构-图书管理系统实验报告数据结构课程设计报告课程名称_________题目名称学生学院专业班级学号学生姓名指导教师20XX年7月8日一、需求分析1.图书管理系统中图书管理模块包括图书类型定义:书号、现存量、总存量,出版时间为整型,定价为浮点型,书名、著者名为字符型,借阅指针、预约指针为读者类型;读者类型定义:证号为整型、姓名为字符型,另外借阅类型和预约类型组合成其中的共用体类型。
b树(2-3树)类型定义:关键字个数和关键字数组为整型、另外还有指向双亲的指针、指向子树的指针、记录单元指针;b树查找结果类型定义:节点指针、关键字序号和查找标志变量为整型。
2.演示程序以用户和计算机的对话方式进行,在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令,相应的输入数据和运算结果显示在后面。
该演示系统,没有使用文件,全部数据放在内存存放。
四项基本业务都以书号为关键字进行的,采用了b树(2-3树)对书号建立索引,以提高效率。
3.图书管理系统实现功能:①采编入库:新书购入,将书号、书名、著者、册数、出版时间添加入图书账目中去,如果这种书在帐中已有,则只将总库存量增加,每新增一个书号则以凹入表的形式显示b树现状。
②清除库存:实现某本书的全部信息删除操作,每清除一个书号则已以凹入表的形式显示b树现状。
③图书借阅:如果书的库存量大于零时则执行出借,登记借阅者的图书证号和姓名,系统自动抓取当前借阅时间和计算归还时间。
④图书预约:如果某书库存为零,则记录预约者姓名和证号,系统自动抓取当前预约时间和取书时间。
⑤图书归还:注销借阅者信息,并改变该书的现存量。
⑥作者专区:输入作者名字,系统将查找相应作者全部著作并显示出来。
⑦图书信息:可以根据书号查阅此书基本信息、借阅信息和预约信息,亦可以查找全部图书基本信息。
二、概要设计1.抽象数据类型b树定义:ADTbTree{数据对象:D是具有相同特性的数据元素的集合。
图书管理系统实验报告(共10篇)
图书管理系统实验报告(共10篇)图书馆管理系统课程设计报告书图书馆管理系统班级:软件0801班小组成员:刘静蒋玲李辉姚华真日期:2011年1月10日第一章系统概述1.1系统背景当今时代是飞速发展的信息时代。
在各行各业中离不开信息处理,这正是计算机网被广泛应用于管理信息系统的外部环境。
计算机的最大好处在于利用它能够进行信息管理。
使用计算机进行信息处理,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
计算机进行信息管理与管理信息系统的开发密切相关,系统的开发是系统管理的前提。
本系统就是为了管理好图书馆信息而设计的。
图书馆作为一种信息资源的集聚地,图书和用户借阅资料繁多,包含很多的信息数据的管理。
本案例的问题定义是:为了减轻新生入学(或新员工入公司)、不断增加、修改图书给图书馆带来的不便而设计的。
图书馆管理系统是办公自动化不可缺少的一部分,是适应现代管理制度要求、推动学生学籍管理走向科学化、规范化的必要条件。
该软件最终的使用者是学校,公司,图书馆管理者,并提供以下的功能: 1. 默认页提供关于图书馆的基本信息;2. 图书馆管理者可以根据读者信息创建读者的帐户;3. 如果读者输入的电子邮件ID 在数据库中已存在,系统将显示错误页;4. 图书馆管理者必须先登录才能在了解图书馆的详细信息和自己的基本信息,并可以对图书进行添加、查找、修改、注销等的操作,还可对读者进行管理与归类;5. 读者必须先登录才能对图书进行借阅、归还、续借等操作。
1.2 可行性研究1.2.1 [技术条件方面的可能性]技术上的可行性分析主要分析现有技术条件能否顺利完成开发工作,硬件、软件配置能否满足开发者的需要,各类技术人员的数量,水平,来源等。
图书馆管理系统的工作主要是在读者和图书馆之间架起一座桥梁,能相互沟通信息和处理信息。
所使用的语言是C#和SQL之间连接,这是大家还比较熟悉的内容,可行性绝对可行。
数据结构_图书馆管理系统实验报告
实验报告题目:图书管理一,需求分析1.每种书的信息包括了书号书名,作者显存量和总库存等。
2.要实现的主要操作有,在B-树上的插入删除操作,并且在这些B-树的操作的基础上的图书馆借阅归还入库清除等操作。
3.每插入或删除一个关键字后就要显示B-树的状态。
也可以显示图书的相关借阅的信息。
4.借阅的信息链接在相应的那种数的记录之后。
2.两种抽象数据类型:Btree和Library。
3. 测试数据入库书号:35,16,18,70,5,50,22,60,13,17,12,45,25,42,15然后清除:45,50,22,42,90二.概要设计ADT BTree{数据对象:D={ai |ai E BTNode,I=2,3,……n,n>=0}数据关系:R1={<ai-1,ai>|ai-1,ai E D, I=2,3……N}基本操作:void InitBTree(BTree &T);int Search(BTree p,int k);Result SearchBTree(BTree T,int k);void split(BTree &q,int s,BTree &ap);void Insert(BTree &q,int i,KeyType x,BTree ap);void NewRoot(BTree &T,BTree q,KeyType x,BTree ap);Status InsertBTree(BTree &T,KeyType k,BTree q,int i);void FindSmallest(BTree p,BTree &q);int Parent(BTree p);void RightBrother(BTree p,BTree &right);void LeftBrother(BTree p,BTree &left);void LeftMove(BTree &p,int loc);Status DeleteBTree(BTree &T,int k);void PrintBTree(BTree T);}ADT Library{数据对象:D={ai |ai E RecordI=2,3,……n,n>=0}数据关系:R1={<ai-1,ai>|ai-1,ai E D, I=2,3……N}基本操作:void GetInformation(Record &book);void PrintBookInfomation(Record *book);void Procurement(BTree &T);void DeleteBook(BTree &T,int k);void Lending(BTree &T,int k,char librarynum[10],char data[10]); void Return(BTree &T,int k,char *librarynum);}3.程序的几个模块1)主程序模块void main(){接受命令初始化处理命令}2)B-树模块-------实现B-树的抽象数据类型3)图书馆模块-------实现图书馆的抽象数据类型调用关系如下:主程序模块图书馆模块-三.详细设计(在源代码上通过注释的方式来说明)1、基本结构typedef struct{int booknum;char name[20];char writer[20];int total;int current;char librarynum[MAX][MAX];char returndate[MAX][MAX];}Record;typedef struct{int k;Record *recptr;}KeyType;typedef struct BTNode{int keynum;struct BTNode *parent;KeyType *key[M+1];struct BTNode *ptr[M+1];}BTNode,*BTree;typedef struct{BTNode *pt;int i;int tag;}Result;2、源代码1)主函数#include "head.h"#include "head.h"void main(){BTree T;int order=0,booknum;char returndate[10],librarynum[10];Result result;InitBTree(T);printf("\n******************************************************************* *****\n");printf("Welcome to the library system!\n");while(order!=6){printf("\n******************************************************************* *****\n");printf("请选择服务: 1.采编入库 2.清除库存 3.借阅 4.归还 5.显示 6.退出.\n");scanf("%d",&order);switch(order){case 1:Procurement(T);PrintBTree(T);break;case 2:printf("请输入要删除的书的编号。
数据结构课程设计报告图书管理系统
华北科技学院课程设计说明书专业: 网络工程课程名称: 数据结构课程设计班级:姓名: 学号:设计题目: 图书管理系统设计时间: 2012-2-27 至2012-3-9评语:_____________________________________________________________________________________________________________________________________________________________________________________________________评阅成绩:____评阅教师:__一、设计题目与要求【问题描述】设计一个计算机管理系统完成图书管理基本业务。
【基本要求】1)每种书的登记内容包括书号、书名、著作者、现存量和库存量;2)对书号建立索引表(线性表)以提高查找效率;3)系统主要功能如下:*采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;*借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;*归还:注销对借阅者的登记,改变该书的现存量。
【进一步完成内容】1)系统功能的进一步完善;2)索引表采用树表。
3)设计内容4)程序流程图5)源程序6)软件测试报告(包括所用到的数据及结果)二、概要设计有八个模块1)图书初始化输入图书的一些信息,编号、作者、书名、数量,使有一定的库存。
2)新书入库新书采编入库,输入编号后如果有次数只需输入数量,没有则继续输入书名、作者、数量。
3)添加读者信息读者信息初始化,输入读书证号和姓名,只有输入书证号和姓名才能进行借书还书4)借书模块读者输入读书证号,证号存在输入要借的图书编号,不能借同一本书,如果借书数量以达到最大也不能借书。
5)还书模块归还已借的图书,要先输入读者书证号,书证号存在继续输入要还的图书编号,图书编号存在并且借来此书,归还成功。
图书管理系统详细设计实验报告
图书管理系统详细设计实验报告1. 引言本文档是对图书管理系统进行详细设计的实验报告。
图书管理系统是一个用于图书馆或书店管理图书信息的软件系统,通过该系统可以方便地进行图书的借阅、归还、查询等操作。
本实验报告将详细介绍图书管理系统的设计理念、系统结构、模块设计等内容。
2. 设计理念在设计图书管理系统时,我们主要考虑了以下几个方面的要求。
首先,系统的操作界面应该简洁、直观,便于用户进行操作。
我们采用了现代化的UI设计风格,并进行了良好的用户体验测试,确保用户可以轻松掌握系统的操作方式。
其次,系统的性能应该良好,能够快速、准确地处理大量的图书信息。
我们采用了高效的数据库技术,并进行了性能优化,以确保系统的响应速度和稳定性。
最后,系统应该具备较高的安全性,保护图书信息不受未经授权的访问和恶意操作。
我们采用了安全认证和权限控制的机制,确保只有授权用户才能进行相关操作。
3. 系统结构图书管理系统的整体结构分为三层:表示层、业务逻辑层和数据访问层。
•表示层:负责与用户进行交互,接收用户的输入,并展示系统的输出结果。
通过一个用户友好的界面,用户可以执行图书的借阅、归还、查询等操作。
•业务逻辑层:负责处理用户的请求,进行相应的数据处理和业务逻辑判断。
在这一层中,我们设计了借书管理、还书管理、图书查询和图书推荐等模块。
•数据访问层:负责与数据库进行交互,进行数据的存储和读取操作。
我们采用了关系型数据库,通过SQL语句实现对图书信息进行管理。
4. 模块设计4.1 借书管理模块该模块提供了图书的借阅功能。
用户可以通过输入图书的信息进行借书操作,系统会进行相应的检查并更新图书的状态。
具体设计如下:1.用户界面:提供用户输入图书信息的界面,并显示借阅结果。
2.输入检查:对用户输入的图书信息进行格式的检查,例如判断图书是否存在、是否已被借阅等。
3.图书状态更新:将图书的状态标记为已借出,并记录借书的时间和用户信息。
4.2 还书管理模块该模块提供了图书的归还功能。
(完整word版)数据结构课程设计图书管理系统报告(word文档良心出品)
河南科技大学课程设计说明书课程名称数据结构课程设计题目个人书籍管理系统的设计与实现院系_____班级___学生姓名__指导教师日期___数据结构课程设计任务书指导教师:时间:个人书籍管理系统的设计与实现一、简介1.设计目的:进一步理解查找和排序在实际系统要使用的数据结构以及施加在这些数据结构上的算法,锻炼自己运用所学数据结构的知识来解决实际问题的综合能力。
2.问题的描述:学生在自己的学习和生活中会拥有很多的书籍,对所购买的书籍进行分类和统计是一种良好的习惯。
可以便于对这些知识资料的整理和查找使用。
如果用文件来存储相关书籍的各种信息,包括分类、购买日期、价格、简介等等,辅之以程序来使用这些文件对里面的书籍信息进行统计和查询的工作将使得这种书籍管理工作变的轻松而有趣。
简单个人书籍管理系统的开发就是为了解决这个实际问题的。
二、数据结构的设计:typedef struct{char name[20]; //书名int data; //购买书的日期char author[10]; //作者int idnumber; //书的编号int price; //书的价格char publish[15]; //出版社char remarks[30]; //备注}BOOK;三、功能(函数)设计:功能函数模块划分void main() //主函数void input() //输入书的信息void print() //显示全部书的信息void search() //查找书的信息void deleted() //删除书的信息void sort() //对书的信息进行排序四、界面设计:这是进入系统时的界面,四周用*围起来使得程序中间的文字显的比较突出,也比较美观。
五、程序设计:(1)主函数main()的的流程图:(2)输入函数input()流程图(3)显示函数print()流程图(4)查找函数search()的流程图(5)排序函数sort()的流程图六、运行与测试:1、测试的数据及其结果:2、运行与测试期间遇到的问题及其解决办法(1)在处理排序这个函数的时候,一开始排序的结果一直出不来,我看了好久都没有发现错误,当我进行单步调试后,我才发现我其中有个for循环陷入了死循环,发现错误后我再把for 循环中的参数稍微的进行了修改,然后排序的结果就能出来,我发现其实那个结果其实我马虎造成的,以后一定要避免这种情况的发生。
数据结构图书管理系统课程设计报告
数据结构图书管理系统课程设计报告一、设计题目与要求【问题描述】设计一个计算机管理系统完成图书管理基本业务。
【基本要求】(1) 每种书的登记内容包括书号、书名、著作者、现存量和库存量;(2) 对书号建立索引表(线性表)以提高查找效率;(3) 系统主要功能如下:①采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;②借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;③归还:注销对借阅者的登记,改变该书的现存量。
二、小组分工小组成员:小组分工:图书初始化、新书入库、登记读者信息、文件保存借书系统、还书系统图书信息查询、读者信息查询三、需求分析图书管理系统共需要八个模块,分别是1图书初始化、2新书入库、3添加读者信息、4借书模块、5还书模块、6查询图书信息、7查询读者信息、8退出。
我负责其中的四个模块,如下所示:1)图书初始化输入图书的一些信息,编号、作者、书名、数量,使有一定的库存。
2)新书入库新书采编入库,输入编号后如果有次数只需输入数量,没有则继续输入书名、作者、数量。
3)添加读者信息读者信息初始化,输入读书证号和姓名,只有输入书证号和姓名才能进行借书还书4)退出和文件保存退出读书管理系统并保存读者和图书信息。
四、概要设计图书信息和读者信息都采用结构体类型保存。
图书信息里面包括:图书编号、图书名称、作者、现有量、库存量、指向下一节点的指针。
读者信息里面包括:读者编号、读者姓名、借书数量、可借图书数量、指向下一节点的指针。
所有图书和读者都分别以链表的形式存储,并以编号为唯一主键。
采用链表形式便于数据的添加与删改。
主要的操作为:系统初始化,图书入库,读者信息登记,图书信息和读者信息文件的保存。
五、详细设计数据结构的定义:图书信息:typedef struct book{char book_num[10];char book_name[20];char book_writer[10];int book_xy;int book_kc;struct book *next;}BK;读者信息:typedef struct reader{char reader_num[10];char reader_name[10];int right;BO borrow[Max];struct reader *next;}RD;算法描述:进入系统后首先进行图书初始化,输入图书的信息。
数据结构课程设计图书管理系统实验报告
Beijing Institute of PetrochemicalTechnology数据结构课程设计课程设计实验报告院(系、部): 信息工程学院姓名:计141范文虎指导教师签名:2016年6月29日·北京目录一.设计题目····································二.设计目的····································三.实验分工····································四.算法思想分析································五.算法描述实现································1。
数据结构课程设计报告报告——图书管理系统
课程设计报告课设课题:课程设计——图书管理系统学院:电子信息学院专业:网络工程XX:班级学号:BX1213指导教师:艳报告日期:2013.12.12目录一、需求分析11.1 系统开发背景和意义11.2 设计题目与要求1二、总体结构设计2三、各子模块设计43.1 初始化图书信息43.2 系统主界面43.3 采编入库53.4 输入读者信息53.5 借阅图书63.6 归还图书83.7 查询图书信息103.8 查询读者信息10四、程序设计调试情况分析11五、测试结果145.1 欢迎界面145.2 初始化图书信息145.3 系统主界面145.4 采编入库155.5 输入读者信息165.6 借阅图书175.7 归还图书185.8 查询图书信息185.9 查询读者信息195.10 保存文件,退出21六、总结22七、参考文献23八、附录(源代码)24一、需求分析1.1 系统开发背景和意义图书管理作为计算机应用的一个分支,有着手工管理无法比拟的优点,如检索迅速、查找方便、可靠性高、存储量大、性好、寿命长、成本低等。
这些优点能够极提高图书管理的效率。
因此,开发一套能够为用户提供充足的信息和快捷的查询手段的图书管理系统,将是非常必要的,也是十分及时的。
图书管理系统需要满足来自图书馆工作人员、普通用户和借阅者三方面人员的需求。
图书馆工作人员对图书借阅者的借阅及还书要求进行操作,同时还可通过图书编号等查询相应的借阅情况;普通用户的需查询图书馆所存的图书的相关情况;图书借阅者的需查看自己的相关信息及查询自己的借阅情况。
1.2 设计题目与要求【问题描述】设计一个计算机管理系统完成图书管理基本业务。
【基本要求】1)每种书的登记容包括书号、书名、著作者、现存量和库存量;2)对书号建立索引表(线性表)以提高查找效率;3)系统主要功能如下:*采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;*借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;*归还:注销对借阅者的登记,改变该书的现存量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计报告课程名称_____ ____ 题目名称学生学院专业班级学号学生姓名指导教师2010 年 7 月 8 日一、需求分析1. 图书管理系统中图书管理模块包括图书类型定义:书号、现存量、总存量,出版时间为整型,定价为浮点型,书名、著者名为字符型,借阅指针、预约指针为读者类型;读者类型定义:证号为整型、姓名为字符型,另外借阅类型和预约类型组合成其中的共用体类型。
B树(2-3树)类型定义:关键字个数和关键字数组为整型、另外还有指向双亲的指针、指向子树的指针、记录单元指针;B树查找结果类型定义:节点指针、关键字序号和查找标志变量为整型。
2. 演示程序以用户和计算机的对话方式进行,在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令,相应的输入数据和运算结果显示在后面。
该演示系统,没有使用文件,全部数据放在内存存放。
四项基本业务都以书号为关键字进行的,采用了B树(2-3树)对书号建立索引,以提高效率。
3.图书管理系统实现功能:①采编入库:新书购入,将书号、书名、著者、册数、出版时间添加入图书账目中去,如果这种书在帐中已有,则只将总库存量增加,每新增一个书号则以凹入表的形式显示B树现状。
②清除库存:实现某本书的全部信息删除操作,每清除一个书号则已以凹入表的形式显示B树现状。
③图书借阅:如果书的库存量大于零时则执行出借,登记借阅者的图书证号和姓名,系统自动抓取当前借阅时间和计算归还时间。
④图书预约:如果某书库存为零,则记录预约者姓名和证号,系统自动抓取当前预约时间和取书时间。
⑤图书归还:注销借阅者信息,并改变该书的现存量。
⑥作者专区:输入作者名字,系统将查找相应作者全部著作并显示出来。
⑦图书信息:可以根据书号查阅此书基本信息、借阅信息和预约信息,亦可以查找全部图书基本信息。
二、概要设计1.抽象数据类型B树定义:ADT BTree{数据对象:D是具有相同特性的数据元素的集合。
各个数据元素均含有类型相同,可惟一标识数据元素的关键字。
数据关系:数据元素同属于一个集合并且:一棵m阶的B树,或为空,或为满足下列特性的m叉树:树中每个结点至多有m棵子树;若根结点不是叶子结点,则至少有两棵子树;除根之外的所有非终端结点至少有m/2(取上限)棵子树;所有的非终端结点包含下列信息数据:(n,A0,K1,A1,K2,A2,K3,……,Kn,An)其中:Ki(i=1,2,……n)为关键字,且Ki<Ki+1(i=1,2,……n-1);Ai(i=0,……n)为指向子树根结点的指针,且指针Ai-1所指子树中所有结点的关键字均小于Ki(i=1,2,……n),An所指子树中所有结点的关键字均大于Kn,n(m/2(取上限)-1<=n<=m-1)为关键字的个数基本操作:SearchBTree(T ,key);初始条件:B树T存在,key为和关键字类型相同的给定值。
操作结果:若T中存在关键字等于key的数据元素,则返回该元素的值或在表中的位置,否则返回“空”。
Insert(T, i, k, P, recptr)初始条件:B树q和p存在,i、k是指定变量,recptr指针有效操作结果:将k和ap分别插入到q->key[i+1]和q->ptr[i+1],并插入关键字为k的记录recptr InsertBTree(&T ,e);初始条件:B树T存在,e为待插入的数据元素。
操作结果:若T中步存在关键字等于e.key的数据元素,则插入e到T中。
DeleteBTree(&T ,key);初始条件:B树T存在,key为和关键字类型相同的给定值。
操作结果:若T中存在其关键字等于key的数据元素,则删除之BTreeTraverse(BTree T,Visit)初始条件:B树T存在,Visit是对T结点的函数操作结果:遍历B树T,对每个结点调用Visit函数ShowBTree( T );初始条件:B树T存在。
操作结果:以凹入表形式显示B树T。
}ADT BTree2 .系统时间类型定义:ADT Time{数据对象:D={TM 是各种整型类型的系统时间格式定义}数据关系:数据元素同属一个集合基本操作:GetDate(tm &tim)初始条件:系统时间运行操作结果:获取系统时间,赋予tm变量timAddDate(tm &date2,tm date1, int day)初始条件:系统时间date2、date1、day存在操作结果:把date1的日期加day天后赋给date2Earlier(tm date1,tm date2)初始条件:系统时间date2、date1存在操作结果:比较data1与date2日期的迟与早,如果date1早于或等于date2则返回TRUE,否则返回FALSE。
}ADT Time3. 图书管理类型定义:ADT BTree{数据对象:D={ai | ai∈BookType,i=1,2,3,……n,n>=0,其中每个数据元素ai含有类型相同,可惟一标识数据元素的关键字}数据关系:数据元素同属一个集合基本操作:InitLibrary(&L );操作结果:初始化书库L为空书库。
InsertBook(&L ,B ,result);初始条件:书库L和B已存在,result包含B书在书库中的位置或应该插入的位置。
操作结果:如果书库中已存在B书,则只将B书的库存量增加,否则插入B书到书库L中。
DeleteBook(&L ,&B);初始条件:书库L和B存在。
操作结果:如果书库中存在B书,则从书库中删除B书的信息,并返回OK,否则返回ERRORBorrowBook(L ,&B ,R);初始条件:书库L存在,B书是书库中的书并且可被读者R借阅。
操作结果:借出一本B书,记录信息。
ReturnBook(L ,&B ,R);初始条件:书库L存在。
操作结果:若书库L中有读者R借阅B书的记录,则注销该记录,改变B书现存量,并返回OK,书不存在或无该读者记录则返回ERROR。
BespeakBook(L ,&B ,R);初始条件:书库L存在,B书是书库中的书,R为借阅者。
操作结果:为读者R预约B书。
ListAuthor(L ,author);初始条件:书库L存在,author为指定作者姓名操作结果:显示author的所有著作。
ShowBookinfo(L ,B );初始条件:书L存在。
操作结果:若书库L中存在书B,则显示B书基本信息并返回OK,否则返回ERROR。
PrintAllBooks(L );初始条件:书库L存在。
操作结果:显示所有图书基本信息。
}ADT BTree3. 主程序int main(){系统界面;初始化;for( ; ; ){显示菜单信息;接受命令;处理命令;输出结果;}}|4.本程序有四个调用模块主程序模块↓图书管理模块↓↓B树单元模块系统时间模块三、详细设计《抽象数据类型B树算法详解》/**************************抽象数据类型B- 树存储定义*************************/ typedef BookNode Record; //记录指针为图书结点类型typedef struct BTNode{int keynum; //结点关键字个数struct BTNode *parent; //指向双亲指针int key[m+1]; //关键字数组,0号单元未用struct BTNode *ptr[m+1]; //指向子树指针Record *recptr[m+1]; //记录指针,0号单元未用}BTNode, *BTree; // B树节点类型和B树类型typedef struct{BTNode *pt; //指向找到的结点或应该插入的结点int i; //1...m,在结点中关键字序号int tag; // 1表示查找成功,0表示查找失败}Result; // B树查找结果类型/****************************************************************************/ /**************************B- 树操作定义************************************/ int Search(BTree p, int k)/* 在B树p中查找关键字k的位置i,使得p->node[i].key≤K<p->node[i+1].key*/{int i;for(i=0;i<p->keynum && p->key[i+1]<=k;i++);return i;}Result SearchBTree(BTree T, int k)// 在m阶B树T上查找关键字K,返回结果(pt,i,tag)。
若查找成功,则特征值// tag=1,指针pt所指结点中第i个关键字等于K;否则特征值tag=0,等于K的// 关键字应插入在指针Pt所指结点中第i和第i+1个关键字之间。
{Result r;int i=1;BTree p=T,q=NULL; // 初始化,p指向待查结点,q指向p的双亲int found=FALSE;while(p && !found){i=Search( p, k); //在p->key[1...keynum]中查找if(i && p->key[i]==k) found=TRUE; //找到待查关键字else{q=p;p=p->ptr[i];}}if(found){r.pt=p;r.i=i;r.tag=1;}else{r.pt=q;r.i=i;r.tag=0;}return r;}void Insert(BTree &q, int i, int k, BTree ap, Record *recptr)// 将k和ap分别插入到q->key[i+1]和q->ptr[i+1],并插入关键字为k的记录recprt{for(int j=q->keynum;j>i;--j){ // 记录、关键字、子树指针后移q->key[j+1]=q->key[j];q->ptr[j+1]=q->ptr[j];q->recptr[j+1]=q->recptr[j];}q->key[i+1]=k; //插入记录、关键字、子树指针,关键字个数加1 q->ptr[i+1]=ap;q->recptr[i+1]=recptr;q->keynum++;if(ap) ap->parent = q; //子树ap的父亲指针}void Split(BTree &q, int n, BTree &ap)// 以n为分界将结点q分裂为两个结点,前一半保留,后一半移入新生结点ap{int i;ap = (BTree)malloc(sizeof(BTNode)); // 申请新结点apap->ptr[0]=q->ptr[n];for(i = n+1;i <= m; i++) // n后的关键字、子树指针、记录转移到ap {ap->key[i-n] = q->key[i];ap->ptr[i-n] = q->ptr[i];ap->recptr[i-n] = q->recptr[i];}ap->keynum = q->keynum - n; // 计算ap的关键字个数q->keynum = n-1; // q的关键字个数减少ap->parent = q->parent;for (i=0; i<=m-n; i++)if(ap->ptr[i]) ap->ptr[i]->parent = ap; // ap的子树的父亲指针}void NewRoot(BTree &T, BTree p, int k, BTree ap,Record *recptr)// 当插入B树时T为空或根结点分裂为p和ap两个节点,需建立一个根节点空间// 本函数为T申请一块空间,插入p,k,ap和记录rec{T = (BTree)malloc(sizeof(BTNode));T->keynum = 1;T->ptr[0] = p; // 插入T->ptr[1] = ap;T->key[1] = k;T->recptr[1] = recptr;if (p) p->parent= T; // T的子树ap的父亲指针if (ap) ap->parent = T;T->parent = NULL; // 根节点双亲为NULL}int InsertBTree(BTree &T, int k, BTree q, int i,Record *recptr)// 在m阶B树T上结点*q的key[i]与key[i+1]之间插入关键字K和记录rec。