图书管理系统_第1页
图书管理系统_第2页
图书管理系统_第3页
图书管理系统_第4页
图书管理系统_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、图书管理系统应用程序Java语言实现1 系统总体目标:1) 存取图书信息、采购和淘汰情况、租借情况。2) 实现图书采购、淘汰、租借功能。3) 实现图书信息、采购和淘汰、库存和租借情况查询4) 实现图书的采购、库存、租借情况统计。2 系统需求分析2.1 注册用户管理基本功能分析 用户有图书管理员和借书人,借书人使用前需注册,注册后可登录系统。 注册用户管理 用户注册用户登录 修改用户信息2.2 图书信息管理基本功能分析 图书管理员登录后,可以添加、删除和修改图书信息。 图书信息管理 添加(采购)新图书 修改图书信息 删除图书2.3图书借阅基本功能分析图书借阅管理 借书 还书 预定借阅图书 查询借

2、阅信息2.4 图书管理员管理基本功能分析图书管理员管理 查看全部图书列表 查看图书借阅列表查看注册用户列表3 数据库设计采用sql server 数据库服务器,在其中新建名称为“library”的数据库。根据需求 数据库中各个表的说明如下。Users(用户信息表) ,存放用户的基本信息名称类型大小非空描述Idint4是用户ID号UsernameChar50是登录用户名Passwordchar50是登录密码unitchar50是用户类型Books(图书信息表):存放所有图书的基本信息 名称类型大小非空描述Idint4是图书ID号booknameChar50是图书名称companychar50是出

3、版社名称authorchar50是作者Pressdatadatetime8出版日期Pricechar20价格conunint4是该书的数量beizhuchar50备注 Bookbrowse(图书借阅信息表) ,存放图书借阅信息名称类型大小非空描述Idint4是ID号studentnameChar50是借阅者姓名booknamechar50是借阅图书名称borrowdatadatatime8是借书日期returndatadatetime8还书日期isreturnchar10是图书是否归还beizhuchar50备注数据库建表:Create table users (id int not null

4、 unique,Username char (50),Password char (50),Unit char (50),primary key (id);Create table books (id int not null unique,bookname char (50),company char (50),author char (50),pressdata datetime,price char (20),conun int,beizhu char (50),primary key (id);Create table bookbrowse (id int not null uniqu

5、e,bookname char (50),studentname char (50),borrowdata datetime,returndata datetime,isreturn char (10),beizhu char (50),primary key (id);4 系统流程和模块划分根据以上需求分析,将系统分为以下几个模块。1) 基本数据维护模块:负责对系统中的基本数据信息2) 基本业务功能模块:3) 查询功能 : 负责在给定的条件下查询借阅者和图书信息。4) 安全功能模块:提供分级的用户管理,赋予不同级别的用户不同权限,并且维护系统的安全,需要正确地登录才能登录系统。5关键技术:利

6、用JDBC技术。JDBC做一下三件事:1) 与数据库建立连接2) 发送并执行sql语句3) 处理结果ODBC数据资源在windows中建立odbc数据资源6系统详细设计与实现6.1基本数据维护功能模块:利用JCreator 创建一个新的类Adduser,作为添加新用户的界面,并将新用户的信息插入到数据库中。详细代码:import java.util.*;import java.awt.*;import java.io.*;import .*;import java.sql.*;import java.awt.event.*;import javax.swing.*;class Adduser

7、extends JDialog implements ActionListener JLabel l_addname,l_fenge,l_name,l_pass,l_enter,l_unit;JTextField t_aname;Choice c_aunit;JButton b_addname,b_cancle;JPanel pan1,pan2,pan3,pan4,pan5,pan6,pan7;JPasswordField t_apass,t_aenter;NetConn sql;Statement sqll;ResultSet rs;Adduser(Frame f,String s)/界面布

8、局super(f,s);l_addname=new JLabel(添加用户 );l_fenge=new JLabel(-);l_name=new JLabel(名字:);l_pass=new JLabel(密码:);l_enter=new JLabel(确认:);l_unit=new JLabel(权限:);t_aname=new JTextField(,10);t_apass=new JPasswordField(,10);t_apass.setEchoChar(*);t_aenter=new JPasswordField(,10);t_aenter.setEchoChar(*);c_aun

