ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:231.31KB ,
资源ID:5163366      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5163366.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(图书馆课程设计程序报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

图书馆课程设计程序报告.docx

1、图书馆课程设计程序报告辽宁科技大学课程设计报告课程名称: 数据结构 设计题目: 图书馆管理系统 学 院: 电信工程与技术 专 业: 计算机科学与技术 起止日期: 二零一零 年 十二 月 十九 日 二零一零 年 十二 月 三十 日 指导教师: 龙艳彬 计算机科学与技术系二一年制课程设计题目图书管理系统组长学号班级系别计算机科学与技术系专业计算机科学与技术组员指导教师课程设计目的课程设计所需环境软件环境:Microsoft Visual C+ 6.0以及Windows95以上操作系统的机器上可以正常运行硬件环境:CPU:至少Pentium100以上,建议使用P4 2.0,内存:至少16M以上,建议

2、使用256,硬盘:至20M硬盘空间,显示器:17寸显示器课程设计任务要求设计成绩一*对图书馆的需求分析1引言1.1系统的意义随着人们知识能力的提高,图书馆成了人们生活中不可或缺的一部分,而图书馆的存书量和业务量庞大,仅仅靠传统的记账式管理是不够的,图书管理系统应运而生,逐渐成为信息化建设的一部分。图书管理系统能够完成图书管理基本业务。目的为了提高图书馆的工作效率,实现图书馆、读者图书借阅、返还、读者信息的管理,并且实现图书管理的核心功能,即图书的信息检索,增加、删除、查询、更改等管理。1.2系统的特点系统界面简易,功能操作方便合理的图书管理系统1.3系统设计环境Microsoft Visual

3、 C+ 6.02系统需求分析2.1系统的设计目标图书管理系统在读者结束和还书时 简介明了地实现其功能,并达到不产生错误、方便简单的功能2.2功能需求运行程序后,首先进入主菜单界面,读者可根据需求,进行借阅图书、归还图书、注册新书、注销旧书、和查询图书信息的操作。进入相应界面,可实现相应功能,并实现对数据的修改*对电话本的系统需求分析: 我们要用散列表实现电话号码查找系统。设计出的程序要包含以下功能1、设计一个中文界面来帮助用户,提示用户要实现什么操作,需要输入什么才能实现这种操作,使用户一目了然。2、设计一个散列表来存储电话号码、用户名、地址。最常用的是除留余数法,这就需要合理的选择k值来减少

4、冲突发生的机会。另外冲突时不可避免的。3、从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表.。4、散列表难免会有冲突,我们需要采用一定的方法解决冲突;5、设计的程序能查找并显示给定电话号码的记录;6、实现查找并显示给定用户名的记录。二、总体设计1、图书馆系统功能模块划分根据开发者和客户的需求分析后,可以把系统功能分为五个功能模块:(1)借阅图书模块包括:对所借书号的查找,查找成功,则输出该图书的信息,包括书名、作者名、该书的存数和总数,读者需要输入自己的借书号和可借天数进行借阅,系统并实现对数据的修改及存储。查找失败,输出输入错误或无效图书序号。 (2)归还图书模块包括:进入界面,读

5、者需首先输入归还图书的图书序号,系统根据序号查找出该书的信息,并输出,包括书号、书名、著作者、现存量和库存量、借阅者借书证号。并显示图书信息。(3)注册新书模块包括:首先输入书的序号,及数量,完成注册,如果新注册的书是书库中原来没有的,则单独储存,如果原来有,将总数相加。(4)注销旧书模块包括:首先输入需要注销的图书序号,如库中有该序号的书,进行注销,如果没有,抛出错误信息,并实现数据的修改。(5)输出全部图书信息模块包括:所有存入的图书的信息,便于读者了解(6)退出系统模块读者图书信息的划分(1) 图书基本信息管理图书入库、出库时,更新图书库信息添加,删除,修改图书信息添加图书时,增添图书序

6、号,书名,作者及数量的信息(2) 读者基本信息管理通过借书证序号2.3系统界面要求运行程序时,系统向用户显示可视化操作信息,如图2.4功能要求:(1)每种书的登记内容包括书号、书名、著作者、现存量和库存量;(2)对书号建立索引表(线性表)以提高查找效率;(3)系统主要功能如下:*采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;*借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还 期限,改变现存量;*归还:注销对借阅者的登记,改变该书的现存量2.5性能需求:时间特性:在软件方面,响应时间,更新处理时间都比较快且迅速,完全满足用户要求。输出形

7、式:有中文提示,输入的信息主要以图书序号为主界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:运用数组进行存储。2、总体设计(电话号码本)设计界面:首先设计一个界面,使读者能根据输出的界面正确操作,来完成用户的所需要的操作。定义一个菜单,输出用户界面。以实现以下输出效果:号码簿 1.添加记录 2.姓名散列 3.号码散列4.查找记录 5.退出系统建立节点:用结构体定义一个名为node的结构体。先建立节点具体如下:定义三个字符数组分别存放名字地址和号码,在定义一个next指针,是用来指向下一个位置的下面在定义几个指针用来以后调用用。定义两个哈希函数,分别用号

8、码和姓名作为关键码来进行散列存储的。在按号码散列是取第三位及三位后的关键码相加,然后用除留余数法,取K=20进行散列key=key%20按姓名存储时是从第一个就开始累加的。因为名字一般第一个不会重复,而电话号码的前三位大多都一样,所以电话号码的从三开始累加的。按号码和姓名查找实现的伪代码如下:1、 初始化关键码。2、 当num(i)不为空时,把下标累加。3、 用除留余数法散列。建立输入临时节点temp,来实现姓名地址号码的分别存储存储后返回节点。添加节点:定义俩个结点指针*newphone*newname初始化为空,并让他等于输入内容,并将其下一个位置设为空 分别定义两个哈希函数,分别用号码和

9、姓名做形参,两个指针分别指向当前输入的值或姓名。 新建数组分别用来存储用户输入的新的节点,并将数组下一个位置指向空。伪代码如下:1、 建立数组。2、 累加器i初始化。3、 把新节点放在数组中,并将指针后移指向空。显示列表:分别按名字和号码输出信息,建立一个工作指针,用来指向数组的第一个位置如果第一个位置不为空,则输出所指向的节点的信息,将该指针后移。按姓名显示和按号码显示均可用此方法。伪代码如下:1、 工作指针初始化,并将计数器清零。2、 指针p不为空输出指向内容,直到指针p指向空结束。 查找用户信息(按号码):形参为数组。调用散列表函数1,既以号码为关键码存储的函数/按号码查找用户信息。定义

10、一个工作指针q当q不为空时吧输入的号码和当前q所指向的号码比较若不同,则q指向数组的下一个位置。若指向的内容和输入的内容相同则指针调用name,address,num函数输出内容。否则输出“无此内容”伪代码如下: 1、工作指针q初始化。2、.指针指向的号码和输入的比较。 (1).若不相同,则指针后移.。(2)若相同则输出结果。 3、指针指向空时,查找失败,退出。 查找用户信息(按姓名):同按号码一样 主函数:用if 语句来实现不同函数的调用输入1就调用添加记录的函数apend();输入2就调用list2();输入3就调用list() ; 输入6,7分别调用find(),find2();输入5返

11、回电话本的性能需求:输出形式:有中文提示,使用户能根据提示完成他想要的操作。界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计用链表数组等。程序主要内容:#includeusing namespace std;int z=0;struct BOOKint id,usr10,total,store,days10;/定义id 为地址,usr10为读者借书证序号store为现存量,days10借阅天数,char name31,author21; /name31为存放名字的数组,author21为存放作者的数组books100;v

12、oid return_confirm(void) /定义一个返回函数cout按任意键返回endl;void print_book(void) /输出函数:将所有的书的信息输出 int n; for(n=0;nz;n+) cout书名:booksn.namen; cout作者:booksn.authorn; cout存数:booksn.store of ; cout总数:booksn.totaln; int search_book(void) /查找图书按图书序号查找,将查找到的信息输出int n,i;couti;for(n=0;n100;n+)if(booksn.id=i) cout书名:bo

13、oksn.namen; cout作者:booksn.authorn; cout存数:booksn.store of ; cout总数:booksn.totaln; return n; cout输入错误或无效图书序号; return -1;/*上面的函数是在数组中找到图书号匹配的记录,显示其信息并返回数组下标,如果找不到相应记录则提示错误并返回-1。*/void book_out(void) /2张栋,借阅图书int n,s,l,d;cout0)couts;coutd;for(l=0;l10;l+) booksn.usrl=s; booksn.daysl=d; break; booksn.sto

