Java技能实训图书馆管理系统.doc
课 程 设 计 报 告课程名称: 技术综合应用实训 设计题目: 图书管理系统设计与制作 院(系): 计 算 机 学 院 专业年级: 计算机科学与技术 2014级 学 号: 141210115 姓 名: 指导教师: 2016 年 12 月19日目 录1 需求分析11.1 系统介绍11.2 功能介绍11.3 运行环境12系统设计22.1 系统综述22.2 数据库设计22.3功能模块设计33 系统实现43.1 主界面43.2 图书入库模块43.3 图书概览模块53.4 图书删除模块53.5 修改密码模块64 实训总结7附录81 需求分析1.1 系统介绍图书管理系统是一款在线的对图书及其信息进行管理的应用软件,该系统可实现图书信息的输入、查询、修改、删除等功能,另外,该系统需要用户进行登录认证,增加了系统中图书信息的安全性。1.2 功能介绍登录功能:运行系统之后,需输入相应的账号和密码进行登录,当用户输入完毕,系统自动查询数据库与之对比,数据一致,则进入系统主界面,否则,提示用户账号或密码输入错误。增加功能:点击主界面“图书入库”,用户需要在弹出的对话框内输入“图书名”、“图书号”、“作者”、“出版社”等信息,输入完毕后点击“确定”按钮,即可完成。删除功能:点击主界面“图书删除”,只需要用户输入图书号,系统会自动查询数据库,调出相应的图书信息,选中之后点击“确定”即可删除图书信息。查看功能:点击主界面“图书概览”,系统会将数据库中的所有图书信息以列表形式展示给用户。修改功能:点击主界面“修改密码”,输入相应信息即可实现对该用户的密码重置。1.3 运行环境Windows 7、Eclipse、Access数据库2系统设计2.1 系统综述若要开发一款功能全面的图书管理系统,至少要具备对于图书信息的储存,并尽量使图书信息达到完善,现设计以book命名的Access数据表来存储图书信息,为了达到用户信息安全的目的,另外增加账号密码登录模块,设计user数据存储用户账号信息,将以上两个数据表放在以Book命名的数据库中。2.2 数据库设计本系统数据库中共有两个数据表,数据表的定义如下:表1:数据表book字段名称数据类型备 注bname文本(主键)图书名bno文本图书号price文本单 价writer文本作 者publish文本出版社indata文本入库时间表2:数据表user字段名称数据类型 备 注uname文本用户名Mima文本密 码图1 系统功能流程图开始输入账号密码数据库运行系统匹配不匹配选择操作图 书 查 询图 书 入 库图 书 删 除图 书 概 览修 改 密 码结束退出2.3功能模块设计3 系统实现3.1 主界面用户成功进入管理系统之后,出现的是该系统各个模块,其中包括图书查询、图书入库、图书删除、图书概览等,用户可根据需要选择相应的模块以实现所需功能。图2 系统主界面3.2 图书入库模块用户点击“图书入库”模块之后,呈现出一个待输入图书信息的对话框。用户即可按照对话框提示输入相应图书信息,填写完毕之后点击“确定”按钮即可,若输入的信息与数据库中出现相同,则提示“数据已存在”,否则图书入库完成。图3 图书入库模块3.3 图书概览模块用户点击“图书概览”模块之后,系统就会自动查询数据库中所有图书的信息,然后以列表形式呈现出来。图4 图书概览模块3.4 图书删除模块用户点击“图书删除”模块之后,系统会弹出对话框,用户只需要在相应对话框内输入想要删除的图书信息的图书号,提交之后系统查询数据库,调出相应图书信息,此时用户选中要删除的图书信息,点击“确定”即可删除。图5 图书删除模块3.5 修改密码模块为了提高用户信息的安全性,系统设置了“修改密码”模块,用户点击“修改密码”模块之后,输入相应的原密码及新密码,提交之后即可完成密码重置。图6 修改密码模块4 实训总结通过这次实训的完成,我再一次深刻地印证了“书到用时方恨少”这句至理名言,不出所料,我的实训完成的不是很好,当然,这并不是老师教的不好,也不是老师教学态度不好,坦白说,老师尽职尽责,对学生关爱有加,是我们一致认为的好老师,主要原因还是在于我自己没有特别努力,平时没有认真地跟上老师的步伐努力学习,才终于尝到了绞尽脑汁写不出的尴尬境地。这痛苦,是我深深地认识到,不要觉得自己很聪明,不要觉得课本很简单,不用费什么劲就可以学会,如果抱有这样的心态,注定一事无成。迄今为止,我对Java语言的内容掌握的仍然不够牢固,很容易出错,归根结底都是出于我自己的原因,所以,在以后的学习过程中,即使不再开类似的课程,但我仍然不会放弃对这门课程的学习,学习不是应付老师,更不是应付自己,草草了事,而是需要掌握一门技术,为了以后更好的生活,进入社会更好的适应,不然,当我们发现自己在社会面前一无所有的时候,便是自己悔不当初的无奈,最后我想说的是为了不让未来的自己成为社会的累赘,那么,从现在努力吧,永远都要记住,想要努力,什么时候开始都不晚,加油吧自己!附录程序部分源码:import java.awt.event.*;import javax.swing.*;import java.awt.*;import java.awt.Container;import java.util.*;import java.sql.*;import javax.swing.text.JTextComponent; /extends JFrameclass BookIn implements ActionListenerJFrame f3;Container cp;JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;JButton jbt1,jbt2;/按钮:确定、取消、JLabel label;/标签JTextField tf1,tf2,tf3,tf4,tf5,tf6; /定义文本框JLabel label1,label2,label3,label4;String sno; BookIn()f3=new JFrame();cp=f3.getContentPane(); / 初始化面板、按钮、标签、文本框jp1=new JPanel(); jp2=new JPanel();jp3=new JPanel();jp4=new JPanel();jpanelWest=new JPanel();jp=new JPanel();jbt1=new JButton("确定"); jbt2=new JButton("取消");label=new JLabel("<html><font color=#CC00FF size='4'>图书入库</font>",SwingConstants.CENTER);label.setForeground(Color.blue);tf1=new JTextField(20);tf2=new JTextField(20);tf3=new JTextField(20);tf4=new JTextField(20);tf5=new JTextField(20); tf6=new JTextField(20);/布局,添加控件jp1.add(jbt1);jp1.add(jbt2);sno=tf4.getText();jp1.add(new JLabel("您好"+sno+"欢迎登陆学生信息系统");JPanel jpanel=new JPanel();jpanel.add(label);JPanel pp4=new JPanel(); JPanel jpane4=new JPanel();cp.add(jpanel,"North");JPanel pp2=new JPanel(new GridLayout(6,1);JPanel pp3=new JPanel();pp4.setLayout(new GridLayout(6,1);pp4.add(new JLabel("图书名",SwingConstants.CENTER);pp2.add(tf1);pp4.add(new JLabel("图书号",SwingConstants.CENTER);pp2.add(tf2);pp4.add(new JLabel("单 价",SwingConstants.CENTER);pp2.add(tf3);pp4.add(new JLabel("作 者",SwingConstants.CENTER);pp2.add(tf4);pp4.add(new JLabel("出版社",SwingConstants.CENTER);pp2.add(tf5);pp4.add(new JLabel("入库时间",SwingConstants.CENTER);pp2.add(tf6);pp3.add(jbt1);pp3.add(jbt2);cp.add(pp4,"West");cp.add(pp2,"Center"); cp.add(pp3,"South");cp.add(jpane4,"East"); Toolkit kit=Toolkit.getDefaultToolkit();Dimension screen=kit.getScreenSize();int x=screen.width;/*取得显示器窗口的宽度*/int y=screen.height;/*取得显示器窗口的高度*/f3.setSize(350,330); int xcenter=(x-350)/2; int ycenter=(y-330)/2; f3.setLocation(xcenter,ycenter);/*显示在窗口中央*/ f3.setVisible(true); jbt1.addActionListener(this);/注册监听器 jbt2.addActionListener(this); /*f3.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0); public void insertRecord() if(tf1.getText().equals("")|tf2.getText().equals("")|tf3.getText().equals("")| tf4.getText().equals("")|tf5.getText().equals("")|tf6.getText().equals("")JOptionPane.showMessageDialog(f3,"请填写图书资料");return; tryClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch(ClassNotFoundException e)System.out.println("加载驱动程序失败!");tryString url = "jdbc:odbc:driver=Microsoft Access Driver (*.mdb);DBQ=Book.mdb"/直接使用当前类目录下的数据库文件Connection con=DriverManager.getConnection(url);Statement sql;String s="insert into book values('"+tf1.getText()+"','"+tf2.getText()+"','"+tf3.getText()+"','"+tf4.getText()+"','"+tf5.getText()+"','"+tf6.getText()+"');"/查询输入的图书号是否在数据库中存在 String query="select * from book where 图书号='"+tf2.getText()+"'"sql=con.createStatement(); ResultSet rs=sql.executeQuery(query);/返回查询结果集boolean moreRecords=rs.next();/判断结果集是否有数据 if(moreRecords) JOptionPane.showMessageDialog(f3,"图书号已经被使用,请重新输入"); con.close(); tf2.setText(""); return;int insert=sql.executeUpdate(s); if(insert=1)JOptionPane.showMessageDialog(null,"图书信息录入成功!");tf1.setText("");tf2.setText("");tf3.setText("");tf4.setText("");tf5.setText("");tf6.setText(""); catch(SQLException g)System.out.println("E Code"+g.getErrorCode();System.out.println("E M"+g.getMessage(); public void actionPerformed(ActionEvent e) String cmd=e.getActionCommand(); if(cmd.equals("确定") insertRecord(); else if(cmd.equals("取消") f3.hide(); public static void main(String arg) BookIn a=new BookIn();