
题 目:
设 计 者:
专业班级:
学 号:
指导教师:
年 月 日
河南理工大学计算机学院
1、系统需求分析(左对齐,宋体粗四号)
1.1系统名称:(左对齐,宋体粗小四号)
图书管理系统(小四,宋体)
1.2系统介绍:
开发一个图书管理系统,主要有三个部分:图书管理,读者管理,借阅管理。
(1) 图书管理主要用于图书信息的相关管理,主要包括图书的添加,图书的查询,图书删除三个功能。
(2) 读者管理主要用于读者信息管理,主要包括读者信息的添加,读者信息的查询,读者信息的删除三个功能。
(3) 借阅管理主要用于借阅信息的管理,主要包括借阅信息管理和添加借阅信息两个功能。(小四,宋体)
1.3开发背景
现代图书馆管理的本质在于创新,以往的图书馆管理完全手工操做,通过卡片记录信息,既浪费时间,又浪费人工、纸张,而且书籍和读者的信息查询比较麻烦,不能提供领导管理上需要的各种信息如本馆各种资料分布及借阅(流通)情况。随着电子信息技术的飞速发展,图书馆的工作也发生了实质性的进展和变化。现代化的服务手段逐渐替代传统的手工操作,计算机编目、光盘数据库和网络检索技术等新型的项目开始在图书馆领域普及。在计算机技术、网络技术的进一步冲击下,图书馆随着教育教学改革的深入和素质教育的全面推动,逐渐演变形成数字化图书管理,其作用也越来越重要了。为了使图书馆的管理更科学、更规范,减少重复劳动,节省图书馆建设和管理中的人力、财力,方便读者查询和借阅书籍,所以有必要建立一个图书馆管理系统。这个系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
1.4. 系统面向的用户群体
本系统为某高校或某单位所开发。立足于校园或单位的实际,着眼于未来发展,建成符合标准化协议、通用性较强、实用的系统,以提高图书信息的现代化发展,实现信息资源的共享。系统的建成无疑会为广大读者和管理者提供极大的帮助。
1.5开发环境
Eclipse+SQL2000
2.系统总体设计
2.1 系统功能结构图
2.2系统数据流程图
3 系统详细设计
3.1 数据库实体E-R图设计
(1)图书信息实体E-R图
(2)读者信息实体
(3)图书借阅实体
(4)多图之间的E-R图
3.2数据库表的设计
数据库名:db_library
(1)图书信息表(tb_abc)
| 列名 | 数据类型 | 长度 | 是否为空 |
| tsbh(主键) | varchar | 50 | 否 |
| lb | char | 10 | 是 |
| zz | char | 10 | 是 |
| sm | char | 10 | 是 |
| yz | char | 10 | 是 |
| cbrq | datetime | 8 | 是 |
| dj | char | 10 | 是 |
| cbs | varchar | 50 | 是 |
| 列名 | 数据类型 | 长度 | 是否为空 |
| name | varchar | 50 | 是 |
| sex | char | 10 | 是 |
| age | char | 10 | 是 |
| identityCard(主键) | char | 20 | 否 |
| date | datetime | 8 | 是 |
| maxNum | char | 10 | 是 |
| 列名 | 数据类型 | 长度 | 是否为空 |
| bookISBN(主键) | char | 10 | 否 |
| operatorId | char | 10 | 是 |
| readerISBN | datetime | 8 | 是 |
| borrowDate | datetime | 8 | 是 |
| backdate | char | 10 | 是 |
| isback | char | 10 | 是 |
| 列名 | 数据类型 | 长度 | 是否为空 |
| name | char | 10 | 是 |
| password | char | 10 | 是 |
| type | char | 10 | 是 |
(1)登录界面:
登录界面主要是用于进入图书管理系统的主页面,登录页面主要包括:用户,密码和用户类型。只有信息全部正确的时候才能登录成功。
加入frame框架,插入了一张背景图片,相应的加入了两个标签和两个文本框和两个按钮。分别是用户名,用户密码和登录按钮,重置按钮完成登录,还添加一个组合框,主要作用是选择用户类型。选择相应的用户类型才能进入。有一个添加用户类型按钮。可以添加用户类型。组合框中的文本框只能显示不能添加文字。单击用户类型按钮时,在列表框中可以添加相应的用户类型。
重要代码:
添加背景图片:
ImageIcon in=new ImageIcon();
JLabel lable=new JLabel(in);
frame.add(lable);
lable.setBounds(0, 0,600, 400);
添加组合框:
private String[] yhlb = { "老师", "学生", "管理员","其他"};
private JLabel lxLab = new JLabel("用户类型:");
private JTextField textField = new JTextField(15);
private JComboBox combox = new JComboBox();
private JButton but = new JButton("添加其他类型");
private int count = 0;
but.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (count < yhlb.length)
combox.addItem(yhlb[count++]);
}
});
combox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textField.setText("欢迎您"+ nameText.getText()+"!");
} });
登录主界面:
st=Dao.conn.createStatement();
String sql = "select * from tb_a where name='" + tname
+ "' and password='" + tpass + "'and type='"+ tbox+"'";
ResultSet rs = st. executeQuery(sql);
try {
if (rs.next()) {
infoLab.setText("登陆成功!") ;
new ZN();
frame.setVisible(false);
(2) 主界面
主界面主要是用于对选择相应的功能进行相应的功能,主界面主要包括图书管理,读者管理和借阅管理三个功能。
主界面添加JMenuBar菜单条,和三个JMenu菜单,和九个JMenuItem菜单项。还有一个返回登录界面的按钮。添加了背景图片。三个菜单包括:图书信息,读者信息和借阅信息。图书信息中包括:图书信息添加,图书信息查询和图书信息删除。读者信息中包括读者信息添加,读者信息查询和读者信息删除。借阅信息包括借阅信息查询和借阅信息添加。
单击主界面的关闭按钮会弹出一个消息框,提示要离开图书信息管理系统。在查询页面可以以表格的形式显示查询信息。
单击每个菜单项都会弹出相应的frame,可以根据选项作出不同的页面。鼠标放到按钮上时,会显示提示框。单击返回可以返回主界面。
重要代码:
提示显示
a.setToolTipText("进入图书管理界面");
b.setToolTipText("进入读者管理界面");
c.setToolTipText("进入借阅管理界面");
图:
跳入别的页面
a1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(e.getSource()==a1){
new Demo2();
frame1.setVisible(false) ;
} }
});(其他选项类似)
用表格显示查询信息
JTable table=null;
DefaultTableModel tableModel=new DefaultTableModel();
String[] titles={"图书编号","类别","书名","出版社","作者","译者", "日期","单价"};
String a,b,c,d,h,f,g,i;
tableModel.setColumnIdentifiers(titles);
table=new JTable(tableModel);
JScrollPane scr=new JScrollPane(table);
frame.add(scr);
scr.setBounds(90, 200, 400, 160);
String sql="select * from tb_abc where tsbh= '"+tsbhText.getText().trim()+"'";
ResultSet rs=st.executeQuery(sql);
while(rs.next()==true){
a=rs.getString(1);
b=rs.getString(2);
c=rs.getString(3);
Vector rowData.add(a); rowData.add(b); rowData.add(c); tableModel.addRow(rowData); 图: 删除信息: String sql = "delete from tb_abc where tsbh='"+tsbhText.getText()+"'and lb='"+lbText.getText()+"'and cbs='"+cbsText.getText()+"'and cbrq='"+ cbrqText.getText()+"'and zz='"+zzText.getText()+"'and yz='"+yzText.getText()+"'and dj='"+djText.getText()+"'and sm='"+smText.getText()+"'"; int a= st.executeUpdate(sql); if(a>0) { infoLab.setText("删除成功!") ; st.close();} 图: (5)添加信息: if(tsbhText.getText().trim().equals("") || lbText.getText().trim().equals("")||yzText.getText().trim().equals("") || zzText.getText().trim().equals("")||cbsText.getText().trim().equals("") || cbrqText.getText().trim().equals("")|| smText.getText().trim().equals("")||djText.getText().trim().equals("")) { infoLab.setText("添加失败!") ; } try{ st=Dao.conn.createStatement(); String sql="insert into tb_abc(tsbh,lb,sm,zz,cbs,yz,cbrq,dj) values('"+ tsbhText.getText().trim() +"','"+lbText.getText().trim()+"','"+ smText.getText().trim() +"','"+ zzText.getText().trim() +"','"+cbsText.getText().trim() +"','" + yzText.getText().trim() +"','"+ cbrqText.getText().trim() +"','"+ djText.getText().trim() +"')"; int a= st.executeUpdate(sql); if(a>0){ infoLab.setText("添加成功!") ; 图: 消息框 frame2.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ JOptionPane.showMessageDialog(null,"离开图书管理系统");{ System.exit(1) ; } } }); 图: (3)数据库与Eclipse的连接 import java.sql.Connection; import java.sql.DriverManager; classDao{ protected static String dbClassName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";protected static String dbUrl = "jdbc:microsoft:sqlserver://localhost:1433;" + "DatabaseName=db_library;SelectMethod=Cursor"; protected static String dbUser = "sa"; protected static String dbPwd = ""; static Connection conn = null; public Dao() { try { if (conn == null) { Class.forName(dbClassName).newInstance(); conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd); } else return; } catch (Exception ee) { ee.printStackTrace(); } } } 4软件测试 软件测试成功,需要操作员准确读取数据库中的表中数据类型才能准确进行测试,测试结果允许有变差,在varchar和char之间可以转换运行。 5 系统总结 总体来说,本次项目在规定期间顺利完成,图书管理系统能够完成图书添加、查询、删除,读者信息添加、查询、删除和借阅信息添加和查询的相应功能。 6系统设计心得体会 在本次项目中设计中,Java在原来的基础上有了更深的了解和掌握,能够熟练的对程序进行添加和改写。也能把Java和数据库进行连接。此外还在老师讲解的基础上学会了举一反三,能够根据自己的需求适当的添加一些相关的代码。其次对开发环境eclipse在原有的基础上有了很深的了解。此外,在开发过程中,也得到了一些教训,必须对每句代码知道是什么意思,做到认真仔细。还需要不断地尝试新的内容。在不懂得地方要多查多看多问。 参考文献:参考文献的书写格式要符合如下规范(不得自己编造); a.期刊文献书写格式: 作者﹒论文篇名[J]﹒期刊名﹒出版年,卷(期 如:高曙明﹒自动特征识别技术综述[J]﹒计算机学报﹒1998,21(3) b.著作文献书写格式: 作者﹒书名[M]﹒出版地:出版社,出版年 如:刘勇,康立山,陈毓屏﹒非数值并行算法(第二册)[M]﹒北京:科学出版社,1998 附录:程序清单(左对齐,宋体粗四号) 内容:按规范格式书写的全部源代码 (Times New Romar字体,5号)
