




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、重庆工学院管理信息系统设计图书管理信息系统组长: 2006年12月23日院 系: 班 级: 同组成员: 指导老师:电子信息工程学院计工本03图书管理信息系统设计一可行性研究:随着全球信息化的发展趋势,在通用信息平台上构筑高效实用的协同工作和自动化办公应用系统,满足信息高度共享和即时发布的需求,有效实现内部知识管理,已成为众多用户的共同需求。图书管理系统,为政府机关与广大企事业单位自动化办公提供了一个较好的解决方案。在开发过程中,按照软件工程的步骤,从设计到开发采用了面向对象的思想和技术,本来采用sql server 2000网络数据库,使得本系统可以方便的和其他子系统进行数据交换,这样的方案比
2、较合适,但是我们只是在实验阶段,所以在使用c+编写程序时我们决定只采用文件的形式对图书及读者的信息进行管理,这样易于实现,也方便管理。最主要是存储容量较小,减少了开发的成本和维护的成本。同时,注意从软件的命令行应用界面上优化软件质量,使得本系统具有较强的可操作性。二需求分析:1任务概述:1.1 目标:对图书信息进行图书入库、借阅登记、借阅查询、过期提示,用户授权这些日常业务的需要。高效性通过系统的实用,能够改变旧的图书管理模式,使对图书的管理、借阅、查询更加方便有效。1.2 运行环境: windows 98/2000/xp/2003操作系统下,无须任何软件支持。 2数据需求:2.1 数据流条目
3、:权限=权限+姓名 登录用户=id号+姓名+权限用户=用户id号+姓名+性别+e-mail 图书类别=类别+类名图书=图书编号+书名+作者+出版社+定价+总数量+剩下数量借阅=用户帐号+图书编号+借书日期+到期日期+数量+还书日期借阅信息=用户帐号+图书编号+借书日期+到期日期+数量+还书日期2.2 数据字典(dd):名字:书名别名:描述:标识每一本图书的实际名字定义:图书名称=1nvarchar50位置:新书入库借阅登记借阅查询 图书整理超期提示 名字:图书序编号别名:描述:唯一地标识每一本图书的关键域定义:图书序列号=1numeric10位置:新书入库 借阅登记 借阅查询 图书整理超期提示
4、名字:出版社别名:描述:标识每一本图书的出版处定义:图书出版社=1nvarchar50位置:新书入库借阅登记图书整理 名字:作者别名:描述:标识每一本图书的写作者定义:图书作者=1nvarchar20位置:新书入库借阅登记图书整理 名字:定价别名:描述:标识每一本图书的实际名字定义:图书定价=1nvarchar10位置:新书入库借阅登记图书整理名字:类型别名:描述:标识图书的分类种类定义:图书类型=1nvarchar2位置:图书入库 新书入库借阅登记图书整理 。名字:图书库存数量别名:描述:标识每一本图书的数目定义:图书库存数量=1int4位置:图书入库 新书入库借阅登记图书整理 2.3 数据
5、库描述:使用文件系统形式对图书及读者信息进行保存,这样使得存储信息的容量比较小,管理和移动简单,不需要专用数据库系统的支持。3功能需求:3.1 功能划分:图书管理系统主要实现以下七方面的功能:a.查询 b.图书借还 c.图书入库 d.用户注册 e.图书超期提示 f.用户登陆 g.备份还原3.2 功能描述:图书管理包括查询、借还、入库、注册、超期提示、登陆和备份还原七方面功能。图书入库,主要实现入库登记。图书借阅,进行借书登记(此操作由管理员完成);当用户要查询自己的借阅情况时,可进行借阅查询。图书超期提示,当借阅者在已到借书期限时未归还图书,提示其尽快办理归还手续。3.3 数据流图(dfd):
6、实体数据流存储处理借阅者图书管理员系统管理员图书管理系统借阅者图书管理员系统管理员查询归还、借阅权限查询、借阅处理、罚款处理显示借阅归还情况借阅清单、归还清单、罚款清单监控情况图书管理信息系统顶层图检查权限合法性 口令非法信息管理系统处理命令1合法的权限不同权限执行不同命令借阅命令2归还命令3罚款命令4入库 6借阅归还罚款查询新书入库学生借书信息输出处理7图书库存罚单表超期信息图书库存入库单查询结果罚款单归还单借阅单查询命令5图书管理信息系统0层图表单输出学生借书信息借阅处理增加2.1修改2.2删除2.3借阅命令学生借书信息图书库存生成借书清单2.4输出清单加工2细化图归还处理修改3.2删除3
7、.3学生借书信息图书库存生成归还清单3.4输出清单归还命令加工3细化图罚款处理4罚款命令罚款单学生借书信息超期信息统计输出加工4细化图查询处理5一般查询5.1组合查询5.2图书库存信息学生信息查询结果5.3输出查询命令加工5细化图入库处理入库单图书库存库存报警入库命令借书信息加工6细化图4安全性需求:考虑到不同用户的权限不同,第一次进入该系统时应该向管理员申请注册一个用户名和密码,并完整的填写相关信息,同时存入数据库表中。这样管理员就可赋予不同用户不同的权限。每位用户根据自己的身份不同,进入不同的用户界面。管理员有权力行使所有的管理功能,普通用户只能进行一般的查询。5一致性需求:在图书管理系统
8、相关的表之间,有较强的关联性,为了实现一致性的需求,我们在各个表之间建立起了一致性约束。6完整性需求:根据图书管理系统的要求,为保持数据的完整性,采用了数据库的事务机制,防止出现操作故障。三. 概要设计说明书:1总体设计:1.1总体结构和模块外部设计:图书管理系统用户管理图书整理查询图书借还图书修改图书删除类别修改类别添加图书信息查询借阅信息查询用户信息查询借阅图书归还图书备份还原 读者管理环境管理新书入库增加读者删除读者 2接口设计:2.1 外部接口:通过一定的计算机硬件,建立服务器系统,管理员通过管理服务器系统,与用户进行交互,从而达到资源共享的目的,实现图书管理系统。2.2 内部接口:程
9、序内部需要共同的数据定义和描述,此系统是智能办公化管理系统的一个子系统,必须和这个系统的其他子系统统一数据定义等,才能使该系统性能达到最好,并且要尽量消除和其他子系统模块之间存在的数据冗余,才能使整个智能办公系统做到高效,方便。4运行设计:4.1 运行模块的组合:运行模块分成基本的三个模块,即是:输入模块,输出模块,处理模块等。这使得整个系统的维护容易,简单;系统的结构层次简单,易懂。4.2 运行控制:本系统采用的控制方式主要有三种:顺序,选择,循环。5安全保密设计: 考虑到不同用户的权限不同,管理员id号为0。这样管理员可操作一切图书及读者的信息管理。当用户登录进操作界面,根据id号自动识别
10、用户权限,当id号存在时才能进入该用户所允许做的权限操作界面,否则就只能看到登录界面管理员有权力行使所有的管理功能,普通用户只能进行一般的查询。四详细设计:1数据库表权限:(权限,姓名)登录用户:(id号,姓名,密码,权限)用户:(用户id号,姓名,性别,e-mail)图书类别:(类别,类名)图书:(图书编号,类别,书名,作者,出版社,定价,总数量,剩下数量,备注)借阅:(用户id号,图书编号,借书日期,到期日期,数量,还书日期)借阅信息:(用户id号,图书编号,借书日期,到期日期,数量,还书日期)2计算机的软件配置windows 98/windows xp/windows 2000/wind
11、ows 2003。本程序设计成四个大类:分别为book类(图书类)、reader(读者类)、readerdb类(读者库类)、bookdb类(图书数据库类)。四个类相关属性如下:book类:char bookname 30 /书名char author 10 /作者char publish 20 /出版社int onshelf /是否在架int bookid /图书idint tag /删除标记reader类:char name 20 /姓名char sex 2 /性别char email 20 /e-mailint tag /删除标记int readtype /读者类型int borbook
12、/借书本数int maxday /借书天数int borbook maxbor /图书数组中存放idbookdb类: int top /图书记录指针 book book maxbook /图书记录readerdb类:int top /读者记录指针reader read maxreader /读者记录程序结构图如下:initmenu初始化菜单登陆login()退出exit()注册enrol()管理员菜单usermenu()retno=41普通用户菜单usermenu()retno=42ugenrol()filltable()我是用一个全局变量retno来控制程序的走向的,对retno分别赋不同的
13、值来判断跳到哪一个功能函数,然后用一个while 与 switch 语句 调用。rederdb类与bookdb类分别定义了对象数组来存放reader对象与book对象.在reader对象里属性borbook、maxday控制借多少本书与可以借多少天。还有相关程序中都有注解解释。五. 编码与实现:程序源代码如下:#include #include #include /setw()#include /getch()#include #include #include #include const int maxbor=10; /每个读者最多借借10本 const int maxreader=100
14、; /读者上限 const int maxbook=100; /图书上限 const int f=50;/常数设置 输出域宽/本科生每人每证可借4 本书,每本书可以借60 天const int u_maxbor=4;const int u_maxday=60;/硕士研究生 每人每证可借8 本书,每本书可以借90 天const int m_maxbor=8;const int m_maxday=90;/教师 博士研究生 每人每证可借10 本书,每本书可以借120 天 const int dt_maxbor=10;const int dt_maxday=120;/全局变量int retno=0;/
15、用于不同功能模块之间的切换int userid; /用户id/-book类-class bookprivate:char bookname30;/书名 char author10; /作者 char publish20; /出版社int onshelf; /是否在架 1:在架 0:已借 int bookid; /图书id int tag; /删除标记 1:已删 0:未删 int curday; /记录下借书时处于一年中的第几天int borrowday; /记录该书可以借多少天public:book() onshelf=1; curday=0;borrowday=0;book(char na,
16、char code,char au,char pub,int no) strcpy(bookname,na); strcpy(author,au); strcpy(publish,pub); bookid=no; onshelf=1; curday=0;borrowday=0; /设置图书相关属性 void setbook(int id,char *name,char *au,char *pub) bookid=id; strcpy(bookname,name);strcpy(author,au);strcpy(publish,pub); tag=0;onshelf=1; curday=0;b
17、orrowday=0; /设置书名 void setname(char na) strcpy(bookname,na); /设置作者 void setauthor(char au) strcpy(author,au); /设置出版社 void setpublish(char pub) strcpy(publish,pub); /设置借书时处于一年中的第几天void setcurday(int day) curday=day; /设置该书可以借多少天void setborrowday(int day) borrowday=day; /借书操作 int borrowbook() if (onshe
18、lf=1) onshelf=0; return 1; return 0; /还书操作 void retbook() onshelf=1; /设置图书idvoid setid(int no) bookid=no; /输出图书 void disp() coutbookidsetw(18)booknamesetw(20)authorsetw(20)publishsetw(20)(onshelf=1? 在架:已借)endl; /设置删除标记void delbook() tag=1; /获得删除标记 int gettag() return tag; /获得是否在架标记 int getonshelf()
19、return onshelf; /获得书编号 int getid() return bookid; char *getname() return bookname;char *getauthor() return author;char *getpub() return publish;int getcurday() return curday;int getborrowday() return borrowday;/-reader类-class readerprivate:char name20; /姓名char sex2; /性别int readerid; /证件号码char email2
20、0;/邮件int tag; /删除标记 1:已删,0:未删int readtype; /读者类型 1:本科本 2.硕士研究生 3.博士研究生 4.教师 int borbook; /根据读者类型不同而借书本数不同int maxday; /根据读者类型不同而借书天数不同int borbookmaxbor; /所借图书数组中存放所借图书id号public: reader() borbook=0; maxday=0;tag=0; readtype=0;for (int i=0;imaxbor;i+) borbooki=0; char *getname() return name; /获取姓名char
21、*getemail() return email;/获取emailchar *getsex() return sex; /获取性别 int getid() return readerid; /获取读者证件号码int gettag() return tag; /获取删除标记 int getmaxday() return maxday;/获取借书最大天数int getborbook() return borbook;/获取借书最大本数/设置姓名void setname(char na) strcpy(name,na); /设置性别 void setsex(char s) strcpy(sex,s)
22、; /设置mail void setemail(char m) strcpy(email,m); /设置idvoid setid(int id) readerid=id; /设置最多借书本数void setborbook(int nbook) borbook=nbook; /设置最多借书天数void setmaxday(int nday) maxday=nday; /设置读者类型void settype(int type) readtype=type; /增加读者void setreader(int id,char *na,char *s,char *mail,int nbook,int nd
23、ay) readerid=id; strcpy(name,na); strcpy(sex,s); strcpy(email,mail); borbook=nbook; maxday=nday; /借书操作 void borrowbook(int bookid) for (int i=0;iborbook;i+) if (borbooki=0) borbooki=bookid; coutok!endl; return; /还书操作 int retbook(int bookid) for (int i=0;iborbook;i+) if (borbooki=bookid) borbooki=0;
24、return 1; return 0; /判断borbook是否为空 为空返回1,否则返回0int checkbook() for (int i=0;iborbook;i+) if(borbooki!=0) return 0; return 1; /删除读者 int deluser() if(checkbook()=1)tag=1; return 1;elsecout该读者还有借书,不能删除!endl;tag=0;return 0; /输出读者信息 void disp() coutsetw(5)readeridsetw(10)namesetw(10)sexsetw(15)借书编号:; for
25、(int i=0;iborbook;i+) if (borbooki!=0) coutborbooki|; coutendl; /返回数组中有多少个值int retcount() for (int i=0;iborbook;i+) if(borbooki=0) return i; return borbook;/-读者数据库-class readerdbprivate:int top; /读者记录指针 reader readmaxreader; /读者记录 对象数组public: /构造函数,将reader.txt读到read中 readerdb() reader s; fstream fil
26、e; top=-1; file.open(reader,ios:in); while (1) file.read(char *)&s,sizeof(s); if (!file) break; top+; readtop=s; file.close(); /增加用户到数据库中int addreader(int id,char *na,char *s,char *mail,int nbook,int nday) reader *p=query(id); if (p=null) top+; readtop.setreader(id,na,s,mail,nbook,nday); return 1; r
27、eturn 0; /重载addreader(int id,char *na,char *s)int addreader(reader &b) reader *p=query(b.getid(); if (p=null) top+; readtop.setreader(b.getid(),b.getname(),b.getsex(),b.getemail(),b.getborbook(),b.getmaxday(); return 1; return 0; /删除所有读者信息void clear() top=-1; /按编号查找 reader *query(int readerid) for (
28、int i=0;i=top;i+) if (readi.getid()=readerid & readi.gettag()=0) return &readi; return null; /输出所有读者信息 void dispall() for (int i=0;i=top;i+) if (readi.gettag()=0)/未删除就输出 readi.disp(); /将read写入reader.txt文件中 voidwritedb() fstream file(reader,ios:out); for (int i=0;i=top;i+) if (readi.gettag()=0) file.
29、write(char *)&readi,sizeof(readi); file.close(); ;/-图书数据库-class bookdbprivate: int top; /图书记录指针 book bookmaxbook; /图书记录public: /构造函数,将book.txt读到book中 bookdb() book b; top=-1; fstream file(book,ios:in); while (1) file.read(char*)&b,sizeof(b); if (!file) break; top+; booktop=b; file.close(); /增加图书 int
30、 addbook(int n,char *na,char *au,char *pub) book *p=query(n); if (p=null) top+; booktop.setbook(n,na,au,pub); return 1; return 0; /增加图书 重载addbook(int n,char *na,char *au,char *pub) int addbook(book &b) book *p=query(b.getid(); if (p=null) top+; booktop.setbook(b.getid(),b.getname(),b.getauthor(),b.g
31、etpub(); return 1; return 0; /全删 void clear() top=-1; /查找图书 book *query(int bookid) for (int i=0;i=top;i+) if (booki.getid()=bookid & booki.gettag()=0) return &booki; return null; /显示所有图书信息void showbook() for(int i=0;i=top;i+) if (booki.gettag()=0) booki.disp(); / 将book写入book.txt文件中 void writedb() f
32、stream file(book,ios:out); for (int i=0;i=top;i+) if (booki.gettag()=0) file.write(char*)&booki,sizeof(booki); file.close(); ;/ffffffffffffffffffffff以下是功能函数ffffffffffffffffffffffffffffffffffffffffffff/新书入库void bookin(book &b,bookdb &db)int id;char name20;char pub15;char author10; int choose;system(c
33、ls); /清屏cout新书入库endlendl;coutid;coutname;coutauthor;coutpub;if(db.query(id)!=null) cout该图书id已存在,请按任意键重新输入:endl; retno=51;getch();elseb.setid(id);b.setname(name);b.setauthor(author);b.setpublish(pub);cout入库成功!endlendl;cout按任意数字键继续.endlendl;cout按数字0键退出. endlendl;cout返回上一层目录请按1键.endlchoose;if(choose=0)
34、 retno=3;if(choose=1) retno=41;/删除图书void bookout(bookdb &db)book *p;int id;char choose; system(cls); /清屏 cout删除图书endlendl; coutid; p=db.query(id); if (p=null) cout该图书不存在getonshelf()=0) cout该图书已借出,不能删除!delbook(); cout该图书已删除endl; cout是否继续删除y/n.endlendl; cout返回上一层目录请按b键.endlchoose; if(choose=n) retno=3
35、; if(choose=y) retno=55; if(choose=b) retno=41;/删除读者void userout(readerdb &db) int id; reader *r; char choose; system(cls); /清屏 cout删除读者endlendl; coutid; r=db.query(id); if (r=null) cout该读者不存在deluser()=1) cout该读者已删除endl; cout是否继续删除y/n.endlendl; cout返回上一层目录请按b键.endlchoose; if(choose=n) retno=3; if(ch
36、oose=y) retno=54; if(choose=b) retno=41;/借书操作void borrowbook(bookdb &bdb,readerdb &rdb)int bookid;book *b; reader *r;char choose;/-取时间函数-struct tm *local; time_t t; t=time(null); local=localtime(&t); /- system(cls); /清屏 cout借书操作.endlretcount()getborbook()/判断用户借书是否已满 cout你已借了retcount()本书,还有getborbook
37、()-(r-retcount()本书可借!endlendl; coutbookid; b=bdb.query(bookid); /获得bookid的指针 if (b=null) cout该图书不存在,不能借书borrowbook()=0) cout该书已借出,你不能借!borrowbook(bookid);cout借书成功!endl; cout当前时间为tm_year-100+2000年tm_mon+1月tm_mday日setcurday(local-tm_yday);b-setborrowday(r-getmaxday(); cout是否继续借书y/n.endlendl; cout返回上一层
38、目录请按b键.endlchoose; if(choose=n) retno=3; if(choose=y) retno=61; if(choose=b) retno=42;elsecout你已借满getborbook()本书不可再借!endl; cout返回上一层目录请按b键.endlchoose;if(choose=b) retno=42;/还书操作void retbook(bookdb &bdb,readerdb &rdb)int bookid;book *b; reader *r;char choose; system(cls); /清屏 cout还书操作.endlendl; coutbookid; b=bdb.query(bookid);/查询图书 r=rdb.query(userid);/查询
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 林木遗传育种与经济效益分析考核试卷
- 数字智慧方案5486丨如何高效构建智慧零售系统
- 肉类产品安全追溯体系构建与实施考核试卷
- 聚丙烯酸甲酯纤维染色考核试卷
- 建筑幕垟安全施工方案
- 《销售渠道策略》课件
- 2025年二级造价工程师之建设工程造价管理基础知识能力测试试卷B卷附答案
- 2025年教师资格之小学教育学教育心理学强化训练试卷B卷附答案
- 《空调技术与设备》课件
- 双减初中物理教学设计
- GB/T 15108-2017原糖
- GB/T 15089-2001机动车辆及挂车分类
- 新疆理工学院面向社会公开招聘27名行政教辅人员【共500题含答案解析】模拟检测试卷
- 初中语文人教八年级上册《作文训练之细节描写》PPT
- 增值税转型改革及增值税条例课件
- 2023届高考语文复习:西藏男孩丁真 课件
- 挖掘机司机技能理论考试题库大全(600题版)
- 穿支动脉梗死的病因和机制课件
- 吡格列酮联合二甲双胍治疗2型糖尿病的循证证据
- 布草间管理制度(3篇)
- 高校电子课件:产业经济学(第五版)
评论
0/150
提交评论