14、re-;if(n!=-1&booksn.store=0) cout此书已经全部借出;return_confirm(); void book_in(void) /3赫宇霆。归还图书,输入借阅者图书证列/表,借书证序号 /如果图书存在且库存小于总数查找id把图/书收藏,且把借书证序号int n,s,l; /及借阅天数清零cout归还图书;if(n=search_book()!=-1&booksn.storebooksn.total)cout借阅者图书证列表:;for(l=0;l10;l+) if (booksn.usrl!=0) coutbooksn.usrl - booksn.daysl天;co

15、uts;for(l=0;l10;l+) if(booksn.usrl=s) booksn.usrl=0; booksn.daysl=0; break; booksn.store+;if(n!=-1&booksn.store=booksn.total)cout全部入藏;return_confirm(); /4陈青坤int look(int id) / 查找函数 int i=0; for(i=0;i100;i+) /5陈祖博 if(booksi.id=id) return i; ; return -1;void book_add(void) /注册新书若库里有的只需增加总量 /若库里没有则把书的各

16、种信息输入 int n,id;cout注册新书endl;for(n=0;n100;n+)if(booksn.id=0) break;coutid;if(look(id)=0) int v=look(id); booksv.id=id; coutv1; booksv.total=booksv.total+v1; booksv.store=booksv.store+v1; elsebooksn.id=id;coutbooksn.name;coutbooksn.author;coutbooksn.total;booksn.store=booksn.total;z+;return_confirm();

