第一篇:Java图书管理系统实习报告
陕西科技大学毕业实习(专业实习)报告
一、实习目的
本次实习的目的主要有2个:
(一)通过亲手对计算机硬件的拆卸,对计算机的硬件要有更深刻的认识和理解。
(二)通过设计图书管理系统,对相关编程知识有了更进一步的运用,以及其具体实现的细节也有了更深刻的认识。
二、实习单位及岗位介绍
本次实习在陕西科技大学理学院的综合实验室进行。
三、实习安排
本次实习的时间是三周:前一周进行硬件实习,后两周进行软件实习。
四、实习内容
(一)硬件实习:
2月23日开始了为期1周的硬件实习,在这段时间里,主要是进行了对计算机主机进行了装卸,通过装卸让我们对计算机内部各个部件的协同工作有了更深的认识。(二)软件实习:
3月1日开始了为期2周的软件实习。我选择的题目是“图书管理系统”,对于这个题目,整个系统是由3个数据表,3类用户,以及4类动作。1.配置数据库
在SQL Server2000中创建图书管理系统的数据库demo,创建3个数据表books,bookBrowse,UserTable。
2.生成配置文件hibernate.cfg.xml.文件如下:
陕西科技大学毕业实习(专业实习)报告
3.创建持久化对象以及创建映射文件:
4.Hibernate操作数据库的方法(HibernateUtil.java)。
陕西科技大学毕业实习(专业实习)报告
5.系统主界面(LibraryWindow.java)。6.用户管理:
1)用户登录(UserLogin.java)2)添加用户(UserAdd.java)3)修改用户(UserModify.java)4)删除用户(UserDelete.java)7.书籍管理模块:
1)书籍添加(BookAdd.java)
2)书籍信息修改(BookModify.java)3)书籍删除(BookDelete.java)4)书籍列表(BookList.java)8.借书管理模块:
1)借阅图书类(BorrowBook.java)2)修改出借图书信息(BorrowInfo.java)9.还书管理模块:
1)书籍还入(ReturnBook.java)2)还书信息类(ReturnInfo.java)10.部分运行效果图如下:
陕西科技大学毕业实习(专业实习)报告
陕西科技大学毕业实习(专业实习)报告
五、实习总结和体会
通过这次实习,我对计算机的软件和硬件有了全面的了解。
拿硬件来说吧,以前也就是听说过什么总线,cpu,主板,硬盘这些概念,通过实习我真实的接触了这些部件,对其内部的安装有了直接的认识。拿软件来说,这次我做这个系统只要是应用java语言的AWT元件和swing组件,以及hibernate实现从对象到关系的映射,其实我做的时候对hibernate也不是很了解,但是做的过程发现了困难就会主动的去找各种资源寻求解答,当然这个过程就是成长的过程。软件架构或者语言有很多很多,所以,我还得好好努力啊。
第二篇:java图书管理系统心得
经过这周的学习我们终于把java图书管理系统做出了了,虽然不是很好但是能把它做出来我们为此感到高兴。在此次小学期的学习过程中,我体会到看学习是一个很反复的过程,不断的出现错误,不断的调试,不断的迷茫,不断的清晰,呵呵,这些都是必须要要经历的,所以不要害怕了。学做java图书管理系统,所以现在所遇到的一切,我都挺坦然的面对。突然觉得这个学习的过程很美好,是一种享受,虽然真的是很辛苦吧,但是很快乐,当自己能敲出的代码,即使做出的是做简单的东西,都会让我很开心,很有成就感,对待学习的态度跟以前不一样了,还是那个很简单的想法,就是想把java学好
学习java就是件耗时间的事儿,如果你不肯投入自己的时间,根本不可能在短时间就把java给学好了,原本我对java接触了时间就比较短,如果我还不努力的话,我根本就不能在4周的时间内把java图书管理系统的项目做完,所以我就不能去做娱乐,休闲的事情,而是坐在电脑前,敲着那些代码,不断的出错,不断的去调试,这就是我现在的生活,完全的浸泡在java中了,跟同学们一起去吃饭的时候,也在不断的探讨着学习中出现的问题。
在学习Java期间我们做了一些程序,我们班的同学也都积极准备,完成的还不错!在做程序时,我遇到了一些难题,有时也会出现错误,时间长了弄得我心烦意乱,但是我知道只有坚持下去才会成功。
因为Java是一种面向对象的编程语言,刚接触Java的人可能会感觉比较抽象,不过没关系不用着急,上课的时候认真听老师讲解,一些概念知识慢慢去理解,课后多做练习,熟能生巧,哪怕是你的记性再好,课后不去强化练习也没用,只有多练了,当你在做项目时你才能很熟练的写出你想要代码。平日在练习时若遇到不会的题目或是在项目中遇到解决不了的问题,首先不要急着去问老师,或是急着上百度搜答案,那样即使你得到了正确答案,以后在其它地方遇到同样的问题,你还是不知道怎么解决!所以说,在遇到问题时,自己先想想要怎么解决,回顾一下老师上课的内容,如果自己还是想不出什么好方法的话,也可以向同学请教请教,三人行必有我师,你不懂的地方其他同学可能知道。如果还是没能解决,那只有问老师或是上网搜索查找相应的解决方法了。好好理解其解决思路。真的弄不懂时我就问同学一起解决。通过几个阶段的练习,我觉得又把学过的知识复习了一遍,通过同学之间的交流沟通,我觉得我们班的学习氛围更加浓厚了。
我觉得把Java学会的关键一点就是坚持练习。学习Java时每天必须保证一定量的练习,我们老师也说学习编程语言没有捷径可走。真的,只有每天反复操作了,经常写代码了,我们在遇到问题时才有一定的思路。欲速则不达,学习编程语言需要一个比较漫长的阶段,不能一步登天,这需要一个过程,在这个过程中慢慢积累经验,扎实基础。不要以为写出了一个简单的小程序,就认为自己已经学的很好了,这只不过是在你学习编程过程中一个小小的实践。不要满足于现状,要不断完善自己的知识体系,善于总结实践经验。要端正自己的学习态度,是主动去学,而不是被动!提高自学能力。学习编程的秘诀是:编程、编程、再编程。不仅要多实践,而且要快实践,、吗。
在我学习的期间,很多人对我的学习都有很大的帮助啊,班里的同学们,老师们,我觉得我是一个幸运儿,每次我都能在遇到问题的时候,都能找到能帮助我的人,呵呵,很开心哦~但是,我认为有些东西还是要自己去琢磨,去思考,去想。这样才能不断的进步。
第三篇:图书管理系统需求分析报告附有java代码
需
求
分
析
报
告
课程设计题目 :图书管理系统
专业:计算机科学与技术
班级:11060341X 姓名:蔚奇秀,曹海花,李小峰,祁乐
目录 一.概述 1.编写目的 2.项目背景 3.定义 4.参考资料 5.开发环境 二.需求分析 1.问题提出
2.系统的业务功能分析 3.需完成的功能 三.系统需求说明 1.对功能的规定 2.对性能的规定 3.输入输出要求 四.新系统的逻辑模型 1.图书馆组织机构分析 2.系统功能结构图 3.业务流程图 4.数据流程图 5.数据字典 一.概述
1、编写目的
按照关系型数据库的基本原理,综合运用所学的知识,以小组为单位,设计开发一个小型的图书管理系统。通过对一个实际问题的分析、设计与实现,将原理与应用相结合,使学生学会如何把书本上学到的知识用于解决实际问题,培养学生的动手能力;另一方面,使学生能深入理解和灵活掌握教学内容
2、项目背景
数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了。造成查询费时、费力。如要对很长时间以前的图书进行更改就更加困难了。
a.待开发的软件系统的名称是《图书管理系统》
b.本软件适用于教育界,他是比较完善的系统管理软件,对图书馆的书籍、读者资料、借还书等可以进行方便的管理。
C.开发员:蔚奇秀,曹海花,李小峰,祁乐
3、定义
数据流程图(DFD):为描述软件系统中的信息流提供了一个图形方法。箭头代表数据流,方框代表数据的源点或终点,圆框代表数据流的交换,双杠代表数据存储的地方。
数据字典是对数据流程图中的数据,变换等进行精确的定义。
4、参考资料
1.萨师煊、王珊《数据库系统概论》 高等教育出版社2000.2
2.俞盘祥、沈金发《数据库系统原理》清华大学出版社2000.6
3.王珊、陈红《数据库系统原理教程》清华大学出版社1998.7
4.施伯乐、丁宝康《数据库系统教程》高等教育出版社1999.12
5、开发环境
WindowXP,/7 Microsoft Visual C++,SQLSerevr2000.一、需求分析
1、问题的提出:
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。
2、系统的业务功能分析:
1)建立读者类,实现对读者编号、姓名、所在单位等信息的描述。
2)建立书籍类,实现对图书的编号、名称、作者、出版社、出版日期、价格、采购日 期、单价、数量、金额、版次、分类号、ISBN等信息的描述。
3)建立用于记录借书情况的类,实现输入读者编号和书籍编号后成功借书的描述。
系统的业务流程分析:
3、需完成的功能
1)图书基本情况的录入、修改、删除等基本操作。2)办理借书卡模块。3)实现借书功能。4)实现还书功能。
5)能方便的对图书进行查询。6)对超期的情况能自动给出提示信息。
7)具有数据备份和数据恢复功能。
二、系统需求说明
1、对功能的规定
经过以上详细的用户调查,在现行业务流程和数据分析的基础上,基本可以确定系统设计必须达到的目标。
以下是图书管理系统必须具备的功能:
1.图书基本情况的录用:对于购进的新书,系统必须具备图书信息资料的录入功能。当图书资料发生变化,如图书丢失或有错误信息输入时,则应能够及时对数据进行修改和补充。
2.办理借书卡模块:系统的主要功能之一,供本校学生借阅图书。3.实现借书功能:可以方便学生们借书。
4.实现还书功能:归还图书,并进行登记。
5.能方便的对图书进行查阅:可以快速简单的对图书进行查找一些信息。
6.对超期的情况能自动给出提示信息:告诉那些同学说借书的时间已超期。
7.具有数据备份和数据恢复功能:可以在丢失后再找回。
2、对性能的规定
为了保证系统能够长期、安全、稳定、可靠、高效的运行,图书管理系统应该满足以下的性能需求:
(1)、系统处理的准确性和及时性
系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足学校对信息处理的需求。
(2)、系统的开放性和系统的可扩充性
图书管理系统在开发过程中,应该充分考虑以后的可扩充性。例如用户查询的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。
(3)、系统的易用性和易维护性
图书管理系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。
(4)、系统的标准性
系统在设计开发使用过程中都要涉及到很多计算机硬件、软件。所有这些都要符合主流国际、国家和行业标准。
(5)、系统的先进性
目前计算系统的技术发展相当快,做为图书管理系统工程,在系统的生命周期尽量做到系统的先进,充分完成企业信息处理的要求而不至于落后。这一方面通过系统的开放性和可扩充性,不断改善系统的功能完成。另一方面,在系统设计和开发的过程中,应在考虑成本的基础上尽量采用当前主流并先进且有良好发展前途的产品。
(6)、系统的响应速度
图书管理系统系统在日常处理中的响应速度为秒级,达到实时要求,以及时反馈信息。在进行统计分析时,根据所需数据量的不同而从秒级到分钟级,原则是保证操作人员不会因为速度问题而影响工作效率。
3、输入输出要求
输入:键盘,鼠标,扫描仪等。
输出:显示器,打印机等。
三、新系统的逻辑模型
1、图书馆组织机构分析
通过对图书馆工作人员的调查,图书馆主要有4个部门。借阅管理部负责图书的借阅管理;图书管理部负责书籍类别标准的制定,类别信息的输入;书籍类别信息的查询,修改;书籍信息的输入;读者管理部负责主要针对各类读者信息进行管理;系统管理部负责用户管理和密码管理。组织机构图如下:
图书馆组织机构图
2、系统功能结构图
图书馆管理系统 借阅信息管理 图书信息管理 读者信息管理 系统管理 还书信息管理 借书信息管理 设置图书信息 设置图书种类 设置读者信息 设置读者种类 密码管理 用户管理还还还书书书信信信息息息查修添询改加 借借借书书书信信信息息息查添修询加改 图图图书书书信信信息息息查修添询改加 图图书书类类别别添修加改 读读读者者者信信信息息息查修添询改加 读读者者种种类类修添改加
3、数据流程图
通过对业务流程图的细化,可得到系统的分层数据流图。如下图: 顶层数据流图:
图书管理系统读者信息会员信息读者审核信息借阅信息借还书信息读者图书信息借书卡、借阅信息管理员 图书馆管理系统的顶层数据图
对顶层数据流图细化、分解可得到图书管理系统的第一层数据流图,如下图:
借阅信息 借还书信息P1借阅信息管理借书信读者息还书信息读者P2图书信息管理书库文件管理员借书卡、借阅信息读者资料读者信息审核会员信息P3读者信息管理读者记录管理员信息P4系统管理 图书馆管理系统的第一层数据图
对第一层数据流图进一步细化、分解,可以得到第二层数据流图,如下图: 借书卡P1.1身份审核合格读者借书信息读者记录借还书信息P1.2借书登记管理员还书信息书库文件P1.3书籍检查合格书籍读者还书信息P1.4还书处理借阅信息管理数据流图
四.Java代码 Book.java import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.sql.*;import java.text.*;import java.util.Date;import java.math.*;
public class Book implements ActionListener {private JButton btn1,btn2,btn3,btn4;private JTextField jtfd1,jtfd2,jtfd3,jtfd5,jtfd6, jtfd7,jtfd8,jtfd9,jtfd10;private JComboBox jcbx;private JTextArea jta;private Connection con;private PreparedStatement pstmt1,pstmt2;private JFrame frame;
public Book(){JFrame.setDefaultLookAndFeelDecorated(true);frame=new JFrame(“图书入库”);Container content=frame.getContentPane();Toolkit tool=frame.getToolkit();Dimension wndsize=tool.getScreenSize();
JLabel lb1=new JLabel(“书名:”);JLabel lb2=new JLabel(“条形码:”);JLabel lb3=new JLabel(“分类号:”);JLabel lb4=new JLabel(“分类名:”);JLabel lb5=new JLabel(“排架号:”);JLabel lb6=new JLabel(“出版社:”);JLabel lb7=new JLabel(“出版日期:”);JLabel lb8=new JLabel(“入库日期:”);JLabel lb9=new JLabel(“价格:”);JLabel lb10=new JLabel(“作者:”);JLabel lb11=new JLabel(“简介:”);
jtfd1=new JTextField();jtfd2=new JTextField();jtfd3=new JTextField();String[] kindname={“马克思列宁主义、毛泽东思想”,“综合性图书”,“哲学”,“社会科学总论”, “政治、法律”,“军事”,“经济”,“文化、科学、教育、体育”,“语言文字”,“文学”,“天文学、地球科学”, “生物科学”,“医药、卫生”,“农业科学”,“工业技术”,“艺术”,“历史、地理”,“数理化”,“自然科学总论”, “环境科学”,“航空航天”,“交通”};jcbx=new JComboBox(kindname);
jtfd5=new JTextField();jtfd6=new JTextField();jtfd7=new JTextField();jtfd8=new JTextField();jtfd9=new JTextField();jtfd10=new JTextField();jtfd8.addFocusListener(new FocusHandler());
jta=new JTextArea();jta.setLineWrap(true);btn1=new JButton(“添加”);btn2=new JButton(“删除”);btn3=new JButton(“撤消”);btn4=new JButton(“退出”);btn1.addActionListener(this);btn2.addActionListener(this);btn3.addActionListener(this);btn4.addActionListener(this);JPanel pl1=new JPanel();JPanel pl2=new JPanel();JPanel pl3=new JPanel();JPanel pl4=new JPanel();
pl1.setLayout(new GridLayout(5,4,6,6));pl1.add(lb1);pl1.add(jtfd1);pl1.add(lb2);pl1.add(jtfd2);pl1.add(lb10);pl1.add(jtfd10);pl1.add(lb3);pl1.add(jtfd3);pl1.add(lb4);pl1.add(jcbx);pl1.add(lb5);pl1.add(jtfd5);pl1.add(lb6);pl1.add(jtfd6);pl1.add(lb7);pl1.add(jtfd7);pl1.add(lb8);pl1.add(jtfd8);pl1.add(lb9);pl1.add(jtfd9);
GridBagLayout gridbag=new GridBagLayout();GridBagConstraints constraints=new GridBagConstraints();pl2.setLayout(gridbag);constraints.weightx=constraints.weighty=10.0;constraints.fill=constraints.BOTH;
gridbag.setConstraints(lb11,constraints);constraints.weightx=1;constraints.gridwidth=1;pl2.add(lb11,constraints);gridbag.setConstraints(jta,constraints);constraints.weightx=9;constraints.gridheight=3;constraints.gridwidth=3;constraints.insets=new Insets(10,15,10,20);
pl2.add(jta,constraints);
GridBagLayout gridbag1=new GridBagLayout();GridBagConstraints constraints1=new GridBagConstraints();constraints1.weightx=1.0;constraints1.fill=constraints1.BOTH;pl3.setLayout(gridbag1);
//gridbag1.setConstraints(pl1,constraints1);constraints1.weighty=0.8;constraints1.gridwidth=constraints1.REMAINDER;pl3.add(pl1,constraints1);//gridbag1.setConstraints(pl2,constraints1);constraints1.weighty=0.2;constraints1.gridheight=constraints.REMAINDER;pl3.add(pl2,constraints1);
pl4.setLayout(new GridLayout(1,4,6,0));pl4.add(btn1);pl4.add(btn2);pl4.add(btn3);pl4.add(btn4);
content.setLayout(new BorderLayout());content.add(pl3,BorderLayout.CENTER);content.add(pl4,BorderLayout.SOUTH);
frame.setBounds(100,100,550,400);frame.setResizable(false);frame.setVisible(true);try {
String sqlStr1,sqlStr2;sqlStr1=“insert
into
book(bookname,bannercode,kindnumber,kindname,”+ “positionnumber,publishingcompany,publishtime,putintime,price,”+ “state,introduction,author)',?,?)”;sqlStr2=“delete from book where bannercode=?”;
values(?,?,?,?,?,?,?,?,?,'
在架 Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);con=DriverManager.getConnection(“jdbc:odbc:library”);pstmt1=con.prepareStatement(sqlStr1);pstmt2=con.prepareStatement(sqlStr2);
} catch(ClassNotFoundException e){ } catch(SQLException sqle){ }
}
class FocusHandler implements FocusListener { java.util.Date today=new java.util.Date();DateFormat format=DateFormat.getDateInstance();String formatted=format.format(today);
public void focusGained(FocusEvent e){Object obj=(JTextField)e.getSource();if(obj==jtfd8){jtfd8.setText(formatted);} }
} public void focusLost(FocusEvent e){ } public void actionPerformed(ActionEvent e){String str1,str2,str3,str4,str5,str6,str7,str8,str9,str10,str11;
str1=jtfd1.getText().trim();str2=jtfd2.getText().trim();str3=jtfd3.getText().trim();str4=(String)jcbx.getSelectedItem();str5=jtfd5.getText().trim();str6=jtfd6.getText().trim();str7=jtfd7.getText().trim();str8=jtfd8.getText().trim();str9=jtfd9.getText().trim();str10=jtfd10.getText().trim();str11=jta.getText().trim();
int result;try{
Object obj=(JButton)e.getSource();if(obj==btn1){
if(str1.equals(“")|str2.equals(”“)|str3.equals(”“)|str4.equals(”“)|str5.equals(”“)){JOptionPane.showMessageDialog(frame,”can't be null“);return;}
if(str6.equals(”“)|str7.equals(”“)|str8.equals(”“)|str9.equals(”“)|str10.equals(”“)){JOptionPane.showMessageDialog(frame,”can't be null“);return;}
java.sql.Date today1,today2;BigDecimal money=new BigDecimal(str9);today1=java.sql.Date.valueOf(str7);today2=java.sql.Date.valueOf(str8);pstmt1.setString(1,str1);pstmt1.setString(2,str2);pstmt1.setString(3,str10);pstmt1.setString(4,str4);pstmt1.setString(5,str5);pstmt1.setString(6,str6);pstmt1.setDate(7,today1);pstmt1.setDate(8,today2);pstmt1.setBigDecimal(9,money);
pstmt1.setString(10,str11);pstmt1.setString(11,str10);
result=pstmt1.executeUpdate();if(result>0){JOptionPane.showMessageDialog(frame,”add successfully!“);} jtfd1.setText(”“);jtfd2.setText(”“);jtfd3.setText(”“);
jtfd5.setText(”“);jtfd6.setText(”“);jtfd7.setText(”“);jtfd8.setText(”“);jtfd9.setText(”“);jtfd10.setText(”“);jta.setText(”“);} else if(obj==btn2){if(str2.equals(”“)){JOptionPane.showMessageDialog(frame,”bannercode can't be null“);return;}
pstmt2.setString(1,str2);result=pstmt2.executeUpdate();if(result>0){JOptionPane.showMessageDialog(frame,”Delete successfully!“);} } else if(obj==btn3){jtfd1.setText(”“);jtfd2.setText(”“);jtfd3.setText(”“);
jtfd5.setText(”“);jtfd6.setText(”“);jtfd7.setText(”“);jtfd8.setText(”“);jtfd9.setText(”“);jtfd10.setText(”“);jta.setText(”“);} else if(obj==btn4){pstmt1.close();pstmt2.close();con.close();frame.dispose();} } catch(SQLException sqle){System.err.println(sqle);} } public static void main(String[]args){new Book();} } BookInfo.java import javax.swing.*;import java.awt.*;import java.awt.event.*;import javax.swing.table.*;import java.util.*;import java.sql.*;import javax.swing.table.AbstractTableModel;public class BookInfo implements ActionListener { private JFrame frame;private Statement stmt;private Connection con;private JTable tableTest;private String[]columnNames={”书名“,”条形码“,”分类号“,”分类名“,”排架号“,”出版社“, ”出版日期“,”入库日期“,”状态“,”简介“};private Object[][]rowData=new Object[100][10];private JButton btn;private JRadioButton rbtn1,rbtn2;private JTextField jtfd;
public BookInfo(){
frame=new JFrame(”图书信息查询“);Container content=frame.getContentPane();
btn=new JButton(”查询“);jtfd=new JTextField();JPanel pl=new JPanel();
rbtn1=new JRadioButton(”书名“);rbtn2=new JRadioButton(”条形码“);rbtn1.setSelected(true);btn.addActionListener(this);
ButtonGroup group=new ButtonGroup();group.add(rbtn1);group.add(rbtn2);pl.setLayout(new GridLayout(1,4,10,0));pl.add(rbtn1);pl.add(rbtn2);pl.add(jtfd);pl.add(btn);tableTest=new JTable(rowData,columnNames);tableTest.setRowHeight(20);
tableTest.setPreferredScrollableViewportSize(new Dimension(500, 30));JScrollPane scrollPane=new JScrollPane(tableTest);content.add(pl,BorderLayout.NORTH);content.add(scrollPane,BorderLayout.CENTER);frame.pack();frame.setVisible(true);try
{Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);con=DriverManager.getConnection(”jdbc:odbc:library“);stmt=con.createStatement();} catch(ClassNotFoundException e)
{System.err.println(e.getMessage());} catch(SQLException e){System.err.println(e.getMessage());} }
public void actionPerformed(ActionEvent e){Object obj=e.getSource();ResultSet result;String sqlStr;int i=0;String str=jtfd.getText().trim();
if(rbtn2.isSelected()){sqlStr=”select bookname,bannercode,kindnumber,kindname,positionnumber,“+ ”publishingcompany,publishtime,putintime,state,introduction from book where “+
”bannercode=“+”'“+str+”'“;} else { sqlStr=”select bookname,bannercode,kindnumber,kindname,positionnumber,“+ ”publishingcompany,publishtime,putintime,state,introduction from book where “+ ”bookname like '“+str+”%'“;
} try {if(obj==btn){if(str.equals(”“)){JOptionPane.showMessageDialog(frame,”Text was null!“);return;} result=stmt.executeQuery(sqlStr);for(int j=0;j if(i rowData[i][0]=result.getString(”bookname“);rowData[i][1]=result.getString(”bannercode“);rowData[i][2]=result.getString(”kindnumber“);rowData[i][3]=result.getString(”kindname“);rowData[i][4]=result.getString(”positionnumber“);rowData[i][5]=result.getString(”publishingcompany“);rowData[i][6]=result.getDate(”publishtime“);rowData[i][7]=result.getDate(”putintime“);rowData[i][8]=result.getString(”state“); rowData[i][9]=result.getString(”introduction“);i++;} else{JOptionPane.showMessageDialog(frame,”please specify the bookname!“); } } jtfd.setText(”“);} } catch(SQLException sqle){System.err.println(sqle);} } public static void main(String[]args){new BookInfo();} } Borrow.java import javax.swing.*;import java.awt.*;import java.sql.*;import java.awt.event.*;import java.util.*;import java.text.*;import java.math.*; public class Borrow extends JFrame implements ActionListener {private JTextField jtfd1,jtfd2,jtfd3,jtfd4;private JButton btn1,btn2,btn3;private Connection con;private Statement stmt;private PreparedStatement pstmt;private JFrame frame;private JLabel lb5; JLabel lb1=new JLabel(”借书证号:“);JLabel lb2=new JLabel(”条形码:“);JLabel lb3=new JLabel(”借书日期:“);JLabel lb4=new JLabel(”应还日期:“);lb5=new JLabel(”罚款:“); jtfd1=new JTextField();jtfd2=new JTextField();jtfd3=new JTextField();jtfd4=new JTextField();jtfd1.addFocusListener(new FocusHandler());public Borrow(){frame=new JFrame(”借书“);Container content=frame.getContentPane(); content.setLayout(new GridLayout(6,2,10,10)); jtfd2.addFocusListener(new FocusHandler());jtfd3.addFocusListener(new FocusHandler());jtfd4.addFocusListener(new FocusHandler());btn1=new JButton(”确定“);btn2=new JButton(”退出“);btn3=new JButton(”交款“);btn1.addActionListener(this);btn2.addActionListener(this);btn3.addActionListener(this);content.add(lb1);content.add(jtfd1);content.add(lb2);content.add(jtfd2);content.add(lb3);content.add(jtfd3);content.add(lb4);content.add(jtfd4);content.add(lb5);content.add(btn3);content.add(btn1);content.add(btn2); frame.setBounds(100,100,420,320);try{ Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);con=DriverManager.getConnection(”jdbc:odbc:library“);stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);pstmt=con.prepareStatement(”insert into borrow(user_cardnumber,bannercode,borrowdate,“+ ”receivedate,renew)values(?,?,?,?,'否')“); } catch(ClassNotFoundException e){System.err.println(e);} catch(SQLException e){System.err.println(e);} frame.setVisible(true);} class FocusHandler implements FocusListener { String str1,sqlStr1,state;ResultSet result; java.util.Date today1=new java.util.Date();java.util.Date today2=new java.util.Date(); DateFormat format=DateFormat.getDateInstance();String formatted1=format.format(today1); public void focusGained(FocusEvent e){ Object obj=(JTextField)e.getSource(); if(obj==jtfd4){today2.setMonth(today1.getMonth()+1);String formatted2=format.format(today2);jtfd4.setText(formatted2);} try{ if(obj==jtfd2){ str1=jtfd1.getText().trim();if(str1.equals(”“)){ jtfd1.requestFocus();JOptionPane.showMessageDialog(frame,”Text was null!“);return;} sqlStr1=”select * from user where user_cardnumber=“+”'“+str1+”'“; result=stmt.executeQuery(sqlStr1);if(!result.next()){ jtfd1.requestFocusInWindow();JOptionPane.showMessageDialog(frame,”请注册!“); jtfd1.setText(”“);return;} else { if(result.getString(”user_state“).equals(”挂失“)){jtfd1.requestFocus();JOptionPane.showMessageDialog(frame,”This card has been reportlost!“); jtfd1.setText(”“);return;} sqlStr1=”select * from borrow where user_cardnumber=“+ ”'“+str1+”'“;result=stmt.executeQuery(sqlStr1);int i=0;while(result.next()){i=i+1;} if(i==4){ jtfd1.requestFocus();JOptionPane.showMessageDialog(frame,”you can't borrow more than four books!“); jtfd1.setText(”“); return;} } } if(obj==jtfd3){ jtfd3.setText(formatted1); str1=jtfd2.getText().trim();if(str1.equals(”“)){ jtfd2.requestFocus();JOptionPane.showMessageDialog(frame,”Text was null!“);return;} sqlStr1=”select state from book where bannercode=“+”'“+str1+”'“;result=stmt.executeQuery(sqlStr1);if(!result.next()){jtfd2.requestFocus(true);JOptionPane.showMessageDialog(frame,”invalid bannercode!“); jtfd2.setText(”“);return;} else {state=result.getString(”state“); if(state.equals(”离架“)){jtfd2.requestFocus(true);JOptionPane.showMessageDialog(frame,”this book has been lent!“); jtfd2.setText(”“);return;} } } } catch(SQLException sqle){System.err.println(sqle);} } public void focusLost(FocusEvent e){ try{ str1=jtfd1.getText().trim();sqlStr1=”select sum_account from punishment user_cardnumber=“+ ”'“+str1+”'“; result=stmt.executeQuery(sqlStr1); if(result.next()) { BigDecimal money=result.getBigDecimal(”sum_account“,2); lb5.setText(”罚款:“+money); } else {lb5.setText(”罚款:0.00“); } } catch(SQLException sqle) {System.err.println(sqle); } } where } public void actionPerformed(ActionEvent e){String sqlStr1,sqlStr2,str1,str2,str3,str4;int result;str1=jtfd1.getText().trim();str2=jtfd2.getText().trim();str3=jtfd3.getText().trim();str4=jtfd4.getText().trim();java.sql.Date today1,today2; Object obj=(JButton)e.getSource();try{ if(obj==btn1){ if(str1.equals(”“)|str2.equals(”“)|str3.equals(”“)|str4.equals(”“)) {JOptionPane.showMessageDialog(frame,”The Text can't be null!“);return;} sqlStr1=”update book set state=' 离 架 ' where bannercode=“+”'“+str2+”'“; today1=java.sql.Date.valueOf(str3);today2=java.sql.Date.valueOf(str4);pstmt.setString(1,str1);pstmt.setString(2,str2);pstmt.setDate(3,today1);pstmt.setDate(4,today2); result=pstmt.executeUpdate();if(result>0){JOptionPane.showMessageDialog(frame,”borrow successfully!“);} result=stmt.executeUpdate(sqlStr1);if(result>0){JOptionPane.showMessageDialog(frame,”update successfully!“);} jtfd1.setText(”“);jtfd2.setText(”“);jtfd3.setText(”“);jtfd4.setText(”“);} if(obj==btn3){sqlStr1=”delete from punishment where user_cardnumber=“+ ”'“+str1+”'“;result=stmt.executeUpdate(sqlStr1);if(result>0){JOptionPane.showMessageDialog(frame,”pay successfully!“);lb5.setText(”罚款:0.00“);} } if(obj==btn2){stmt.close();con.close();frame.dispose();} } } catch(SQLException sqle){System.err.println(sqle);} } public static void main(String[]args){new Borrow();} BorrowQuery.java import javax.swing.*;import javax.swing.table.*;import java.sql.*;import java.awt.event.*;import java.awt.*;import java.util.*; public class BorrowQuery implements ActionListener { private JFrame frame;private JButton btn1,btn2;private JTextField jtfd1,jtfd2;private JTable tableTest;private String[]columnNames={”借阅证号“,”图书条码“,”借书日期“,”应还日期“}; private Object[][] rowData=new Object[4][4];private Statement stmt;private Connection con;public BorrowQuery() { tableTest.setPreferredScrollableViewportSize(new JFrame.setDefaultLookAndFeelDecorated(true);frame=new JFrame(”借阅查询“);Container content=frame.getContentPane();content.setLayout(new BorderLayout()); JLabel lb1=new JLabel(”借阅证号:“);JLabel lb2=new JLabel(”姓名:“);btn1=new JButton(”查询“);btn2=new JButton(”退出“);btn1.addActionListener(this);btn2.addActionListener(this);jtfd1=new JTextField();jtfd2=new JTextField();JPanel pl=new JPanel();pl.setLayout(new GridLayout(2,3,10,10));pl.add(lb1);pl.add(jtfd1);pl.add(btn1);pl.add(lb2);pl.add(jtfd2);pl.add(btn2); tableTest=new JTable(rowData,columnNames);tableTest.setRowHeight(30);Dimension(500,60));JScrollPane scrollPane=new JScrollPane(tableTest); } content.add(pl,BorderLayout.NORTH);content.add(scrollPane,BorderLayout.CENTER);frame.pack();frame.setVisible(true);try { } catch(ClassNotFoundException e){ } catch(SQLException e){System.err.println(e);} Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);con=DriverManager.getConnection(”jdbc:odbc:library“);stmt=con.createStatement();public void actionPerformed(ActionEvent e){String sqlStr,cardnumber,user_name,str1,str2,bannercode;ResultSet result;java.util.Date day1,day2;Object obj=(JButton)e.getSource();str1=jtfd1.getText().trim();str2=jtfd2.getText().trim();try {if(obj==btn1) {if(str1.equals(”“)|str2.equals(”“)){JOptionPane.showMessageDialog(frame,”Text can't be null!“);return;} sqlStr=”select borrow.user_cardnumber,user_name,bannercode,borrowdate,receivedate“+ ” from borrow,user where borrow.user_cardnumber=user.user_cardnumber and“+ ” borrow.user_cardnumber=“+”'“+str1+”'“;result=stmt.executeQuery(sqlStr); for(int j=0;j cardnumber=result.getString(”user_cardnumber“);user_name=result.getString(”user_name“);if(str2.equals(user_name)){ day1=result.getDate(”borrowdate“); day2=result.getDate(”receivedate“); bannercode=result.getString(”bannercode“); } rowData[i][0]=cardnumber; rowData[i][1]=bannercode; rowData[i][2]=day1; rowData[i][3]=day2; i++;} } jtfd1.setText(”“);jtfd2.setText(”“);} if(obj==btn2){stmt.close();con.close();frame.dispose();} } catch(SQLException sqle){System.err.println(sqle);} } public static void main(String[]args){new BorrowQuery();} CallUpReturn.java import javax.swing.*;import javax.swing.table.*;import java.awt.*;import java.sql.*;import java.util.*;public class CallUpReturn {private Vector columnField=new Vector();private Vector column=new Vector();private Vector rowData=new Vector();private Connection con;private Statement stmt;private ResultSet result,result2,result3;private String sqlStr,cardnumber,bannercode,user_name,user_office, bookname,publisher;private java.util.Date day1,day2,today;private String[]columnNames={”借阅证“,”姓名“,”单位“,”图书条码“,”书名“,”作者“, ”借出时间“,”到期时间“}; public CallUpReturn(){JFrame frame=new JFrame(”催还通告“);Container content=frame.getContentPane();try { Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);con=DriverManager.getConnection(”jdbc:odbc:library“);stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); sqlStr=”select borrow.user_cardnumber,borrow.bannercode,borrowdate,receivedate,“+ ”user_name,user_office,bookname,publishingcompany from borrow,book,user“+ ” where borrow.user_cardnumber=user.user_cardnumber and borrow.bannercode=“+ result=stmt.executeQuery(sqlStr);”book.bannercode“;today=new java.util.Date(); int i=0;while(result.next()){ columnField.clear();day1=result.getDate(”borrowdate“);day2=result.getDate(”receivedate“); if(day2.before(today)){ cardnumber=result.getString(”user_cardnumber“);bannercode=result.getString(”bannercode“); user_name=result.getString(”user_name“);user_office=result.getString(”user_office“); bookname=result.getString(”bookname“);publisher=result.getString(”publishingcompany“); } columnField.add(cardnumber);columnField.add(user_name);columnField.add(user_office);columnField.add(bannercode);columnField.add(bookname);columnField.add(publisher);columnField.add(day1);columnField.add(day2);rowData.add(columnField.clone());} System.out.println(i);} stmt.close();con.close(); catch(ClassNotFoundException e){System.err.println(e);} catch(SQLException e){System.err.println(e.getCause());System.err.println(e.getErrorCode());System.err.println(e.getNextException());System.err.println(e.getStackTrace()); } } for(int i=0;i JTable tableTest=new JTable(rowData,column);tableTest.setRowHeight(30);JScrollPane scrollPane=new JScrollPane(tableTest);scrollPane.setPreferredSize(new Dimension(500,80));content.add(scrollPane,BorderLayout.CENTER);frame.pack();frame.setVisible(true);} public static void main(String[]args){ } new CallUpReturn();CardManagement.java import javax.swing.*;import java.awt.*;import java.awt.event.*;import javax.swing.border.*;import java.sql.*;import java.util.*;import java.text.*;public class CardManagement implements ActionListener { private JTextField jtfd1,jtfd2,jtfd3,jtfd4;private JButton btn1,btn2,btn3,btn4;private Statement stmt;private PreparedStatement pstmt;private Connection con;private JFrame frame; public CardManagement(){JFrame.setDefaultLookAndFeelDecorated(true);frame=new JFrame(”借阅证管理“); Container content=frame.getContentPane();JLabel lb1=new JLabel(”借阅证号:“);JLabel lb2=new JLabel(”按借阅证号:“);JLabel lb3=new JLabel(”按有效期:“);JLabel lb4=new JLabel(”借阅证号:“);jtfd1=new JTextField();jtfd2=new JTextField();jtfd3=new JTextField();jtfd4=new JTextField();jtfd3.addFocusListener(new FocusHandler());btn1=new JButton(”挂失“);btn2=new JButton(”注销“);btn3=new JButton(”注销“);btn4=new JButton(”取消挂失“);btn3.addActionListener(this); btn1.addActionListener(this);btn2.addActionListener(this);btn4.addActionListener(this);JPanel pl1=new JPanel();JPanel pl2=new JPanel();JPanel pl3=new JPanel();pl1.setBorder(BorderFactory.createTitledBorder(”挂失“));pl2.setBorder(BorderFactory.createTitledBorder(”注销“));pl3.setBorder(BorderFactory.createTitledBorder(”取消挂失"));GridBagLayout gbl=new GridBagLayout();GridBagConstraints gbc=new GridBagConstraints();gbc.fill=GridBagConstraints.BOTH;gbc.weightx=gbc.weighty=10.0;pl1.setLayout(gbl); gbc.gridwidth=1;gbc.weightx=1.0;gbl.setConstraints(lb1,gbc); pl1.add(lb1); gbc.weightx=8.0;gbc.gridheight=2;gbc.gridwidth=2;gbc.insets=new Insets(15,15,15,5);gbl.setConstraints(jtfd1,gbc);pl1.add(jtfd1); gbc.insets=new Insets(19,0,19,5);gbc.weightx=1.0;gbc.gridheight=2;gbc.gridwidth=3;gbc.gridwidth=gbc.REMAINDER;gbl.setConstraints(btn1,gbc);pl1.add(btn1); GridBagLayout gbl2=new GridBagLayout();GridBagConstraints gbc2=new GridBagConstraints();gbc2.fill=GridBagConstraints.BOTH;gbc2.weightx=gbc2.weighty=10;pl2.setLayout(gbl2); gbc2.gridwidth=1;gbc2.weightx=1;gbl2.setConstraints(lb2,gbc2); pl2.add(lb2); gbc2.gridwidth=2;gbc2.insets=new Insets(0,0,0,5);gbc2.weightx=8;gbc2.gridheight=2;gbl2.setConstraints(jtfd2,gbc2);pl2.add(jtfd2); gbc2.gridwidth=gbc2.REMAINDER; gbc2.insets=new Insets(5,0,5,5);gbc2.weightx=1;gbc2.gridwidth=2;gbc2.gridheight=2;gbl2.setConstraints(btn2,gbc2);pl2.add(btn2); gbc2.gridx=0;gbc2.insets=new Insets(5,0,0,0);gbc2.gridwidth=1;gbc2.weightx=1;gbl2.setConstraints(lb3,gbc2);pl2.add(lb3); gbc2.gridx=1;gbc2.gridwidth=2;gbc2.insets=new Insets(5,0,0,5);gbc2.weightx=8;gbl2.setConstraints(jtfd3,gbc2);pl2.add(jtfd3);gbc2.gridx=3;gbc2.gridwidth=gbc2.REMAINDER;gbc2.insets=new Insets(10,0,5,5);gbc2.weightx=1;gbl2.setConstraints(btn3,gbc2);pl2.add(btn3); GridBagLayout gbl4=new GridBagLayout(); GridBagConstraints gbc4=new GridBagConstraints();gbc4.fill=GridBagConstraints.BOTH;gbc4.weightx=gbc4.weighty=10.0;pl3.setLayout(gbl4); gbc4.gridwidth=1;gbc4.gridheight=1;gbc4.weightx=1.0; gbl4.setConstraints(lb4,gbc4); pl3.add(lb4); gbc4.weightx=8;gbc4.gridheight=2;gbc4.gridwidth=2;gbc4.insets=new Insets(15,15,15,5);gbl4.setConstraints(jtfd4,gbc4);pl3.add(jtfd4); gbc4.insets=new Insets(19,0,19,5);gbc4.weightx=1.0;gbc4.gridheight=2; gbc4.gridwidth=gbc4.REMAINDER;gbl4.setConstraints(btn4,gbc4); 图书管理系统设计报告 一系统开发的目标与意义 1.1设计题目 此次VFP课程设计是综合应用所学过的数据库理论知识,自行设计并实现一个较为完整的应用系统。结合一个实际信息系统开发,初步掌握数据库管理信息系统的方案设计、论证和分析方法。正确运用所学课程的基本理论和知识,了解在Windows环境下,使用Visual FoxPro 6.0开发管理信息系统所需的计算机软、硬件环境。进一步深刻理解Visual FoxPro 6.0,合理设计并建立数据库,建立数据库中表与表之间的关系。在理论教学的基础上,进一步理解可视化编程的基本概念,熟练掌握可视化编程的方法和步骤。通过编程和上机调试,提高计算机应用与开发水平,特别是VFP平台的开发水平和能力,提高解决实际问题的能力。从软件工程的角度,初步树立正确的程序设计思想,从系统分析、系统设计、系统实现、系统评价出发。培养分析问题、解决问题的能力。提高收集、查阅资料和撰写项目文档的能力。 1.2开发意义 针对图书馆特点,图书管理系统实现后,能够使界面友好美观操作简单易行。全面自动化信息管理,可随时掌握图书的进存、借阅等信息,查询灵活方便,数据存储安全可靠。进而提高工作效率。改善后的图书管理系统将功能全面,实用性强。 1.3系统开发过程 1.3.1 分析阶段 本阶段主要工作是信息的收集,正所谓好的开度等于成功的一半。通过信息的收集工作来确定系统的目标、软件的总体思路以及所需要的时间。 1.3.2设计阶段 在本阶段认真设计可以体会到什么叫事半功倍。详细的规划具体需要完成的任务、输入输出的程序以及采用的数据结构,最好通过一定的算法描述工具详细描述算法。 1.3.3实施阶段 本阶段要运用(1)系统论思想,把所做的大系统分解成几个小系统,但要保证小系统即个功能模块受高一级系统控制。(2)“自上而下”的设计思想。每一给小程序都可独立、精确运行,但严格受制与高一级程序。 1.3.4维护阶段 本阶段测试系统的性能是关键,通过测试找出设计错误、程序错误、算法错误。通过此阶段积累自己的设计经验。 1.4开发平台本系统是在WINDOWS XP的操作系统使用VisualFoxPro 6.0开发制作的,硬件环境是P4,256M内存以及1024*768分辨率。 二系统分析 2.1 用户需求 通过本图书查询系统,用户可以轻而易举的查到图书信息、借阅人信息以及节约人与图书之间的各种关系。例如:(1)输入借阅人编号可以查阅到其解了哪些书,同时查到这些书籍的信息(作者、出版社、出版年、借还日期等);输入书籍名称或书籍编号可以查阅到书籍信息及借阅人信息(姓名、所属单位、联系方式等)。(2)数据的输出,可以把查阅到的各方面信息通过报表形式输出。 2.2可行性分析 通过对所收集的数据和在设计阶段所需要的各项功能进行分析,最终得出所学设计的软件系统是否可行。并对所存在的问题加以解决;所存在的错误加以纠正。 2.2.1数据分析 在分析阶段完成,收集各方面信息,使所作的软件功能完备,方便可行。学生基本情况信息:主要包括姓名、性别、学号、所属单位、出生年月等 进书基本情况信息:主要包扩书名、图书分类编号、作者、出版社、出版日期、购入日期等 借书基本情况查询:主要包括借阅者姓名、借书日期、应还书日期等。在分析阶段作出以下图表,为实施阶段打下良好基础。 图1 “图书管理系统”数据结构图 2.2.2功能分析本系统具有信息录入、修改、查询、信息输出以及系统安全设置等功能。具体情况如下: (1)信息录入功能:图书进书信息、学生信息、借阅信息等。 (2)修改功能:对图书信息、学生信息等进行添加修改。确保数据及时更新。 (3)信息输出功能:对所需要的信息通过打印机等输出工具进行输出。 (4)查询功能:主要把学生信息与图书信息建立关联,实现学生信息与图书信息的互动。能够方便快捷的实现图书被借阅,和学生借阅等信息的查询。 为了为实施阶段打下基础,做功能结构图如下: 图 书 管 理 系 统 系统介绍数据查询数据录入维护信息输出退出 系统介绍界面系统登陆界面学生信息查询书籍信息查询借阅信息查询学生信息录入新书信息录入借阅信息录入学生信息输出书籍信息输出图书去向输出推出系统界面 图2系统功能结构图 三 系统结构设计 3.1数据库的建立 3.1.1 表的建立本系统共建立三个表,分别是借书表、进书表、学生基本情况表。给表中所包含的信息见2.2.1数据分析所示。 3.1.2 表的关联 所以是表与表这间建立联系的纽带。在本系统所涉及的三个表中索书号和借阅证号都可以作为唯一标示纪录的索引关键字。但考虑到数据修改时是否方便,所以使用学生基本情况表作为父表,以借阅证号作为主索引,避免了关键字出复值。在借书表中涉及到“书被谁借去了”所以可以用借阅证号位关键字把学生基本情况表和借书表建立起一一对应的关系。在学生基本情况表中涉及到“某学生截了那本书”故可以以索书号作为关键字建立唯一索引。因为索书号是唯一确定的,虽让建立的是唯一索引,却也可以收到主索引的效果。总而言之,在借书表与学生基本情况表之间以借阅证号位关键字建立对应关系,再进书表与学生基本情况表之间用索书号建立起一一对应的关系,最终实现三个表之间的互动。 3.1.3表结构的建立与数据的录入 打开了Visual FoxPro软件,运行文件菜单中的新建按钮,选择表和新建文件,同时设置好表名及路径并保存,然后在出现表设计器中进行设计。以下为三个表的设置结构及录入的记录: 部分记录如下: 图3借书表结构及部分数据截图 部分数据如下: 图4进书表结构及部分数据截图 部分数据如下 图5 学生节本情况结构及部分数据截图 3.2系统的设计与实现 3.2.1系统界面与表单设计 漂亮简捷的系统界面将给使用者一个好的印象,是一套系统的门面。设计的成功与否,见关系到系统的前景与市场。本套系统的界面设计及实现程序如下: 图6 系统登陆截图 设计步骤如下: 新建表单“系统登陆.scx”,创建command1、2、3,label1、2、3,combo1和text1。 设置text1的caption属性为“图书管理系统”,text2的caption属性为“操作员”,text3的caption属性为“密码”,并设置字体、颜色、大小等内容使其美观。Label1的caption属性为“确定”,同理label2、3为“取消、退出” 定义command1控件的click事件,代码如下: 3.2.2数据查询表单设计 数据查询包括按学生学号查询学生的具体信息、按书籍的名称查询书籍的具体信息和借阅情况等。下面列举单表查询表单如进书表.scx和多表查询表单如图书去向情况和图书借阅情况.scx说明数据查询的设计方法,进书表.scx的运行效果如下图所示: 图7 图书信息查询系统截图 设计步骤如下: 此表单的设计主要是练习表单向导的用法。新建表单→表单→向导→字段选取→选择表单样式→排序次序→完成→运行。 用表单向导来设计表单为使用者带来极大的便利,尤其是对于我们初学者。但影响创造力的发挥和一些功能的实现。 索书号查询表单的运行效果如下: 图8 索书号查询截图 设计步骤如下: ★此表单涉及主要是练习用程序和命令来实现查询的目的。查询的关键是command1即查询按钮的属性设置。其实现代码如下: command2即退出按钮的代码为release thisform; 推出系统地实现: 退出系统地实现主要是通过command1、2的单击事件click来实现的。其运行效果图如下: 图9 退出系统截图 设计步骤如下 ★command1即YES按钮的实现代码为 ,command2即NO按钮的实现代码为release thisform。 3.2.3 报表的设计 在数据库应用系统中,常需要将数据处理结果以报表形式打印出来。在本套系统的报表设计、显示、答应报表的功能主要用报表设计起来实现。例如下图: 运行后的结果如图所示: 图10报表设计器及部分数据截图 在报表设计过程中,主要用到表设计器和表向导。为能用到报表设计器的高级操作,我会在以后努力学习表设计器的高级操作,弥补这次课程设计的一个缺憾。 3.2.4主菜单的设计 主菜单是用户使用本系统的主要途径,所以合理的设计至关重要,本系统的主菜单是通过菜单设计器来完成,使用的是菜单设计器的非快捷菜单方式,在主菜单确定后,分别再编辑各个子菜单项、命令、过程。本系统使用了命令及过程调用表单的方式。设计步骤如下: 创建第一级菜单。在“项目管理器”中选择“其他”选项卡,再选择“菜单”选项,然后单击“新建”按钮。出现菜单设计器,输入各菜单名称及结果,建立本系统所需要的菜单,如下图所示: 图11 系统主菜单截图 ★在创建主菜单后,即开始设计子菜单。单击子菜单项后的“创建”按钮,可创建其子菜单。如下图所示: 图12 系统子菜单编辑截图 3.2.5主程序设计 主程序是系统运行时执行的主文件,设计主程序的方法为:在“项目管理器”中选择“代码”选项卡,再选择“程序”选项,然后选中一个程序文件,本系统中为“MAIN”,单击右键弹出快捷菜单,选择“设置主文件”,就可设置一个程序为主文件。 本系统的主程序代码如下: 四 系统操作说明 ★双击 快捷方式,进入到登陆系统。 ★输入操作员账号和密码,单击确定进入到系统介绍界面。单击 系统操作界面。见看到菜单栏。在“系统介绍”中有“用户更改”和“系统主页”子菜单。在“数据查询”中涉及到借阅信息、图书去向、姓名查询、索书号查询等子菜单。报表打印中涉及到借书表、进书表、学生信息、和借阅情况等表格。在退出系统一栏中,涉及到系统推出的确认,确定要退出单击YES,否则单击NO。 五 结束语 经过为期两周的课程设计可谓受益匪浅。经过时间才真正的地把文字化为了知识,才真正的为我所用。认识到自己在学习过程中的缺点和不足。为以后的学习生活积累了宝贵的经验和教训。心得体会如下: ★再做vfp系统开发时一定要做好信息的收集工作,否则后即工作将坠入五里雾中。信息收集时要求尽可能的考虑周全。这才能为设计阶段打下一个良好的基础。 ★在系统的设计过程中,最好能集思广益,多听取一点别人的意见和创意。使程序尽可能完美。一定要学会用算法描述工具,把自己的的意图详细简明的记录下来。 ★在为文件命名是尽可能不要因其混淆,尽量由数字或字母。在系统设计中我把“系统登陆、系统登录、登陆系统”三者混淆了。为自己带来了不尽的苦难。并且均用汉字作为文件名。这样虽然不易引起混淆,但是影响工作的效率。 ★要学会设置文件路径,尤其是用向导时。要学会用项目管理器,既可以提高工作效率,又减少了出错的几率。 ★★最后诚恳的向老师您提一点建议,如果您一个学期教我们做一套系统,在做这套系统的同时穿插着讲知识点,我幼稚的以为效果会更好,避免了在做课程设计已开始的时候找不到北! 六 参考文献: ㈠李春葆编著.Visual Fox Pro7.0数据库系统设计与开发.北京:清华大学出版社,2003.8 ㈡李春葆编著.Visual Fox Pro6.0高级编程(应用系统设计篇).北京:清华大学出版社,2000 ㈢史济民,汤观全编著.Visual Fox Pro及其应用系统开发.北京:清华大学出版社,2000 ㈣蔡卓毅,林盛雄,林羽扬,黄竺编著.Visual Fox Pro6.0数据库程序设计与实例.北京:冶金工业出版社,2003 ㈤史德芬编著.全国计算机等级考试二级真题解析——Visual Fox Pro程序设计.北京:海洋出版社,2003 图书管理系统开题报告2篇 图书管理系统开题报告1 一、课题的目的及意义 本次毕业设计所从事的课题题目是基于VF的图书管理系统的设计与实现。课题的目的:应用当前高速发展的计算机技术,组建图书管理系统。 随着计算机及网络技术的飞速发展,Internet/Intranet应用在全球范围内日益普及,当今社会正快速向信息化社会前进,信息自动化的作用也越来越大。从而使我们从繁杂的事务中解放出来,提高了我们的工作效率。 图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得知,以前对图书信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。 数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对图书信息比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力;如要对很长时间以前的图书进行更改就更加困难了。 二、本课题在国内外的研究现状分析 目前大多数图书馆的借阅工作部分还是手工管理,工作效率很低,并且不能及时了解图书的种类和读者们比较需求的图书等,不能更好的适应当前读者的借阅要求。手工管理还存在许多弊端,由于不可避免的人为因素,造成数据的遗漏、误报等。计算机信息化管理有着储存量大,速度快等许多优点,提供给我们的处理信息及时快捷,因此我们利用计算机提供给我们的信息对读者们的借阅过程形成一整套动态的管理 三、本课题主要内容 建立图书管理系统,完成的主要功能有: 借书管理:完成读者借书这一业务流程。 还书管理:完成读者还书这一业务流程。 图书类别管理:完成图书的分类处理。 图书信息管理:完成图书信息的添加、修改、删除和查询处理。读者类别管理:完成读者管理的分类处理。 读者信息管理:完成读者信息的添加、修改、删除和查询处理。系统管理:完成系统管理员的添加和更改密码。 四、实现途径 应用Visual FoxPro 6.0建立数据库,实现本次系统开发。 五、进度计划: 1、确定题目,查看资料第1周 2、系统规划第2-3周 3、系统的`编制与调试第4-6周 4、毕业论文框架的确定第7周 5、毕业论文撰写、修改与确定第8-9周 6、毕业设计的形式审查及改进、预答辩第10周 报告人签名: 六、导师意见 导师签名: 图书管理系统开题报告2 一.开发背景及意义 如何获取信息?图书是我们最好的获取信息的方式,但由于图书馆图书收藏量大大增加,使传统的图书管理员的工作日益繁重起来。迫使人们起用新的管理方法来管理图书,如何把图书管理员从繁重的工作中解脱出来呢? 科学技术日新月异的进步,让人类生活发生了巨大的变化,计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用。信息化时代的到来成为不可抗拒的潮流,人类文明正在进入一个崭新的时代。因此,图书管理系统也以方便、快捷、费用低的优点正慢慢地进入人们的生活,将传统的图书管理方式彻底的解脱出来,提高效率,减轻工人人员以往繁忙的工作,减小出错的概率,使读者可以花更多的时间在选择书和看书上。从而使人们有更多时间来获取信息、了解信息、掌握信息。 为方便对图书馆书籍、读者资料、借还书等进行高效的管理,特编写该程序以提高图书馆的管理效率。使用该程序之后,工作人员可以查询某位读者、某种图书的借阅情况,还可以对当前图书借阅情况进行一些统计,给出统计表格,以便全面掌握图书的流通情况。 二.需求分析 1.能够输入图书的综合情况和进行新书入库、现有图书信息修改以及删除; 2.能够实现对读者档案的查询和编辑管理; 3.能够进行罚款功能; 能够进行借阅历史的查询功能; 三.开发平台 1.使用VisualC++6.0作为本次系统的开发工具,开题报告《图书管理系统开题报告》。因为VisualC++6.0是功能最为强大可视化开发工具,它不仅支持传统的软件开发方法,更重要的是它能支持面向对象、可视化的开发风格。因此VisualC++又称作是一个集成开发工具,它提供了软件代码自动生成和可视化的资源编辑功能。 2.使用Access做为本次开发软件的数据库。因为Access被集成在MicrosoftOffice中。Access数据库处理的基本结构,采取关系型数据库模式。与其他的数据库系统相比,Access更加简单易学,一个普通的计算机用户可以很快地掌握它。Access20xx的功能十分强大,利用它可以方便地实现对信息保存、维护、查询、统计、打印、交流、发布,而且它可以十分方便地与Office其他组件交流数据,这些功能对一个一般用户而言已经足够了。 四.本系统功能模块 图书管理系统需要实现的功能主要有四大块:“日常工作管理”、“基本资料维护”、“查询”、和“系统管理”模块。其中日常工作管理和基本资料维护是整个系统的核心。 1.“日常工作”模块: (1)借书处理:主要功能是记录借阅证编号和图书编号,进行借书过程。在数据库中插入一条借书记录,该记录包括读者ID、图书ID、借出日期、还书期限、操作员姓名。 (2)还书处理:主要功能是输入借阅证编号、图书ID,在借阅登记表中找到相应的记录,将该记录的相应数据插入到还书记录中,同时将借书记录删除,并保存在借阅历史记录表中。 (3)缴纳罚金:输入读者ID,显示该读者的姓名、图书编号、罚款金额和罚款原因,如果读者交纳了罚金,则将借阅登记表的允许借阅标志置为“Y”。删除罚款记录表中该读者对应的记录,将这一条记录同时插入到罚款历史记录表中。 2.“基本资料维护”模块: (1)图书资料维护:包括新书的入库,以及现有书籍资料的修改和删除。 (2)读者资料维护:包括新会员的资料入库,以及现有会员资料的修改和删除 3.“查询”模块: (1)图书资料查询:根据相应的图书信息对所有书籍进行所需查询。此查询包括:'图书分类'、'图书编号'、'图书名称'、'作者'、'出版社'。 (2)读者资料查询:根据相应的读者资料进行所需查询。'借阅证编号'、'读者姓名'以及'身份证编号'。 (3)借阅历史记录查询:根据相应的借阅信息进行所需查询。此查询包括:'借阅证编号'、'图书编号'、'借书日期'、'还书日期'。 (4)罚款历史记录查询:根据相应的罚款信息进行所需查询。此查询包括:'借阅证编号'、'罚款日期'、'罚款原因'。 4.“系统管理”模块: (1)员工管理:包括新员工信息的录入,密码的修改以及员工信息的删除。 (2)数据备份:对现有的数据库信息的保存。 (3)数据恢复:对数据库信息的恢复 五.参考文献 [1]伍俊良.《VisualC++课程设计与系统开发案例》.清华大学出版社 [2]杨小平.《VisualC++项目案例导航》.科学出版社 [3]邓宗明,张晓竞.《VisualC++编程实用技术与案例》.清华大学出版社 [4]郑阿奇.《VisualC++实用教程》.电子工业出版社 [5]萨师煊,王珊.《数据库系统概论》.高等教育出版社 [6]郑人杰,殷人昆,陶永雷.实用软件工程.清华大学出版社.1997.4第四篇:图书管理系统设计报告
第五篇:图书管理系统开题报告