西华大学数据结构与算法B综合课程设计图书馆管理系统文档格式.docx
- 文档编号:16317725
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:31
- 大小:2.41MB
西华大学数据结构与算法B综合课程设计图书馆管理系统文档格式.docx
《西华大学数据结构与算法B综合课程设计图书馆管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《西华大学数据结构与算法B综合课程设计图书馆管理系统文档格式.docx(31页珍藏版)》请在冰豆网上搜索。
开发此图书馆管理系统软件,也是对实现数字化图书馆管理的支持,现今各大学普遍存在着一个现象,图书的借阅手续都是由专门的老师来实现办理的,每当借阅高峰期时,排队借书的场面屡见不鲜,这样即耗费时间又使原本不太大的借书大厅拥挤不堪。
图书馆管理系统的实现,可以着眼于数字化借阅,简化学生图书查询流程,简化图书外借登记手续,即提高借阅效率又可实现图书借阅的完整进出记录,保证图书的合理使用,让广大师生受益。
1.2任务与分析
本课题主要的任务是设计一个图书管理系统,实现对图书的采编入库,清除,查找,借阅,归还以及显示功能
1.基于图形用户界面(GUI)的标准“Windows”应用程序。
2.初始输入数据:
自由输入。
3.基本要求:
(1)每种书的登记内容至少包括书号、书名、著者、现存量和总库存量等五项。
(2)由于图书管理的基本业务活动都是通过书号(即关键字)进行的,所以要用对书号索引,以获得高效率。
系统应实现的基本功能有:
(1)采编入库:
新购入一种书,经分类和确定书号之后登记到图书帐目中去。
如果这两种书在帐中已有,则只将总库存量增加。
(2)清除库存:
某种书已无保留价值,将它从图书帐目中注销。
(3)借阅:
如果一种书的现存量大于零,则借出一本,登记借阅者的图书证号和归还期限。
(4)归还:
注销对借阅者的登记,改变该书的现存量。
(5)显示:
以凹入表的形式显示B树。
这个操作是为了调试和维护的目的而设置的。
4.界面设计总要求
(1)操作流程简便合理,操作界面美观自然,符合用户一般操作习惯。
(2)界面简洁美观,配色和谐,比例合适,符合大多数人的审美趣向。
5.菜单设置“使用说明”,介绍本软件开发者、特色、各项功能以及如何使用。
2.系统总体设计
2.1开发工具
eclipse
优点:
1,从编写、查错、编译、帮助等等各方面为Java语言贴身定做。
2,可无限扩展的强大插件功能。
3,众多公司、厂商、组织的鼎立支持。
4,开放,自由,免费。
开发环境:
Win7
运行环境:
Win7。
2.2系统框图
(1)系统组成框图:
如图2-1所示
图2-1系统组成框图
(2)系统流程图:
如图2-2-1,图2-2-2所示
图2-2-1系统流程图
2.3模块功能
2.3.1图书入库
输入编采入库图书的书号,书名,著作,现存量,以及总入库量,入库成功后,将其图书信息保存在文本文档中
2.3.2清除图书
输入图书的编号对其进行删除,删除成功后,将其文本文档中的现存量和中库存量置为0
2.3.3显示库存
罗列出所有库存图书的书号,书名,著作,现存量,以及总库存量
2.3.4读者借阅
输入所需借阅图书的编号,书名和借书日期,借阅成功后,将其借阅信息保存值文本文档中
2.3.5读者归还
输入所归还图书的书号,归还成功后,将其以前借阅信息中的借阅日期置为0-0-0
2.3.5借阅查询
罗列出读者所借阅图书的记录
3人机界面设计
3.1控件介绍
控件是对数据和方法的封装。
控件可以有自己的属性和方法。
属性是控件数据的简单访问者。
事件则是控件的一些简单而可见的功能。
所有的控件都有很多属性,用于处理控件的操作
3.2窗体(以下逐个阐述:
你选用的控件的截图、特点、选用理由)
窗口JFrame一个底层容器,其他组件必须添加到底层容器中,以便借助这个底层容器和操作系统进行信息交互.
使用了菜单条,菜单与菜单项,实现窗口间的切换.
3.3文本编辑框
文本框特点是允许用户在文本框中输入单行文本
3.4密码框
文本密码框允许用户在密码框内输入单行密码,密码框的回显字符是’*’.
3.5按钮与标签
在按钮上设置点击事件.
3.6表格
表格以行和列的形势显示数据,允许对表格的数据进行编辑,表格的模型功能强大,灵活并易于执行
3.7菜单组件(必须有菜单,在此讲述菜单组件及其设计)
窗口中的菜单条,菜单,菜单项是非常熟悉的组件,菜单放在菜单条里面,菜单项放在菜单里面
4功能详细设计
4.1登录界面
用户从登录界面输入用户名与密码,输入管理员的用户与密码,并验证密码正确后,进入管理员管理板块.输入学生的用户名与密码,并验证正确后,进入学生板块.
核心代码:
jbn2.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
System.exit(0);
}
});
jbn1.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Stringusernameinput=jtf1.getText();
Stringpwdstrinput=String.valueOf(jpf.getPassword());
if((usernameinput.equals(username))
&
&
(pwdstrinput.equals(pwdstr))&
true==r1.isSelected()){
JOptionPane.showMessageDialog(null,"
登陆成功!
"
);
newListenGUI2();
setVisible(false);
jtf1.grabFocus();
jpf.grabFocus();
return;
}
elseif((usernameinput.equals(username2))
(pwdstrinput.equals(pwdstr2))&
true==r2.isSelected()){
newListenGUI1();
}
elseif(pwdstrinput==null||"
.equals(pwdstrinput)){
密码不能为空"
}elseif(pwdstrinput.length()<
6){
密码不能小于6位"
}else{
登陆失败!
4.2新书的录入
管理员输入所需录入新书的编号,书名,著作,现存量和中库存量后,点击录入,则系统自动将录入的新书信息保存在文本文档中.
用文本文档操作不方面管理员的后台管理,查看书的信息不能直接打开文本文档进行查看,而是必须进入管理界面才能进行查看.
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
if(f.exists()){
FileInputStreamfi;
try{
fi=newFileInputStream(f);
ObjectInputStreamoi=newObjectInputStream(fi);
bookslist=(LinkedList<
Books>
)oi.readObject();
fi.close();
oi.close();
Booksbooks=newBooks();
Strings1=no.getText();
Strings2=name.getText();
Strings3=actor.getText();
Strings4=save.getText();
Strings5=allsave.getText();
while(i<
bookslist.size())
{
Booksbo=(Books)bookslist.get(i);
if(s1.equals(bo.getNo())&
s2.equals(bo.getName())&
s3.equals(bo.getActor()))
{
inta,b;
a=Integer.parseInt(bo.getAllsave())+Integer.parseInt(s5);
b=Integer.parseInt(bo.getSave())+Integer.parseInt(s5);
bo.setAllsave(String.valueOf(a));
bo.setSave(String.valueOf(b));
break;
i++;
if(i==bookslist.size())
books.setNo(s1);
books.setName(s2);
books.setActor(s3);
books.setSave(s4);
books.setAllsave(s5);
bookslist.add(books);
FileOutputStreamfo=newFileOutputStream(f);
ObjectOutputStreamout=newObjectOutputStream(fo);
out.writeObject(bookslist);
out.close();
}catch(Exceptionee){}
}
else{
try{
f.createNewFile();
Booksbooks=newBooks();
books.setNo(no.getText());
books.setName(name.getText());
books.setActor(actor.getText());
books.setSave(save.getText());
books.setAllsave(allsave.getText());
bookslist.add(books);
FileOutputStreamfo=newFileOutputStream(f);
ObjectOutputStreamout=newObjectOutputStream(fo);
out.writeObject(bookslist);
out.close();
catch(Exceptione1){}
4.3清除图书库存
管理员输入所需删除图书的编号,如库存中有此编号的书,则将此书的现存量与总库存量赋值为零.
主要用到的数据结构是链表,方便对其的删除操作.其确实是从链表的头依次遍历,直到找到所需的图书编号或者到链表尾部.这样遍历的时间效率比较低,对于大量的图书需要遍历的话,此算法的时间效率低
if(file.exists()){
fi=newFileInputStream(file);
ObjectInputStreamoi=newObjectInputStream(fi);
bookslist1=(LinkedList<
Strings=no.getText();
bookslist1.size())
Booksbo=(Books)bookslist1.get(i);
if(s.equals(bo.getNo()))
a=0;
b=0;
删除成功!
FileOutputStreamfo=newFileOutputStream(file);
out.writeObject(bookslist1);
fo.close();
4.4图书的借阅
学生输入所需借阅图书的编号,书名和借阅日期,如果此书的现存量大于零,则将其现存量减一,读者借书成功.并且在读者信息中记录读者借阅了此图书,将借阅信息写入文本文件.
主要的数据结构是链表,从链表的头依次遍历,直到找到所需的图书编号或者到链表尾部.这样遍历的时间效率比较低,对于大量的图书需要遍历的话,此算法的时间效率低
try{
FileInputStreamfi=newFileInputStream(file);
ObjectInputStreamoi=newObjectInputStream(fi);
bookslist1=(LinkedList<
fi.close();
oi.close();
Booksbooks=newBooks();
books.setNo(rno.getText());
if(books.getNo().equals(bo.getNo())&
Integer.parseInt(bo.getSave())>
0)
inta;
a=Integer.parseInt(bo.getSave())-1;
bo.setSave(String.valueOf(a));
借阅成功!
if(Integer.parseInt(bo.getSave())==m&
books.getNo().equals(bo.getNo()))
此书全部借出!
System.exit(0);
if(i==bookslist1.size())
JOptionPane.showMessageDialog(null,"
此书图书馆无库存!
if(file1.exists())
{
try{
FileInputStreamfi1=newFileInputStream(file1);
ObjectInputStreamoi1=newObjectInputStream(fi1);
readerlist1=(LinkedList<
Reader>
)oi1.readObject();
fi1.close();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西华 大学 数据结构 算法 综合 课程设计 图书馆 管理 系统