17、void book_del(void) /6王召删除图书int n;cout注销旧书;if(n=search_book()!=-1) booksn.id=0;cout该书已注销;return_confirm();void main(void) / 7王云飞主菜单while(1) menu: cout *操作选单*endl; cout1.借阅图书endl; cout2.归还图书endl; cout3.注册新书endl; cout4.注销旧书endl; cout5.输出全部图书信息endl; cout0 退出endl;int n;coutn;switch(n) /用switch(n) case调用

18、各个函数case 1: book_out();break;case 2: book_in();break;case 3: book_add();break;case 4: book_del();break;case 5: print_book();break;case 0: return;运行结果:1 注册图书2借阅图书3归还图书4输出图书全部信息5注销图书6退出号码本程序主要内容:#includeusing namespace std;unsigned int key;unsigned int key2;int *p;struct node /建节点1赫宇霆定义三个数组用来存放名字地址和号码

19、 char name21,address40; char num11; node * next; /定义next指针指向节点的下一个;typedef node* pnode; /定义pnode; mingzi*phone*nam;*a;这几个节点typedef node* mingzi;node *phone;node *nam;node *a; void sanlie(char num11) /定义哈希函数 int i = 3;key=(int)num2; /取数组的第三位作为初始关键码 while(numi!=NULL) /当第四位不空时 key+=(int)numi; /把第三位以后的数

20、字号码累加 i+; key=key%20; /用除留余数法散列void sanlie2(char name21) /和号码散列一样 int i = 1;key2=(int)name0; /从第一个开始累加 while(namei!=NULL) key2+=(int)namei; i+;key2=key2%20; node* input() /输入节点2组播 node *temp; /初始化链表,把姓名地址电话输入 temp = new node; temp-next=NULL; cout输入姓名:temp-name; cout输入地址:temp-address; cout输入电话:temp-n

21、um; return temp;int apend() /添加节点3刘帅 node *newphone; node *newname; newphone=input(); newname=newphone; newphone-next=NULL; newname-next=NULL; sanlie(newphone-num); sanlie2(newname-name); newphone-next = phonekey-next; phonekey-next=newphone; newname-next = namkey2-next; namkey2-next=newname; return

22、 0; void create() /新建节点4王召 int i; phone=new pnode20; /新建数组并初始化初始化 for(i=0;inext=NULL; void create2() /新建节点4 int i; nam=new mingzi20; for(i=0;inext=NULL; void list() /显示列表5张栋 int i; node *p; / 新建工作指针P for(i=0;inext; while(p) coutname_address_numnext; void list2() /显示列表5 int i; node *p; for(i=0;inext;

23、 while(p) coutname_address_numnext; void find(char num11) /查找用户信息6王云飞 sanlie(num); /按号码查找用户信息 node *q=phonekey-next; /定义一个工作指针q当q不为空时吧输入的号码和当前q所指向的号码比较 while(q!= NULL) /若不同,则q指向数组的下一个位置 if(strcmp(num,q-num)=0) break; q=q-next; if(q) /若指向的号码和输入的一样则输出信息 coutname_ address_numendl; else cout无此记录next; wh

24、ile(q!= NULL) if(strcmp(name,q-name)=0) break; q=q-next; if(q) coutname_ address_numendl; else cout无此记录endl; void menu() /菜单7输出中文提示是使用者一目了然 cout号码簿endl; cout1.添加记录endl; cout2.姓名散列endl; cout3.号码散列endl; cout4.查找记录endl; cout5.退出系统sel; if(sel=4) cout6号码查询,7姓名查询b; if(b=6) cout请输入电话号码:num; cout输出查找的信息:endl; find(num); else cout请输入姓名:name; cout输出查找的信息:endl; find2(name); if(sel=2) cout姓名散列结果:endl; list2(); if(sel=1) cout请输入要添加的内容:endl; apend(); if(sel=3) cout号码散列结果:endl; list(); if(

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1