9、it=new Choice();c_aunit.add(1);c_aunit.add(2);c_aunit.add(3);b_addname=new JButton(添加);b_addname.addActionListener(this);b_cancle=new JButton(放弃);b_cancle.addActionListener(this);pan1=new JPanel();pan2=new JPanel();pan3=new JPanel();pan4=new JPanel();pan5=new JPanel();pan6=new JPanel();pan7=new JPan

10、el();pan1.add(l_addname);pan2.add(l_fenge);pan2.add(l_name);pan2.add(t_aname);pan3.add(l_pass);pan3.add(t_apass);pan4.add(l_enter);pan4.add(t_aenter);pan5.add(b_addname);pan5.add(b_cancle);pan6.add(l_fenge);pan7.add(l_unit);pan7.add(c_aunit);/建立数据库连接sql=new NetConn();setLayout(new GridLayout(7,1);ad

11、d(pan1);add(pan6);add(pan2);add(pan3);add(pan4);add(pan7);add(pan5);setBounds(450,150,250,300);public void actionPerformed(ActionEvent e) /单击取消按钮的事件处理程序if(e.getSource()=b_cancle)dispose();/单击添加按钮的事件处理程序 else if(e.getSource()=b_addname) String s=t_aenter.getText().trim();/判断两次输入的密码是否一致 if(t_apass.get

12、Text().trim().equals(s) try sqll=sql.connect();/根据用户添加的用户名进行选择rs=sqll.executeQuery(SELECT * FROM users where username=+t_aname.getText()+);/如果已经存在同名的用户,则显示错误提示if(rs.next() l_addname.setText(用户已经存在,添加失败!);/如果不存在用户名,则将用户新添加信息添加到数据库中else String s2=+t_aname.getText().trim()+; String s3=+t_apass.getText(

13、).trim()+; String s4=+c_aunit.getSelectedItem().trim()+; String temp=INSERT INTO users (username, password, unit) VALUES (+s2+,+s3+,+s4+); sqll.executeUpdate(temp); l_addname.setText(用户添加成功); catch (SQLException e1) e1.printStackTrace(); else l_addname.setText(两次输入的密码不一致!); t_apass.setText(); t_aent

14、er.setText(); 利用JCreator 创建新类Mdiuser, 作为接受用户信息的界面,并将接收到的修改信息在数据库中修改。代码如下:import java.util.*;import java.awt.*;import java.io.*;import .*;import java.sql.*;import java.awt.event.*;import javax.swing.*; class Mdiuser extends Dialog implements ActionListener JLabel l_addname,l_fenge,l_name,l_pass,l_ent

15、er,l_unit;JTextField t_mname;Choice c_munit;JPasswordField t_mpass,t_menter;JButton b_mdiname,b_cancle;JPanel pan1,pan2,pan3,pan4,pan5,pan6,pan7;NetConn sql;Statement sqll;ResultSet rs;String a1,a2,a3,a4,a5;Mdiuser(Frame f,String s)/界面布局super(f,s);l_addname=new JLabel(修改用户信息 );l_fenge=new JLabel(-);

16、l_name=new JLabel(名字:);l_pass=new JLabel(原密:);l_enter=new JLabel(新密:);l_unit=new JLabel(权限:);t_mname=new JTextField(,10);t_mpass=new JPasswordField(,10);t_menter=new JPasswordField(,10);t_menter.setEchoChar(*);c_munit=new Choice();c_munit.add(1);c_munit.add(2);c_munit.add(3);b_mdiname=new JButton(修改

17、);b_mdiname.addActionListener(this);b_cancle=new JButton(放弃);b_cancle.addActionListener(this);pan1=new JPanel();pan2=new JPanel();pan3=new JPanel();pan4=new JPanel();pan5=new JPanel();pan6=new JPanel();pan7=new JPanel();pan1.add(l_addname);pan2.add(l_fenge);pan2.add(l_name);pan2.add(t_mname);pan3.ad

18、d(l_pass);pan3.add(t_mpass);pan4.add(l_enter);pan4.add(t_menter);pan5.add(b_mdiname);pan5.add(b_cancle);pan6.add(l_fenge);pan7.add(l_unit);pan7.add(c_munit); /建立数据库连接sql=new NetConn();setLayout(new GridLayout(7,1);add(pan1);add(pan6);add(pan2);add(pan3);add(pan4);add(pan7);add(pan5);setBounds(450,15

19、0,250,300);public void actionPerformed(ActionEvent e) /单击放弃按钮的事件处理程序if(e.getSource()=b_cancle)dispose();/单击修改按钮的事件处理程序 else if(e.getSource()=b_mdiname) try sqll=sql.connect(); /通过用户姓名从数据库中查找记录 rs=sqll.executeQuery(SELECT * FROM users where username=+t_mname.getText()+); /遍历查找到的记录集 while(rs.next() a2

20、=rs.getString(2);/匹配记录中的密码和用户输入的密码 if(t_mpass.getText().equals(a2) a3=+t_mname.getText().trim()+; a4=+t_menter.getText().trim()+; a5=+c_munit.getSelectedItem().trim()+; /根据用户输入的信息,更新记录 String tem=UPDATE users SET password=+a4+,unit=+a5+ WHERE username=+a3; sqll.executeUpdate(tem); l_addname.setText(

21、用户修改成功); else l_addname.setText(用户名或密码错误!); catch(SQLException e2) 利用JCreator 创建一个新的类Addbookfrm, 作为接受图书信息的界面,并将新图书的信息插入到数据库中。代码如下:import java.util.*;import java.awt.*;import java.io.*;import .*;import java.sql.*;import java.awt.event.*;import javax.swing.*;import javax.swing.JFrame;class Addbookfrm

22、extends JFrame implements ActionListener JLabel l_msg,l_bookname,l_company,l_author,l_pdata,l_price,l_number,l_beizhu; JTextField t_bookname,t_company,t_author,t_pdata,t_price,t_number,t_beizhu; JButton b_clear,b_add,b_back; JPanel pan1,pan2,pan3,pan4,pan5,pan6,pan7,pan8,pan9; NetConn sql; Statement

23、 sqll; String a1,a2,a3,a4,a5,a6,a7; Addbookfrm() /界面布局 super(添加书籍窗口); l_msg =new JLabel(添加书籍 ); l_bookname=new JLabel(书名: ); l_company =new JLabel(出版社:); l_author =new JLabel(作 者:); l_pdata =new JLabel(出版日期:); l_price =new JLabel(价格:); l_number =new JLabel(新书数量:); l_beizhu =new JLabel(备注:); t_bookna

24、me=new JTextField(,10); t_company =new JTextField(,10); t_author =new JTextField(,10); t_pdata =new JTextField(,10); t_price =new JTextField(,10); t_number =new JTextField(,10); t_beizhu =new JTextField(,10); b_clear =new JButton(清空); b_add =new JButton(添加); b_back =new JButton(返回); b_clear.addActio

25、nListener(this); b_add.addActionListener(this); b_back.addActionListener(this); pan1=new JPanel();pan2=new JPanel();pan3=new JPanel();pan4=new JPanel();pan5=new JPanel();pan6=new JPanel();pan7=new JPanel();pan8=new JPanel();pan9=new JPanel(); pan1.add(l_msg);pan2.add(l_bookname);pan2.add(t_bookname)

26、;pan3.add(l_company);pan3.add(t_company); pan4.add(l_author);pan4.add(t_author);pan5.add(l_pdata);pan5.add(t_pdata);pan6.add(l_price);pan6.add(t_price); pan7.add(l_number);pan7.add(t_number);pan8.add(l_beizhu);pan8.add(t_beizhu);pan9.add(b_clear);pan9.add(b_add);pan9.add(b_back); setLayout(new GridL

27、ayout(9,1); add(pan1);add(pan2);add(pan3);add(pan4);add(pan5);add(pan6);add(pan7);add(pan8);add(pan9); /建立数据库连接 sql=new NetConn(); /设置窗体大小 setBounds(350,150,400,500); public void actionPerformed(ActionEvent ec) /单击退出按钮的事件处理程序 if(ec.getSource()=b_back) dispose(); /单击清空按钮的事件处理程序 else if(ec.getSource()

28、=b_clear) t_bookname.setText(); t_company.setText(); t_author.setText(); t_pdata.setText(); t_price.setText(); t_number.setText(); t_beizhu.setText(); l_msg =new JLabel(添加书籍 ); /单击添加按钮的事件处理程序 else if(ec.getSource()=b_add) /如果输入项有为空的,则显示提示信息 if(t_bookname.getText().equals()|t_company.getText().equals

29、()|t_author.getText().equals() l_msg.setText(书名,出版社和作者不能为空!); else try sqll=sql.connect(); a1=+t_bookname.getText().trim()+; a2=+t_company.getText().trim()+; a3=+t_author.getText().trim()+; a4=+t_pdata.getText().trim()+; a5=+t_price.getText().trim()+; a6=+t_number.getText().trim()+; a7=+t_beizhu.get

30、Text().trim()+; l_msg.setText(1); /向数据库中插入记录 String temp=insert into books (bookname, company, author, pressdata, price, conun, beizhu) VALUES (+a1+,+a2+,+a3+,+a4+,+a5+,+a6+,+a7+); sqll.executeUpdate(temp); l_msg.setText(书籍添加成功); catch(SQLException e3) 利用JCreator 创建新类Mdibookfrm, 作为接受修改图书信息的界面,并将接收到的

31、修改信息在数据库。代码如下: import java.util.*;import java.awt.*;import java.io.*;import .*;import java.sql.*;import java.awt.event.*;import javax.swing.*;import javax.swing.JFrame;class Mdibookfrm extends JFrame implements ActionListener JLabel l_msg,l_idd,l_bookname,l_company,l_author,l_pdata,l_price,l_number,

32、l_beizhu; JTextField t_idd,t_bookname,t_company,t_author,t_pdata,t_price,t_number,t_beizhu; JButton b_clear,b_enter,b_update,b_back; JPanel pan1,pan2,pan3,pan4,pan5,pan6,pan7,pan8,pan9,pan10; NetConn sql; Statement sqll; ResultSet rs; String a1,a2,a3,a4,a5,a6,a7; Mdibookfrm() /界面布局 super(修改书籍窗口); l_

33、msg =new JLabel(修改书籍 ); l_idd =new JLabel(输入id修改:); l_bookname=new JLabel(书名: ); l_company =new JLabel(出版社: ); l_author =new JLabel(作者: ); l_pdata =new JLabel(出版日期:); l_price =new JLabel(价格 : ); l_number =new JLabel(新书数量:); l_beizhu =new JLabel(备注: ); t_idd =new JTextField(,10); t_bookname=new JText

34、Field(,10); t_company=new JTextField(,10); t_author=new JTextField(,10); t_pdata=new JTextField(,10); t_price=new JTextField(,10); t_number=new JTextField(,10); t_beizhu=new JTextField(,10); b_clear=new JButton(清空); b_enter=new JButton(查询); b_update=new JButton(更新); b_back=new JButton(返回); b_clear.a

35、ddActionListener(this); b_enter.addActionListener(this); b_update.addActionListener(this); b_back.addActionListener(this); pan1=new JPanel();pan2=new JPanel();pan3=new JPanel();pan4=new JPanel();pan5=new JPanel();pan6=new JPanel();pan7=new JPanel();pan8=new JPanel();pan9=new JPanel();pan10=new JPane

36、l(); pan1.add(l_msg);pan2.add(l_bookname);pan2.add(t_bookname);pan3.add(l_company);pan3.add(t_company); pan4.add(l_author);pan4.add(t_author);pan5.add(l_pdata);pan5.add(t_pdata);pan6.add(l_price);pan6.add(t_price); pan7.add(l_number);pan7.add(t_number);pan8.add(l_beizhu);pan8.add(t_beizhu);pan9.add(

37、b_clear);pan9.add(b_update);pan9.add(b_back); pan10.add(l_idd);pan10.add(t_idd);pan10.add(b_enter); setLayout(new GridLayout(10,1); add(pan1);add(pan10);add(pan2);add(pan3);add(pan4);add(pan5);add(pan6);add(pan7);add(pan8);add(pan9); /建立数据库连接 sql=new NetConn(); /设置窗口大小 setBounds(350,150,400,500); se

38、tVisible(true); public void actionPerformed(ActionEvent ef) /单击退出按钮的事件处理程序 if(ef.getSource()=b_back) dispose(); /单击更新按钮的事件处理程序 else if(ef.getSource()=b_update) if(t_bookname.getText().equals()|t_company.getText().equals()|t_author.getText().equals() l_msg.setText(书名,出版社和作者不能为空!); /根据得到的用户输入信息,更新数据库中

39、的记录 else try sqll=sql.connect(); a1=+t_bookname.getText().trim()+; a2=+t_company.getText().trim()+; a3=+t_author.getText().trim()+; a4=+t_pdata.getText().trim()+; a5=+t_price.getText().trim()+; a6=+t_number.getText().trim()+; a7=+t_beizhu.getText().trim()+; l_msg.setText(1); String temp=UPDATE books

40、 set bookname=+a1+, company=+a2+, author=+a3+, pressdata=+a4; sqll.executeUpdate(temp); l_msg.setText(书籍修改成功); catch(SQLException e3) /单击清除按钮的事件处理程序 else if(ef.getSource()=b_clear) t_bookname.setText(); t_company.setText(); t_author.setText(); t_pdata.setText(); t_price.setText(); t_number.setText()

41、; t_beizhu.setText(); l_msg =new JLabel(修改书籍 ); /单击确定按钮的事件处理程序 else if(ef.getSource()=b_enter) try sqll=sql.connect(); /根据图书Id号,进行查询 String temp=SELECT * FROM books where id=+Integer.valueOf(t_idd.getText().intValue(); rs=sqll.executeQuery(temp); l_msg.setText(1); if(rs.next() l_msg.setText(2); t_bo

42、okname.setText(rs.getString(2); t_company.setText(rs.getString(3); t_author.setText(rs.getString(4); t_pdata.setText(String.valueOf(rs.getDate(5); t_price.setText(String.valueOf(rs.getInt(6); t_number.setText(String.valueOf(rs.getInt(7); t_beizhu.setText(rs.getString(8); l_msg.setText(找到书籍!); else l

43、_msg.setText(没有找到书籍!); catch(SQLException e4) 6.2 基本业务功能模块系统的基本业务功能是借书和还书。利用JCreator 创建新类Borbookfrm, 作为借阅图书信息的界面,并将接收到的信息修改在数据库。代码如下:import java.util.*;import java.awt.*;import java.io.*;import .*;import java.sql.*;import java.awt.event.*;import javax.swing.*;import java.util.Date;class Borbookfrm e

44、xtends JFrame implements ActionListenerJLabel l_msg,l_user,l_bookname,l_data,l_beizhu;JTextField t_user,t_bookname,t_data,t_beizhu;JButton b_enter,b_clear,b_back;JPanel pan1,pan2,pan3,pan4,pan5,pan6;Date d;NetConn sql;Statement sqll;Borbookfrm()/界面布局l_msg =new JLabel(借书窗口 );l_user =new JLabel(借阅者:);

45、l_bookname =new JLabel(书 名:);l_data =new JLabel(日 期:);l_beizhu =new JLabel(备 注:);t_user =new JTextField(,11);t_bookname =new JTextField(,11);t_data =new JTextField(,11);d=new Date();t_data.setText(d.toLocaleString();t_beizhu =new JTextField(,11);b_enter =new JButton(确定);b_clear =new JButton(清除);b_ba

46、ck =new JButton(返回);b_enter.addActionListener(this);b_clear.addActionListener(this);b_back.addActionListener(this);pan1=new JPanel();pan2=new JPanel();pan3=new JPanel();pan4=new JPanel();pan5=new JPanel();pan6=new JPanel();pan1.add(l_msg);pan2.add(l_user);pan2.add(t_user);pan3.add(l_bookname);pan3.add(t_bookname);pan4.add(l_data);pan4.add(t_data);pan5.add(l_beizhu);pan5.add(t_beizhu);p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论