图书馆书籍管理系统说明书(附代码)
- 格式:doc
- 大小:1.02 MB
- 文档页数:21
大型数据库应用课程设计课程设计说明书图书馆书籍管理系统起止日期:2014 年12 月 1 日至2014 年12 月7 日学生姓名肖魁班级计算机1102班学号11408100214成绩指导教师(签字)计算机与通信学院2012年12月7 日图书馆书籍管理系统一、课题的介绍和课题的任务图书馆书籍管理系统主要对图书馆中书籍进行管理,包括对书籍的添加,删除,修改,各种方式的查询等操作,用于管理员对图书馆书籍库的管理;采用Oracle作为数据库,应用了Java,Jsp,JavaScript,SQL等编程语言以及 Struts2,JDBC等等技术,另外系统采用B/S结构,MVC的设计模式进行设计,在数据库方面,多处应用了存储过程和触发器;二、课程设计的要求1、书籍的添加:通过触发器和索引,使图书的编号按照自动增长的方式进行添加,其他字段还有:书籍名称,作者,出版社,页数,藏书地址等;并且通过定义触发器,使每增加一条图书信息,在图书状态表中给其增加对应的图书状态信息;2、书籍的删除:通过存储过程来实现,如果该书的状态为已借出,就不能删除书籍,并发出提示信息;书籍的删除,通过定义before触发器,假如该书籍能够删除,就在其删除之前,删掉该书籍的状态信息;3、书籍的修改:修改除了书籍主键外的其他信息;4、书籍的查询:可根据图书的索引号进行精确查询,可以根据图书的书名,作者,出版社,藏书地址等进行模糊查询,基于系统的需求,还提供系统中以所有字段作为关键字的模糊查询;5、用户身份验证,管理员通过用户登录,输入验证信息,若经过系统验证后,若正确,则进入图书管理主页,若出现错误,则跳到登录界面,并返回相应的友好的错误提示信息;三、系统的分析和系统中数据库的分析(ER图等)1、系统设计1.1.系统概要设计-流程图系统总体设计如图1.1所示实现用户的登录,管理员登录后对图书进行书籍的添加,书籍各种方式的查询,书籍的修改,书籍的删除;1.2.系统的详细设计1.2.1.用户的登录图书管理员通过输入管理员和密码进行验证,若验证正确,则进入系统。
一、系统要求:(一)、硬件要求:1、CPU:133M或更高主频。
2、内存:64M或更高。
3、光驱:普通光驱.4、显示器:普通彩显。
5、其他:鼠标……(二)、软件要求:1、windows xp或更高版本。
2、1024*768分辨率。
(三)、其他要求:您在使用本软件时,请先与软件开发者联系,经过允许,得到许可号后才能正常使用本软件.二、安装本软件安装非常简单,只需找到工程1。
exe文件,就可运行。
安装时软件开发者建议不要把本软件安装在系统盘.以便备份。
软件使用首先,向软件开发者获取管理员或者宾客的用户名和密码,用初始密码登陆, 登录界面按确定或者enter键即可登陆如果用户名和密码均对应,则显示主界面如果用户名错误,则弹出如果密码错误,则弹出主界面如下:为了系统使用的安全,请先选择菜单栏的系统管理进行密码的修改修改密码之后,进行所需功能的使用。
1.图书管理图书管理里面有两个子菜单:图书信息管理,图书类别管理。
图书类别管理:添加图书类别,修改图书类别,删除图书类别图书信息管理:添加图书信息,修改图书信息,删除图书信息,查询图书信息添加图书类别进行新书的新类别进行添加,在图书类别对应的文本框写下新的图书类别,在图书编号对应的文本框输入图书的编号,然后按确认键进行添加。
如果不添加,按取消,不对图书进行添加。
修改图书类别如果对图书类别和编号进行修改,先按下修改按钮,使得表格处于可修改状态,修改完后更新表格,系统自动更新数据库,如需要对图书类别进行删除,则选中该记录按下删除,弹出消息框“确定删除”,按下是,则删除,否,则保持原样,按下取消,则不对图书类别进行修改。
如果不是管理员登陆,则修改功能不可用添加图书信息:对图书的信息进行添加,在图书信息对应的文本框写下新的图书信息,然后按确认键进行添加。
如果不添加,按取消,不对图书信息添加。
修改图书信息如果对类别名称和类别编号进行修改,先按下修改按钮,使得表格处于可修改状态,修改完后更新表格,系统自动更新数据库,如需要对图书信息进行删除,则选中该记录按下删除,弹出消息框“确定删除”,按下是,则删除,否,则保持原样,按下取消,则不对图书信息进行修改.如果不是管理员登陆,则修改功能不可用查询图书信息:对图书进行查询,可以多种方式查询,选择窗体上的类别,进行查询,查询的结果显示在窗体的表格上,如果发现自己想要的书,按下借书,即可进行借书.如果不是管理员登陆,则修改功能不可用2.读者管理读者管理有两个子菜单:读者信息管理和读者类别管理读者类别管理:添加读者类别,修改读者类别,删除读者类别读者信息管理:添加读者信息,修改读书信息,删除读者信息,查询读者信息添加读者类别进行新的读者进行添加,在读者类别对应的文本框写下新的读者类别,在对应的文本框输入对应的信息,确认键进行添加。
程序设计综合训练<图书馆管理系统>设计报告院系:材料科学与工程学院专业班级:材料成型一班*名:***学号: ***********指导老师:肖老师一、程序功能简介图书排序功能1)按图书编号排序可以按图书编号的大小排序,显示到屏幕上。
(从小到大)2)按图书出版时间排序可以按图书出版时间的前后排序,显示到屏幕上。
(从近到远)3)按图书价格排序可以按图书价格的贵宜排序,显示到屏幕上。
(从便宜到贵)4)按图书书名排序可以按图书书名字符的大小排序,显示到屏幕上。
(从小到大)5)按图书作者名排序可以按图书作者名字符的大小排序,显示到屏幕上。
(从小到大)二、本人完成的主要工作图书排序功能(排序比较简单只要做出来一个,其他都和它雷同。
)三、设计方案1.设计分析;1)序功能简介:s2)各个功能流程图1、按图书编号排序2、按图书出版时间排序3、按图书价格排序4、按图书书名排序5、按图书作者名排序2. 操作方法简介; 1)主面板输入密码9进入系统。
输入排序的功能序号5是 输入y/n 进,输入n 的话返回到主菜单Y/n是(y)显示排序否(n )按Enter2)主菜单按4进入排序功能。
2)排序功能目录3)选择功能(比如3)按价格的大小排序3.实验结果(包括输入数据和输出结果)四、设计体会在期末课程设计中,我们所选择的是设计一个图书管理系统,这对我们来说是一次尝试与创新的过程,也可以说是一个挑战的过程,毕竟以前没有作过,缺少经验。
现在利用自己学到的知识设计并制作一个图书管理系统,这本身就是一个知识转化为生产力的过程,所以大家都很兴奋,不同程度的投入了很高的热情与努力。
在具体的设计与实施中,我们看到并感受到了一个管理系统从无到有的过程,对具体的设计步骤、思路、方法、技巧都有了进一步的了解,并感受深刻。
在设计中我们基本能按照规范的方法和步骤进行,首先对现有的系统进行调查,并查阅有关资料,最后确定设计方案,然后设计并制作,实施过程中我们深刻的认识到认真执行管理系统软件标准的重要性,我们由于对管理系统软件相关的标准和规范不太了解,缺少行为操作准则,所以在设计中手法比较生硬,主与次也没能很好把握住,这些方面通过这次我们都要加强了解。
一、系统要求:(一)、硬件要求:1、CPU:133M或更高主频。
2、内存:64M或更高。
3、光驱:普通光驱.4、显示器:普通彩显。
5、其他:鼠标……(二)、软件要求:1、windows xp或更高版本。
2、1024*768分辨率。
(三)、其他要求:您在使用本软件时,请先与软件开发者联系,经过允许,得到许可号后才能正常使用本软件.二、安装本软件安装非常简单,只需找到工程1。
exe文件,就可运行。
安装时软件开发者建议不要把本软件安装在系统盘.以便备份。
软件使用首先,向软件开发者获取管理员或者宾客的用户名和密码,用初始密码登陆,登录界面按确定或者enter键即可登陆如果用户名和密码均对应,则显示主界面如果用户名错误,则弹出如果密码错误,则弹出主界面如下:为了系统使用的安全,请先选择菜单栏的系统管理进行密码的修改修改密码之后,进行所需功能的使用。
1.图书管理图书管理里面有两个子菜单:图书信息管理,图书类别管理.图书类别管理:添加图书类别,修改图书类别,删除图书类别图书信息管理:添加图书信息,修改图书信息,删除图书信息,查询图书信息添加图书类别进行新书的新类别进行添加,在图书类别对应的文本框写下新的图书类别,在图书编号对应的文本框输入图书的编号,然后按确认键进行添加.如果不添加,按取消,不对图书进行添加。
修改图书类别如果对图书类别和编号进行修改,先按下修改按钮,使得表格处于可修改状态,修改完后更新表格,系统自动更新数据库,如需要对图书类别进行删除,则选中该记录按下删除,弹出消息框“确定删除",按下是,则删除,否,则保持原样, 按下取消,则不对图书类别进行修改。
如果不是管理员登陆,则修改功能不可用添加图书信息:对图书的信息进行添加,在图书信息对应的文本框写下新的图书信息,然后按确认键进行添加。
如果不添加,按取消,不对图书信息添加。
修改图书信息如果对类别名称和类别编号进行修改,先按下修改按钮,使得表格处于可修改状态,修改完后更新表格,系统自动更新数据库,如需要对图书信息进行删除,则选中该记录按下删除,弹出消息框“确定删除”,按下是,则删除,否,则保持原样,按下取消,则不对图书信息进行修改.如果不是管理员登陆,则修改功能不可用查询图书信息:对图书进行查询,可以多种方式查询,选择窗体上的类别,进行查询,查询的结果显示在窗体的表格上,如果发现自己想要的书,按下借书,即可进行借书。
图书馆管理系统需求说明书文档编号:LIBMS-REQ-001版本.1.01.介绍本需求说明书旨在详细描述图书馆管理系统的功能需求,便于开发人员了解项目的要求和目标,确保开发过程中的准确性、完整性和一致性。
2.功能需求2.1 登录与身份验证①用户登录:用户可以通过用户名和密码登录系统。
②用户身份验证:在用户登录后,系统应验证用户的身份,确保用户身份的合法性和权限。
2.2 图书管理①图书录入:图书管理员可以录入新书的信息,包括书名、作者、出版社、ISBN号等。
②图书查询:用户可以根据书名、作者、出版社、ISBN号等关键词进行图书查询,并查看图书的详细信息。
③图书借阅:用户可以借阅图书,并记录借阅日期和借阅期限。
④图书归还:用户可以归还已借阅的图书,并记录归还日期。
⑤图书预约:用户可以预约借阅已被借走的图书,当图书归还后系统自动为用户预约。
⑥图书续借:用户可以续借已借阅的图书,如果未超过最大续借次数限制。
2.3 会员管理①会员注册:用户可以通过填写个人信息进行会员注册。
②会员信息修改:注册用户可以修改个人信息,包括用户名、密码、联系方式等。
③会员注销:会员可以选择注销自己的账户。
④会员数据统计:系统可以会员的借阅次数、借阅记录等统计数据。
2.4 借阅管理①借阅记录查询:管理员可以查询借阅记录,并根据特定条件过滤。
②借阅限制:设置用户的借阅限制,包括借阅总数、借阅期限等。
③借阅逾期提醒:系统可以根据借阅期限提醒用户归还逾期图书。
2.5 系统管理①用户管理:管理员可以管理用户,包括添加用户、删除用户、修改用户权限等。
②角色管理:管理员可以创建不同角色,并分配相应的权限给用户。
③权限管理:管理员可以设置用户的操作权限。
④系统日志:系统应记录用户的操作日志,包括登录、退出、图书操作等。
3.性能需求3.1 并发处理能力①系统应能同时处理多个用户请求,保证系统的并发性能。
②系统应能快速响应用户操作,减少用户等待时间。
图书馆管理系统代码。
txt男人偷腥时的智商仅次于爱因斯坦。
美丽让男人停下,智慧让男人留下.任何东西都不能以健康做交换.#include<stdio.h〉#include<math。
h〉#include<string。
h>#include<stdlib.h>struct books_list{char author[20]; /*作者名*/char bookname[20]; /*书名*/char publisher[20]; /*出版单位*/char pbtime[15]; /*出版时间*/char loginnum[10]; /*登陆号*/float price; /*价格*/char classfy[10]; /*分类号*/struct books_list * next; /*链表的指针域*/};struct books_list * Create_Books_Doc(); /*新建链表*/void InsertDoc(struct books_list * head); /*插入*/void DeleteDoc(struct books_list * head , int num);/*删除*/void Print_Book_Doc(struct books_list * head);/*浏览*/void search_book(struct books_list * head); /*查询*/void info_change(struct books_list * head);/*修改*/void save(struct books_list * head);/*保存数据至文件*//*新建链表头节点*/struct books_list * Create_Books_Doc(){struct books_list * head;head=(struct books_list *)malloc(sizeof(struct books_list)); /*分配头节点空间*/head—>next=NULL; /*头节点指针域初始化,定为空*/return head;}/*保存数据至文件*/void save(struct books_list * head){struct books_list *p;FILE *fp;p=head;fp=fopen("data.txt","w+"); /*以写方式新建并打开 data。
#include<fstream〉#include<iostream〉#include<stdlib.h〉#include〈ctime〉#include<cmath>#include〈termios.h〉#include <sstream〉#include<string。
h〉#include<assert.h〉//改变字体颜色#define NONE "\033[m"#define RED "\033[0;32;31m”#define GREEN ”\033[0;32;32m”#define BLUE "\033[0;32;34m”#define YELLOW ”\033[1;33m”#define LIGHT_RED ”\033[1;31m”#define LIGHT_GREEN "\033[1;32m"#define LIGHT_BLUE "\033[1;34m”/*程序导读:1。
程序中对书的操作,可通过书名,编号来进行,flag=0按书名来操作,flag=1按书编号来操作2.程序中对用户的操作,也可通过姓名,用户ID号或编号两种方式来进行,flag=0按姓名来操作,flag=1按用户ID号或编号来操作3。
本程序分5个部分,具体已标识如(1)图书管理。
.*/using namespace std;class Book{public:string book_name;string book_num;//编号string book_pre;//出版社string book_aut;//作者int book_con;//这样的书还有几本int book_mux;//这样的书总共有几本public:Book(){book_con=0;book_mux=0;}void show_book();};/****************************************(1)图书管理*******************************************/void Book::show_book(){cout<〈"书名:”<〈book_name<〈endl;cout〈〈”出版社:"〈<book_pre〈〈endl;cout<<”此书的作者:"〈<book_aut〈<endl;cout〈<”ISBN编号:”<〈book_num<〈endl;cout<<"此书共有"〈<book_mux<<”本”〈〈endl;cout<<”还有"<<book_con〈〈”本书未借出!"〈<endl;}class BookNode{public:Book book;BookNode *next;};BookNode *headbook=NULL;class BookManage{public:int totolbook;public:BookManage(){totolbook=0;}void addbook();void delbook(string s,int num,int flag);void findbook(string s,int flag);//查询图书};void BookManage::addbook(){string h;cout〈〈"添加输入0,退出输入—1"<〈endl;cin>>h;if(h==”-1”)return;else if(h=="0”)while(1){if(h==”-1”)break;else if(h==”0”){string na,nu,p1,aut;int con;BookNode *p=new BookNode;cout<<”请输入书名:"〈〈endl;cin〉>na;p—〉book.book_name=na;cout<〈"请输入ISBN编号:”<<endl;cin>〉nu;p->book。
图书管理系统功能说明书图书管理系统功能说明书1. 引言本文档旨在详细介绍图书管理系统的各项功能。
图书管理系统是一款用于图书馆或书店管理图书借阅和库存的软件系统。
2. 系统概述2.1 系统目标图书管理系统的目标是提供一个高效、便捷的图书管理解决方案,方便用户进行图书的借阅、归还、查询和管理。
2.2 系统特点- 借阅管理:允许用户借阅图书,设置借阅规则和超期管理。
- 馆藏管理:管理图书馆或书店的图书库存,包括图书入库、出库、盘点等功能。
- 读者管理:管理读者信息,包括注册、修改个人信息、查询借阅记录等功能。
- 数据统计:提供图书借阅统计、读者活跃度分析等数据报表功能。
3. 系统功能3.1 登录与权限管理- 支持管理员和普通用户登录。
- 不同角色拥有不同的权限,管理员可以进行图书和读者信息的管理,普通用户只能进行借阅和查询等操作。
3.2 图书管理- 图书入库:支持单本和批量导入图书信息,包括书名、作者、出版社、ISBN码等。
- 图书出库:支持读者借阅图书,自动借阅记录并更新图书库存。
- 图书信息查询:根据书名、作者、ISBN码等条件进行图书查询。
- 图书借阅归还:支持读者归还图书,自动计算罚款金额(如有超期)并更新图书库存。
3.3 读者管理- 读者注册:读者可以通过系统注册成为图书馆或书店的会员,提供个人信息。
- 读者信息修改:读者可以修改个人信息,包括联系方式、地址等。
- 读者借阅查询:读者可以查询自己的借阅记录,包括借阅日期、归还日期、逾期天数等。
3.4 数据统计- 图书借阅统计:系统可以图书借阅统计报表,包括图书借阅量、借阅次数最多的图书等。
- 读者活跃度分析:系统可以分析读者的借阅行为,统计读者的借阅次数、借阅偏好等。
4. 附件本文档相关附件可通过以下方式获取:- 附件1:图书管理系统界面原型设计图- 附件2:数据库设计文档5. 法律名词及注释- 版权:指对原创作品的独立性和完整性的保护权利。
一、系统要求:(一)、硬件要求:1、CPU:133M或更高主频。
2、存:64M或更高。
3、光驱:普通光驱。
4、显示器:普通彩显。
5、其他:鼠标……(二)、软件要求:1、windows xp或更高版本。
2、1024*768分辨率。
(三)、其他要求:您在使用本软件时,请先与软件开发者联系,经过允,得到可号后才能正常使用本软件。
二、安装本软件安装非常简单,只需找到工程1.exe文件,就可运行。
安装时软件开发者建议不要把本软件安装在系统盘。
以便备份。
软件使用首先,向软件开发者获取管理员或者宾客的用户名和密码,用初始密码登陆,登录界面按确定或者enter键即可登陆如果用户名和密码均对应,则显示主界面如果用户名错误,则弹出如果密码错误,则弹出主界面如下:为了系统使用的安全,请先选择菜单栏的系统管理进行密码的修改修改密码之后,进行所需功能的使用。
1.图书管理图书管理里面有两个子菜单:图书信息管理,图书类别管理。
图书类别管理:添加图书类别,修改图书类别,删除图书类别图书信息管理:添加图书信息,修改图书信息,删除图书信息,查询图书信息添加图书类别进行新书的新类别进行添加,在图书类别对应的文本框写下新的图书类别,在图书编号对应的文本框输入图书的编号,然后按确认键进行添加。
如果不添加,按取消,不对图书进行添加。
修改图书类别如果对图书类别和编号进行修改,先按下修改按钮,使得表格处于可修改状态,修改完后更新表格,系统自动更新数据库,如需要对图书类别进行删除,则选中该记录按下删除,弹出消息框“确定删除”,按下是,则删除,否,则保持原样,按下取消,则不对图书类别进行修改。
如果不是管理员登陆,则修改功能不可用添加图书信息:对图书的信息进行添加,在图书信息对应的文本框写下新的图书信息,然后按确认键进行添加。
如果不添加,按取消,不对图书信息添加。
修改图书信息如果对类别名称和类别编号进行修改,先按下修改按钮,使得表格处于可修改状态,修改完后更新表格,系统自动更新数据库,如需要对图书信息进行删除,则选中该记录按下删除,弹出消息框“确定删除”,按下是,则删除,否,则保持原样,按下取消,则不对图书信息进行修改。
图书管理系统系统设计说明书图书管理系统系统设计说明书1:引言1.1 编写目的本文档是为了说明图书管理系统的设计细节,以便开发团队和相关人员了解系统架构、功能模块、数据流和数据结构。
1.2 背景图书管理系统是用于管理图书馆馆藏图书及读者信息的软件系统,它可以实现图书的借阅、归还、图书检索等功能,提高图书馆的管理效率和读者的服务质量。
2:系统概述2.1 系统简介图书管理系统是建立在计算机网络环境下的一种管理系统,可以帮助图书馆管理者实现对图书馆馆藏图书和读者信息的管理和控制。
2.2 系统功能2.2.1 图书管理功能- 图书的采购、入库和分类管理- 图书的借阅、续借和归还管理- 图书的检索和查询功能- 图书的盘点和报废处理2.2.2 读者管理功能- 读者的注册和信息管理- 读者的借阅记录和逾期管理- 读者的账户充值和消费管理2.2.3 系统管理功能- 管理员账号的添加、删除和权限管理- 数据备份和恢复功能- 系统配置和参数设置2.3 系统架构图书管理系统采用B/S架构,即浏览器/服务器架构。
用户通过浏览器与服务器进行交互,服务器负责处理用户的请求并返回相应的结果。
3:系统详细设计3.1.1 登录模块- 用户账号验证- 权限管理- 用户登录日志记录3.1.2 图书管理模块- 图书的入库管理- 图书的分类管理- 图书的借阅和归还管理3.1.3 读者管理模块- 读者信息的注册和管理- 读者的借阅记录和逾期管理- 读者账户的充值和消费管理3.1.4 系统管理模块- 管理员账号的添加、删除和权限管理- 数据备份和恢复功能- 系统配置和参数设置3.2.1 登录过程- 用户输入账号和密码- 系统验证用户账号和密码的正确性- 系统根据用户权限跳转到对应页面3.2.2 图书借阅过程- 用户查询图书- 用户选择要借阅的图书- 系统检查图书库存和用户借阅限额- 系统记录借阅信息并更新图书库存和用户借阅记录3.2.3 图书归还过程- 用户选择要归还的图书- 系统根据图书的借阅记录计算逾期天数和罚款金额- 用户支付罚款金额- 系统更新图书库存和用户借阅记录3.3 数据结构设计3.3.1 图书信息表- 图书名称- 作者- 出版社- 价格- 库存数量3.3.2 读者信息表- 读者编号- 姓名- 性别- 年龄- 方式号码- 邮箱- 账户余额3.3.3 借阅记录表- 借阅编号- 图书编号- 借阅日期- 归还日期- 是否逾期- 罚款金额4:附件本文档涉及的附件包括系统原型图、数据库设计文档和源代码。
图书馆管理系统使用说明书配置源程序附加数据库SQL Server 2000(1)将TM\05\Database文件夹中的扩展名为db_library_Data.MDF和db_library_Log.LDF的两个文件拷贝到SQL Server安装路径下的Data文件夹中。
(2)打开SQL Server 2000中的“企业管理器”,然后展开本地服务器,在“数据库”数据项上单击鼠标右键,在弹出的快捷菜单中选择“所有任务”/“附加数据库”菜单项。
(3)将弹出“附加数据库”对话框,在该对话框中单击【】按钮,选择所要附加数据库的db_library_Data.MDF文件,单击【确定】按钮,即可完成数据库的附加操作。
发布与运行(1)将光盘\TM\05\libraryManager文件夹拷贝到MyEclipse的工作空间中。
(2)启动MyEclipse。
(3)选择“文件”/“导入”菜单项,展开“常规”节点,选择“现有项目到工作空间中”子节点,如图1.1所示。
图1.1 “导入”窗口(4)单击【下一步】按钮,单击【浏览】按钮,选择程序所在目录,然后勾选“将项目复制到工作空间中”复选框,如图1.2所示。
图1.2 “导入”窗口(5)单击【完成】按钮。
(6)在项目上单击鼠标右键,依次选择“新建”/“文件夹”命令,新建一个“lib”文件夹,然后,将SQL Server 2000数据库驱动文件“msbase.jar、mssqlserver.jar、msutil.jar”拷到该文件夹中。
在该文件上单击鼠标右键,选择“构建路径”/“添加至构建路径”命令。
(7)在导入工程的src文件中,找到可执行的主类,在该类上单击鼠标右键,选择“运行方式”/“Java应用程序”项,如图1.3所示,完成程序配置图1.3 选择菜单项使用说明系统介绍图书馆管理系统是图书馆管理工作中不可缺少的部分,它对于图书馆的管理者和使用者都非常重要,所以图书馆管理系统应该为管理者与读者提供充足的信息和快捷的数据处理手段,但长期以来,人们使用传统的人工方式或性能较低的图书馆管理系统管理图书馆的日常事务,操作流程比较繁琐。
图书管理系统使用说明书9:0图书管理系统使用说明书9:01:系统概述1.1 功能简介本系统是一个用于图书馆管理的软件,提供了图书的录入、借还、查询等功能,方便图书管理员管理图书馆的各项工作。
1.2 系统特点- 支持图书分类管理,方便图书馆对图书进行分类整理。
- 支持图书信息的录入和编辑,管理员可以在系统中添加图书信息,并进行修改。
- 提供借还书功能,读者可以通过系统自助借还书籍。
- 提供图书查询功能,读者和管理员可以根据条件检索图书信息。
- 支持图书馆成员管理,可以对读者信息进行管理和维护。
2:系统安装与配置2.1 硬件要求- 个人电脑或服务器- 操作系统:Windows 10/Windows Server 2016 或更高版本- 内存:4GB或更多- 硬盘空间:100MB或更多2.2 软件要求- Java 运行环境(JRE)8或更高版本- MySQL数据库服务器2.3 安装步骤1:安装包并解压缩到指定目录。
2:安装Java运行环境(JRE)8或更高版本。
3:配置MySQL数据库服务器并创建图书管理系统数据库。
4:修改系统配置文件,配置数据库连接信息。
5:启动系统,访问系统登录页面。
3:系统登录3.1 管理员登录1:打开系统登录页面。
2:输入管理员账号和密码。
3:登录按钮。
3.2 读者登录1:打开系统登录页面。
2:输入读者账号和密码。
3:登录按钮。
4:系统功能4.1 图书管理4.1.1 图书录入1:登录系统管理员账号。
2:“图书管理”菜单。
3:“图书录入”按钮。
4:输入图书信息,包括图书编号、图书名称、作者、出版社等。
5:保存按钮,完成图书录入。
4.1.2 图书编辑1:登录系统管理员账号。
2:“图书管理”菜单。
3:找到需要编辑的图书,“编辑”按钮。
4:修改图书信息,如图书名称、作者、出版社等。
5:保存按钮,完成图书编辑。
4.1.3 图书查询1:登录系统管理员或读者账号。
2:“图书管理”菜单。
3:在查询条件中输入关键字。
图书管理系统代码//***********************//图书馆管理系统//***********************#include<stdio.h>#include<string.h>#include<malloc.h>#define null 0#define max 65536static int n;//*********************// 图书结构体//*********************typedef struct{char num[10]; //书号char name[9]; //书名char addr[31]; //作者int Nowcounter; //现存量int Allcounter; //总库存量}datatype;datatype *x[max]; //定义两个指针数组datatype *p;//*****************************//图书功能函数列表//*****************************void redo(); //主递归函数void creatlist(datatype *x[]); //图书建立函数int menu_select(); //功能菜单函数void find(datatype *x[],int n); //查找函数void delnode(datatype *x[]); //插入函数void printlist(datatype *x[]); //显示函数void jieyue(datatype *x[],int n); //借阅函数void guihuan(datatype *x[],int n); //归还函数//*****************************//主递归函数程序//*****************************void redo(){int i=0,j,n1,k=0,flage;for( ; ;){switch( menu_select()){case 1: //选项1的实现printf("***********************\n");printf("* 图书的建立*\n");printf("***********************\n");creatlist(x);break;case 2: //选项2的实现printf("***********************\n");printf("* 新图书信息的添加*\n");printf("***********************\n");printf(" 插入的个数:");scanf("%d",&n1); //输入插入新图书的个数for(i=0;i<n1;i++){flage=0;p=(datatype *)malloc(sizeof(datatype)); //分配一个节点空间printf(" 书名: ");scanf("%s",p->name); //输入插入书的书名if(flage==0){for(j=0;j<n;j++){if(strcmp(x[j]->name,p->name) == 0 )//调用比较函数查看书名是否已知{x[j]->Allcounter++;x[j]->Nowcounter++;flage=1;}}if(flage==0){n++;printf(" 第%d 个图书数据:\n",n); //插入新的图书p=(datatype *)malloc(sizeof(datatype));x[n-1]=p;printf(" 书名:");scanf("%s",x[n-1]->name); //输入书名printf(" 编号:");scanf(" %s",x[n-1]->num); //输入书号printf(" 作者:");scanf(" %s",x[n-1]->addr); // 输入作者名printf(" 总库存量:");scanf("%d",&x[n-1]->Allcounter); //输入总库存量x[n-1]->Nowcounter=x[n-1]->Allcounter;}}}break;case 3:printf("***********************\n");printf("* 图书信息的查询*\n");printf("***********************\n");find(x,n);break;case 4:printf("************************\n");printf("* 图书信息的删除*\n");printf("************************\n");delnode(x);break;case 5:printf("************************\n");printf("* 图书信息的显示*\n");printf("************************\n");printlist(x);break;case 6:printf("************************\n");printf(" 图书的借阅\n");printf("************************\n");jieyue(x,n);break;case 7:printf("************************\n");printf(" 图书的归还\n");printf("************************\n");guihuan(x,n);break;case 0:printf("\t 谢谢使用,再见! \n");return;}}//*************************//主函数程序//*************************void main (){redo(); //调用主递归函数}//*************************//功能菜单函数//*************************int menu_select(){int i;printf(" 欢迎进入图书管理系统!\n");printf("===========================\n");printf(" 1. 图书信息的采集\n");printf(" 2. 新图书的插入\n");printf(" 3. 图书信息的查询\n");printf(" 4. 图书的删除\n");printf(" 5. 图书的显示\n");printf(" 6. 图书的借阅\n");printf(" 7. 图书的归还\n");printf(" 0. 退出管理系统\n");printf("===========================\n");printf(" 请选择0-7: ");scanf("%d",&i);while(i<0||i>7){printf("\n\t输入出错,重选0-7: ");scanf("%d",&i);}return i;}//********************************// 建立链表图书建造函数//********************************void creatlist(datatype *x[]){int i;printf(" 请输入要建立图书的个数:");scanf("%d",&n);for(i=0;i<n;i++)printf(" 第%d 个图书数据:\n",i+1);p=(datatype *)malloc(sizeof(datatype)); //分配一个节点空间x[i]=p;printf(" 书名:"); //输入图书各项内容scanf("%s",x[i]->name);printf(" 编号:");scanf(" %s",x[i]->num);printf(" 作者:");scanf(" %s",x[i]->addr);printf(" 总库存量:");scanf("%d",&x[i]->Allcounter);x[i]->Nowcounter=x[i]->Allcounter;}}//**********************************// 查找函数程序//*********************************void find(datatype *x[],int n){char num[10];char name[9];int t,i;printf("=================\n"); //输出查找方式printf(" 1.按编号查询\n");printf(" 2.按书名查询\n");printf("=================\n");printf(" 请选择: ");scanf("%d",&t); //输入选择信息if(t==1){printf(" 请输入要查找者的编号: ");scanf("%s",num); //输入书号for(i=0;i<n;i++){if(strcmp(x[i]->num,num)==0) //调用strcmp函数{printf(" 编号书名作者现库存量总库存量\n");//输出要查询书的信息printf(" %-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i]->Nowcounter,x[i]->Allcounter);elsecontinue;}}else{printf(" 请输入要查询的书名: ");scanf("%s",name); // 输入书名for(i=0;i<n;i++){if(strcmp(x[i]->name,name)==0){printf("编号书名作者现库存量总库存量\n"); //输出要查询书的信息printf(" %-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i ]->Nowcounter,x[i]->Allcounter);}elsecontinue;}}}//******************************//删除函数程序//******************************void delnode(datatype *x[]){char num1[10],name1[10]; //定义两个字符数组int i,j,m=1,p;printf(" 1.按编号删除\n"); //输出选择方式printf(" 2.按书名删除\n");printf(" 3.返回\n");printf(" 请选择:\n");scanf("%d",&p); //输入选择信息if(p>3||p<1){printf(" 您的输入有误,请重新输入!\n");scanf("%d",&p); //重新输入选择信息}switch(p) //实现删除程序{case 1:printf(" 输入要删除书的编号:\n");scanf(" %s",num1);for(i=0;i<n;i++){if(strcmp(x[i]->num,num1)==0) //调用strcmp函数{m=0;n--;for(j=i;j<n;j++)x[j]=x[j+1]; //将该书信息删除printf(" 该书已删除!\n");}}if(m==1)printf(" 没有这样的的图书\n");break;case 2:printf(" 输入要删除书的名字:\n");scanf("%s",&name1);for(i=0;i<n;i++){if(strcmp(x[i]->name,name1)==0) //调用strcmp函数{m=0;n--;for(j=i;j<n;j++) //将该书信息删除x[j]=x[j+1];printf(" 该书已删除!\n");}}if(m==1)printf(" 没有这样的的图书\n");break;case 3:break;}}//////////////////////////////借阅函数程序/////////////////////////void jieyue(datatype *x[],int n){int i,m=1,p;char name1[10],num1[10]; //定义两个字符数组printf(" 1.按名字借阅\n"); //输出选择方式printf(" 2.按编号借阅\n");printf(" 3.返回\n");printf(" 请选择\n");scanf("%d",&p); //输入选择信息if(p>3||p<1){printf(" 您的输入有误!\n");scanf("%d",&p); //重新输入选择信息}switch(p) //实现查询程序{case 1:printf(" 请输入你要的书的名字!\n");scanf("%s",&name1); // 输入书名for(i=0;i<n;i++){if(strcmp(x[i]->name,name1)==0) //调用strcmp函数{m=0;if(x[i]->Nowcounter!=0)x[i]->Nowcounter--;printf(" 借书成功!\n");if(x[i]->Nowcounter==0)printf(" 这本书已经没有了\n");}}if(m==1)printf(" 您要的书不存在!\n");break;case 2:printf(" 请输入你要的书的编号!\n");scanf("%s",&num1); // 输入书号for(i=0;i<n;i++){if(strcmp(x[i]->num,num1)==0) //调用strcmp函数{m=0;if(x[i]->Nowcounter!=0)x[i]->Nowcounter--; //现存书数量减1printf(" 借书成功!\n");if(x[i]->Nowcounter==0)printf(" 这本书已经没有了\n");}}if(m==1)printf(" 您要的书不存在!\n");break;case 3:break;}}////////////////////////////归还程序//////////////////////void guihuan(datatype *x[],int n){int i,q,m=1;char name1[10],num1[10]; //定义两个字符数组printf(" 1.按书名归还\n"); //输出可选择方式printf(" 2.按书号归还\n");printf(" 3.返回\n");printf(" 请选择\n");scanf("%d",&q); //输入选择信息if(q>3||q<1){printf(" 您的输入有误!\n");scanf("%d",&q); //重新输入选择信息}switch(q) //实现归还程序{case 1:printf(" 输入归还书的书名: ");scanf("%s",&name1); // 输入书名for(i=0;i<n;i++){if(strcmp(x[i]->name,name1)==0){m=0;x[i]->Nowcounter++;printf("此书归还成功!\n");printf("此书的存储情况\n");printf("编号书名作者现存量总存量\n"); printf("===============================================\n");printf(" %-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i]->Nowcounter,x[i]->Allcounter);printf("===============================================\n");}if(strcmp(x[i]->name,name1)==0)continue;}if(m==1)printf("此书不是图书馆的!\n");break;case 2:printf("输入归还书的书号\n");scanf("%s",&num1); // 输入书号for(i=0;i<n;i++){if(strcmp(x[i]->num,num1)==0){m=0;x[i]->Nowcounter++; //显存书增加1printf("此书归还成功!\n");printf("此书的存储情况\n");printf("编号书名作者现存量总存量\n"); printf("==============================================\n");printf(" %-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i]->Nowcounter,x[i]->Allcounter);printf("==============================================\n");}if(strcmp(x[i]->num,num1)==0) //调用strcmp 函数continue;}if(m==1)printf("此书不是图书馆的!\n");break;case 3:break;}}//**************************************// 输出程序//**************************************void printlist(datatype *x[]){int i;printf("编号书名作者现存量总存量\n");//输出图书各项信息for(i=0;i<n;i++){printf(" %-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i ]->Nowcounter,x[i]->Allcounter);}printf("===============================================\n");}。
使用说明书
一、管理员登录
在IE地址栏中输入http://xxxxxx/BookShopWeb/backLogin.aspx登录到后台管理系统登录界面(如图:1-1-1所示),输入用户名和密码,单击登录按钮进入系统。
登陆后,页面转到后台管理系统首页,如下图(图1-1-2)中所示:
1-1-1
1-1-2
点击图书图书管理按钮时
管理员可以对图书进行添加查看类型管理,添加查看图书管理,
1-1
1-1-4
2、单击添加按钮时会出现添加图书窗体
输入好要添加的图书信息点击添加按钮即可将图书添加到数据库中;点击图读者书管理按钮时
管理员可以对读者进行添加查看修改删除管理读者,
当点击添加按钮时
输入好要添加的读者信息点击添加按钮即可将图书添加到数据库中;
当点击借阅按钮时
1-1-5
首先输入读者编号判断是否有该读者信息,然后输入要借阅的图书编号,或者直接点击下面库里的查询信息。
如果读者信息无误,图书信息无误,即可借阅。
当点击归还按钮时
修改密码(在主界面的基本操作按钮中)
关于我们(帮助)。
第一章引言1.1系统概述图书管理信息系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强,数据安全性好的库。
而对于后者则要求应用程序的功能完备,易用等特点。
经过分析,我们使用了MICROSOFT公司的VISUAL BASIC 6。
0开发工具,利用其提供的面向对象的开发工具,尤其是数据库窗口这一功能方便而简捷操作数据库的智能化对象.首先短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修改和改进,直到形成用户满意的可行系统。
1。
2项目开发背景为了适应现代社会人们强烈的时间观念,提高效率,管理信息系统在各个领域得到了广泛应用.管理信息系统是一个以人为主导,利用计算机硬件,软件,网络通信设备以及其他办公设备,进行信息的收集,传输,加工,储存,更新和维护的有机系统.图书管理系统将会给图书管理带来极大的方便。
该软件是以VB编程语言为实现语言,具有完善的数据库功能.通过软件文档可以使使用者了解本软件的基本工作原理。
操作人员只需输入一些简单的汉字、数字,即可达到自己的目标。
该软件是专门针对图书馆管理而开发的专业软件,适用于图书馆的图书管理、读者借书管理,还书管理及查询.软件集成了图书馆工作数据的录入、维护、统计、查询等一系列功能,对于帮助图书馆提高管理水平大有裨益。
1。
3。
运行环境模块采用Visual Basic 6.0为编程语言,在数据库连接上采用了数据库系统Microsoft office Access 2003。
第二章可行性分析2。
1技术可行性根据现有的技术条件,我们以基本达到图书管理系统的要求,物理资源已基本具备,具备实时处理能力和批处理能力,有足够的数据库管理系统的功能。
2。
2经济可行性系统已基本达到资金可得性和经济合理性的双重要求.2.3社会可行性在当前操作环境下能正常运行,所建立信息系统能在图书馆内实现.新系统的组织结构图已基本画出,其目标是最短的时间内建立新系统的逻辑模型.要求本系统具有较强的功能,较高的可靠性,安全性和易维护性,具有较高的伸缩性和可移植性。
大型数据库应用课程设计课程设计说明书图书馆书籍管理系统起止日期: 2014 年 12 月 1 日至 2014 年 12 月 7 日学生姓名肖魁班级计算机1102班学号11408100214成绩指导教师(签字)计算机与通信学院2012年12月 7 日图书馆书籍管理系统一、课题的介绍和课题的任务图书馆书籍管理系统主要对图书馆中书籍进行管理,包括对书籍的添加,删除,修改,各种方式的查询等操作,用于管理员对图书馆书籍库的管理;采用Oracle作为数据库,应用了Java,Jsp,JavaScript,SQL等编程语言以及 Struts2,JDBC等等技术,另外系统采用B/S结构,MVC的设计模式进行设计,在数据库方面,多处应用了存储过程和触发器;二、课程设计的要求1、书籍的添加:通过触发器和索引,使图书的编号按照自动增长的方式进行添加,其他字段还有:书籍名称,作者,出版社,页数,藏书地址等;并且通过定义触发器,使每增加一条图书信息,在图书状态表中给其增加对应的图书状态信息;2、书籍的删除:通过存储过程来实现,如果该书的状态为已借出,就不能删除书籍,并发出提示信息;书籍的删除,通过定义before触发器,假如该书籍能够删除,就在其删除之前,删掉该书籍的状态信息;3、书籍的修改:修改除了书籍主键外的其他信息;4、书籍的查询:可根据图书的索引号进行精确查询,可以根据图书的书名,作者,出版社,藏书地址等进行模糊查询,基于系统的需求,还提供系统中以所有字段作为关键字的模糊查询;5、用户身份验证,管理员通过用户登录,输入验证信息,若经过系统验证后,若正确,则进入图书管理主页,若出现错误,则跳到登录界面,并返回相应的友好的错误提示信息;三、系统的分析和系统中数据库的分析(ER图等)1、系统设计1.1.系统概要设计-流程图系统总体设计如图1.1所示图1-1实现用户的登录,管理员登录后对图书进行书籍的添加,书籍各种方式的查询,书籍的修改,书籍的删除;1.2.系统的详细设计1.2.1.用户的登录图书管理员通过输入管理员和密码进行验证,若验证正确,则进入系统。
图1.21.2.2.书籍的添加书籍的添加,用户在表单中输入书籍的信息,点击录入,数据通过Struts2 的过滤器,自动提交数据,在Struts的Action类中进行获取数据,然后进行检测,如果检测输入信息有误,则跳转到添加页面,并返回相应的错误提示;如果信息正确,则调用添加数据存储过程进行数据的持久化;具体流程如图1-3所示;添加图1.31.2.3.书籍的修改书籍的修改,首先查询出需要修改的书籍,点击修改,跳转到书籍修改页面,顺便通过session对象,将原有的书籍对象带过去;在书籍修改页面表单中修改相应属性,提交到Struts2 的Action类中,首先进行数据的校验,校验失败,跳转到修改页面,返回相应的出错信息,校验成功,则进行书籍的更新处理;具体流程如图1.4所示;修改图1.41.2.4.书籍的删除书籍的删除,首先查询出需要修改的书籍,点击删除,提交到Struts2中的Action类,顺便传入书籍编号这个值(主键,唯一),首先访问书籍库进行查询该书籍的状态是否是“在馆”,是则返回true,进入书籍的删除环节;调用数据库中的存储过程和触发器,进行书籍的删除,确保系统数据的一致性;具体流程如图1.5所示删除图1.51.2.5.书籍的查询书籍的查询,本系统中书籍的查询设定了多种方式,包括按索书号查询,按书名查询,按书籍作者查询,按出版社查询,还有按所有字段进行查询;先选择查询的方式,输入关键字,然后进行数据的提交,经数据过滤校验后,进入控制层,通过判断其查询类型,进行数据的查询,将符合条件的数据查询出来,装入集合框架ArrayList中,传入显示层进行数据的显示,具体流程如图1.6所示;图1.62.数据库的设计2.1.数据库建模2.1.1.E-R图2.1.1.1.图书信息建模系统中书籍信息建模如E-R 图2.1所示:Book (书籍)Bookstate (书籍状态)Bname 书籍名称Writer 书籍作者Publish 出版社Place 藏书地址Bnum 书籍编号Page 页数Bnum 书籍编号State 书籍状态Cardid 书籍持有者编号借出日期对应11图2.12.1.1.2用户信息的建模用户信息的建模如图2.2所示:管理员用户名Usename密码Pwd 图2.23系统前台的设计3.1、系统的结构本系统使用MVC模式作为系统的设计结构,以JSP作为视图层;采用struts2框架,以其Acation类作为其控制层,以各种JavaBean,FormBean作为模型层;3.2、界面的设计和布局3.2.1登录界面如图3.1所示图3.13.2.2图书管理界面图书管理主页中提供了集书籍添加,书籍修改,书籍删除,书籍详情查询及多功能的图书检索功能,使用方便,操作简单,并设有完善友好的错误提示功能,具体展示如图3.2所示;图3.23.2.3图书修改界面书籍修改界面如图3.3所示;图3.33.2.4.图书详情界面由于数据量比较大,在查询主页中不便显示,通过图书详情界面,将对应图书信息进行显示;其界面及运行结果如图3.4所示;图3.4四、系统的数据库实现1.1.书籍信息表和书籍状态表的设计书籍信息表中包括书籍编号,书籍名称,作者,出版社,页数,藏书地址等字段,书籍编号通过触发器的方式,以自动增长的方式进行添加;页数为Number类型,其他的都为字符串行;图书馆中书籍的各个字段的设计如图 4.1所示分为图书表(book)和图书状态表(bookstate);booko o o o o o bnumbnamewriterpublishpageplaceNumberCharacters (256)Characters (256)Characters (256)NumberCharacters (256)bookstateoooobnumstatecardidborrowNumberCharacters (256)Characters (256)Characters (256)图4.1表4-1 book表的设计表4-2 bookstate表的设计1.2.管理员验证信息的设计如图4.2所示Create table Manager(Username varchar2(20),Pwd varchar2(20));Manageo o usernamepwdCharacters (256Characters (256图4.2表4-3 manage表的设计1.3. 触发器,存储过程的设计1.3.1.图书信息添加触发器的设计先创建一个索引,计算出前一个字段的最大值,然后创建before触发器,每增加一项书籍记录,给书籍编号这一字段赋值;图书的管理--创建图书表:Create table book(bnum number(11),bname varchar2(20),writer varchar2(20),publish varchar2(50),page number(11),place varchar2(20),);--创建序列:create sequence book_seqincrement by 1start with 1maxvalue 1.0E28minvalue 1nocache----创建触发器create or replace trigger tr_bookbefore insert bookfor each rowbeginselect book_seq.nextval into :new.bnum from dual;end tr_book;--测试,插入数据Insert into book( bname , writer , publish , page , place ) values ( 'compute','liusi','China',342,'一楼库');insert into book ( bname , writer , publish , page , place) values ('computerr','liusi','湖工大',842,'二楼库');1.3.2.添加书籍状态信息触发器trigger_state每创建一项书籍记录后,自动在图书状态信息表中,添加一条对应的图书状态信息;创初始触发器create or replace trigger_stateafter insert bookfor each rowbegin --如何用到bnum的值----->insert into bookstate(bnum) values( )end ;1.3.3.删除存储过程的创建pro_del先判断图书状态State是否为”已借出”,如果是,则不能进行删除操作,与此同时,发出提示信息;如果不是,则先删除bookstate表中对应的那条记录,再将相应的图书信息记录删除。
--------删除,过程Create or replace procedure pro_del(bnumber IN number(11) ,say out varchar2(20))asNum1 numbersta varchar2date1=dateBeginselect state into sta from bookstate where bnum=bnumber;if sta='wait' thendelete from bookstate where bnum=bnumber;delete from book where bnum=bnumber;say='yes';elsesay='no';end if;end;1.3.4.更新书籍存储过程的创建pro_update---更新书籍存储过程Create or replace procedure pro_update(bnum1 IN number(11) ,bname1 IN varchar2(20),writer1 IN varchar2(20),publish1 IN varchar2(50),page1 IN number(11),place1 IN varchar2(20),)asBeginupdate book set bname = bname1,writer= writer1, publish= publish1, page=page1,place=place1 where bnum=bnum1;end;1.3.5.用户登录存储过程的创建pro_login--------登录Create or replace procedure pro_login(mname IN varchar2(20),mpwd IN varchar2(20),say out varchar2(20)) ascount number=0;Beginselect count(*) into count from Manage where username=mname && pwd=mpwd; if sta=0 thensay='yes';elsesay='no';end if;end;五、系统的实现及调试1.实现数据库的连接public DBoracle(){t ry {Class.forName("oracle.jdbc.driver.OracleDriver");//oracle名称还需填写ct=DriverManager.getConnection("jdbc:oracle:thin:@10.0.0.248:1521:orcl","orcl","orcl");} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}2.系统功能的实现2.1通过在前台JSP页面中书籍信息,由Struts2的过滤器,将其数据自动封装成对应的JavaBean,在对应的Action中进行处理;<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="user" extends="struts-default"><action name="userlogin" class="erLoginAction" method="execute"> <result name="success">main.jsp</result><result name="failure">main.jsp</result></action><action name="addbook" class="lib.action.AddBookAction" method="execute"> <result name="success">BookManage.jsp</result><result name="failure">BookManage.jsp</result></action><action name="updatebook" class="lib.action.UpdateBookAction" method="execute"><result name="success">BookManage.jsp</result><result name="failure">updatebook.jsp</result></action><action name="deletebook" class="lib.action.DeleteBookAction" method="execute"><result name="success">BookManage.jsp</result><result name="failure">BookManage.jsp</result></action><action name="cbookselect" class="lib.action.ChangeBookSelectAction" method="execute"> <result name="success">BookManage.jsp</result><result name="failure">BookManage.jsp</result></action></package><package name="sel" extends="struts-default"><action name="select" class="lib.action.SelectAction" method="execute"><result name="success">main.jsp</result><result name="error">main.jsp</result></action></package></struts>2.2.图书的添加在图书管理主界面中,录入各项图书信息,通过Struts2过滤器,在Action中进行数据的校验,若出现数据格式等方面的错误,将错误信息写入一个HashMap集合中,并将所有出错信息的集合返回到图书管理主界面;如果数据符合要求,则向数据库图书表中增加一条记录,同时往图书状态表中也写入相应的记录;public boolean addBook(Book b){…..}2.3.图书的修改先通过查询,找到要修改的记录,点击进入图书信息修改界面,完成后,输入新的值,进行数据的修改;public boolean updateBook(Book b) {try {CallableStatement cstmt = null;String procedure = "{call pro_update(?,?,?,?,?,?)}";cstmt.setString(1,b.getBname());cstmt.setString(2,b.getWriter());cstmt.setString(3,b.getPublish());cstmt.setInt(4,b.getPage());cstmt.setString(5, b.getPlace());cstmt.setInt(6, b.getBnum());cstmt = ct.prepareCall(procedure);cstmt.executeUpdate();return true;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return false;}2.4.图书的删除public boolean deleteBook(Book b) {try {//pstmt=ct.prepareStatement("delete from bookstate where bnum=? ");pstmt=ct.prepareCall("{ call pro_del(?) }");pstmt.setInt(1,b.getBnum());//pstmt.executeUpdate();//pstmt=ct.prepareStatement("delete from book where bnum=?");//pstmt.setInt(1,b.getBnum());pstmt.execute();return true;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();return false;}}2.5.图书的查询系统中提供了图书索引号,图书名称,作者,出版社,等多种方式的查询,并且为了方便起见,还设立通过所有字段进行模糊查询的功能;public ArrayList getLibBooks(Book b, int choice) {ArrayList al=new ArrayList();String sql="select * from book where ";String str=null;try {// 按照各种查询if (choice == 1) {sql="select * from book where bnum=?";pstmt = ct.prepareStatement(sql);pstmt.setInt(1, b.getBnum());} else if (choice == 2) {sql="select * from book where bname like ?";pstmt=ct.prepareStatement(sql);pstmt.setString(1, "%"+b.getBname()+"%");} else if (choice == 3) {sql="select * from book where writer=?";pstmt=ct.prepareStatement(sql);pstmt.setString(1, b.getWriter());} else if (choice == 4) {sql="select * from book where publish like ?";pstmt=ct.prepareStatement(sql);pstmt.setString(1, "%"+b.getPublish()+"%");} else {sql="select * from book where bname like ? OR writer like ? OR publish like ?";pstmt=ct.prepareStatement(sql);pstmt.setString(1, "%"+b.getPublish()+"%"); //将所有信息写入publish这一栏中pstmt.setString(2, "%"+b.getPublish()+"%"); //将所有信息写入publish这一栏中pstmt.setString(3, "%"+b.getPublish()+"%"); //将所有信息写入publish这一栏中}ResultSet rs=pstmt.executeQuery();while(rs.next()){Book bk=new Book();bk.setBnum(rs.getInt(1));bk.setBname(rs.getString(2));bk.setWriter(rs.getString(3));bk.setPublish(rs.getString(4));bk.setPage(rs.getInt(5));bk.setPlace(rs.getString(6));al.add(bk);}return al;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();return null;}}2.6.管理员地登录管理员必须通过身份验证才能进入书籍管理页面,对书籍的管理;public boolean managerLogin(String workid,String password){try {//pstmt=ct.prepareStatement("select * from manager where workid=? ");CallableStatement cstmt = null;cstmt=ct.prepareCall("{ call pro_login(?,?,?) }");cstmt.setString(1, workid);cstmt.setString(2, password);((CallableStatement) cstmt).registerOutParameter(3, oracle.jdbc.OracleTypes.CURSOR);cstmt.execute();//从输出参数中获取值ResultSet rs = (ResultSet) cstmt.getObject(3);//第3个?所代表的参数ResultSetMetaData rmd =rs.getMetaData();String str=null;while(rs.next()){for(int i=0;i<rmd.getColumnCount();i++){str=rs.getString(i+1)+"";}}if(str.trim().equals("yes")){return true;}else{return false;}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();return false;}}六、系统的使用说明图书馆管理员登录进入系统,即可到图书管理界面,在图书管理界面上按要求进行书籍添加,若输入不正确,系统自动显示出提示信息,修改后进行继续添加;按照管理员的意愿选择适当的查询方式(所有字段,索引号,书名,出版社等),点击需要更新的记录,进行相应操作,若选择删除,操作后会有相应的信息提示,若选择修改,则跳入修改界面,进行相应图书信息的修改;七、课程设计总结与心得每一次课程设计都是一次不可重现的学习与实践的机会,这一次Oracle大型数据库应用的应用系统的开发也不例外。