资源描述
湖南科技学院
课程设计报告
课程名称:
面向对象程序设计课程设计
课程设计题目:
图书管理系统
系:
数学与计算科学系
专 业:
信息与计算科学
年级、班:
2009级信计1班
姓 名:
谭鄱仑
学 号:
200905002109
指导教师:
牛志毅
职 称:
讲师
2012年6月
目录
课题说明 3
程序设计思路 4
程序状态转换图 4
数据库设计 5
程序部分源代码 6
Login.java登录类 6
QueryBook.java查找修改书籍类 10
BookIn.java图书入库类 17
RemoveBook.java图书删除类 22
Book.java主界面类 29
ConnectMysql.java数据库连接类 33
程序测试 34
登录 34
主界面 34
图书查询修改界面 35
图书入库界面 36
图书删除界面 37
图书概览界面 37
修改密码界面 38
学生信息查询界面 38
设计总结 39
前期准备 39
编程实现 39
经验体会 39
参考文献 40
课题说明
1、设计一个图书信息管理系统
2、图书信息包括图书编号、书名、作者、出版社、出版日期、图书简介及图书类别等。
3、本系统功能描述:
图书信息录入功能;
图书信息浏览功能;
查询功能(至少一种查询方式);
图书信息修改功能;
及其它你认为必要的功能。
程序设计思路
程序较小,分为七个个模块,分别实现:登录,图书查询修改,图书入库,图书修改,图书概览,修改密码,学生信息查询。程序通过登录模块登录后可以通过点击相应按钮使用其余六个模块的功能,从而实现图书管理员。
程序状态转换图
数据库设计
数据库类型为MySQL Server 5.5
数据库名称为tpl
下图为表结构
程序部分源代码
由于源代码较多,故只写出部分源代码
Login.java登录类
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.sql.*;
@SuppressWarnings("serial")
class Login extends JFrame implements ActionListener //登录窗口类
{ //定义各容器和组件
Container cp=null;
JFrame f=null;
JButton j1,j2;
JTextField t1;
JPasswordField t2;
JLabel jlable1,jlable2;
Color c;
JPanel jp1,jp2;
//构造函数
Login(){
//创建各对象
f=new JFrame("小型图书管理系统");
j1=new JButton("确定");
j2=new JButton("取消");
cp=f.getContentPane();
jlable1=new JLabel(" 输入用户名");
jlable2=new JLabel(" 用户密码");
//重构painComponent函数实现JPanel添加背景
jp1=new JPanel(){
public void paintComponent(Graphics g) {
super.paintComponent(g);
ImageIcon img = new ImageIcon("1.jpg");
g.drawImage(img.getImage(), 0, 0, null);
}};
jp2=new JPanel();
t1=new JTextField(18);
t2=new JPasswordField(18);
//将各组件加入相应的容器
jp1.add(jlable1);
jp1.add(t1);
jp1.add(jlable2);
jp1.add(t2);
JLabel JL=new JLabel("欢迎登陆",SwingConstants.CENTER);
cp.add(JL,"North");
jp2.add(j1);
jp2.add(j2);
cp.add(jp1,"Center");
cp.add("South",jp2);
jp1.setBackground(new Color(255,153,255));
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width; /*取得显示器窗口的宽度*/
int y=screen.height; /*取得显示器窗口的高度*/
//setSize(x,y); /*让系统窗口平铺整个显示器窗口*/
f.setSize(300,300);
int xcenter=(x-300)/2;
int ycenter=(y-300)/2;
f.setLocation(xcenter,ycenter);/*显示在窗口中央*/
f.setVisible(true);
//-----------------------------------------------------
j1.addActionListener(this);//注册事件监听器
j2.addActionListener(this);
f.addWindowListener(new WindowAdapter(){
//关闭窗口函数
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);
}
@SuppressWarnings("deprecation")
public void confirm()//验证用户和密码是否存在
{
try{ ConnectMysql a=new ConnectMysql();
Connection con=a.Connecting();
Statement sql=con.createStatement();
String uName=t1.getText().trim();
String password=t2.getText().trim();
String queryMima="select * from user where 用户名='"+uName+"' and 密码='"+password+"'";
ResultSet rs=sql.executeQuery(queryMima);
if(rs.next())
{
new Book(uName);
f.hide();
con.close();
}else{
JOptionPane.showMessageDialog(null,"该用户不存在","提示!",
JOptionPane.YES_NO_OPTION);
}
t1.setText("");
t2.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("确定")){
confirm();
}
else if(cmd.equals("取消")){
f.dispose();
}
}
@SuppressWarnings("unused")
public static void main(String []arg){
Login a=new Login();
}
}
QueryBook.java查找修改书籍类
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.sql.*;
class QueryBook implements ActionListener //查询修改书籍信息窗口类
{
//定义容器和组件
JFrame f3;
Container cp;
JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;
JButton jbt1,jbt2,jbt3,jbt4;//按钮,确定、取消、修改、借书者信息
JLabel label; //标签:请输入图书号
JTextField tf,tf1,tf2,tf3,tf4,tf5,tf6,tf7,tf8; //定义文本框
JLabel label1,label2,label3,label4;
QueryBook()
{
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("取消");
jbt3=new JButton("修改");
jbt4=new JButton("借书者信息");
//------------------------------------------------
label=new JLabel("请输入图书号:",SwingConstants.CENTER);
label.setForeground(Color.blue);
tf=new JTextField(20);
//------------------------------------------------
tf1=new JTextField(20);
tf2=new JTextField(20);
tf3=new JTextField(20);
tf4=new JTextField(20);
tf5=new JTextField(20);
tf6=new JTextField(20);
tf7=new JTextField(20);
tf8=new JTextField(20);
//------------------------------------------------
//布局,添加控件
JPanel jpanel=new JPanel();
jpanel.add(label);
jpanel.add(tf);
JPanel pp4=new JPanel();
JPanel jpane4=new JPanel();
cp.add(jpanel,"North");
JPanel pp2=new JPanel(new GridLayout(8,1));
JPanel pp3=new JPanel();
pp4.setLayout(new GridLayout(8,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);
pp4.add(new JLabel("是否被借",SwingConstants.CENTER));
pp2.add(tf7);
pp4.add(new JLabel("借书者学号",SwingConstants.CENTER));
pp2.add(tf8);
//将按钮加入pp3中
pp3.add(jbt1); //按钮确定
pp3.add(jbt2); //按钮取消
pp3.add(jbt3);//按钮修改
pp3.add(jbt4);//按钮借书者信息
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);
jbt3.addActionListener(this);
jbt4.addActionListener(this);
}
//------------------------------------------------
public void showRecord()
{
try{ ConnectMysql a=new ConnectMysql();
Connection con=a.Connecting();
Statement sql;
String ql=tf.getText().trim();
String s="select * from book where 图书号 ='"+ql +"'";
sql=con.createStatement();
ResultSet rs=sql.executeQuery(s);
if(rs.next())
{
String bname=rs.getString(1);
String bno=rs.getString(2);
String price=rs.getString(3);
String writer=rs.getString(4);
String publish=rs.getString(5);
String indate=rs.getString(6);
String isBorrowed=rs.getString(7);
String borrowedName=rs.getString(8);
tf1.setText(bname);
tf2.setText(bno);
tf3.setText(price);
tf4.setText(writer);
tf5.setText(publish);
tf6.setText(indate);
tf7.setText(isBorrowed);
tf8.setText(borrowedName);
}
else
{JOptionPane.showMessageDialog(null,"您输入的图书号不存在,请重新输入",
"输入错误", JOptionPane.YES_NO_OPTION);
}
con.close();
}catch(SQLException g)
{
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
tf1.setEditable(true);
tf2.setEditable(true);
tf3.setEditable(true);
tf4.setEditable(true);
tf5.setEditable(true);
tf6.setEditable(true);
tf7.setEditable(true);
tf8.setEditable(true);
}
public void fixRecord()
{
try{ ConnectMysql a=new ConnectMysql();
Connection con=a.Connecting();
Statement sql;
String s="update book set 图书名='"+tf1.getText()+"',图书号='"+tf2.getText()+"',单价='"+tf3.getText()+"',作者='"+tf4.getText()+"',出版社='"+tf5.getText()+"',入库时间='"+tf6.getText()+"',是否被借='"+tf7.getText()+"',借书者学号='"+tf8.getText()+"' where 图书号='"+tf2.getText()+"'";
sql=con.createStatement();
int fix=sql.executeUpdate(s);
if(fix==1)
{JOptionPane.showMessageDialog(null,"修改成功!",
"信息", JOptionPane.INFORMATION_MESSAGE);
}
con.close();
}catch(SQLException g)
{
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
}
public void ShowStuRecord(){
StudentInfo Info=new StudentInfo();
Info.tf.setText(tf8.getText());
Info.showRecord();
}
@SuppressWarnings("deprecation")
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if(cmd.equals("确定"))
{
showRecord();
tf.setText("");
}
if(cmd.equals("修改"))
{
fixRecord();
}
if(cmd.equals("借书者信息"))
{
ShowStuRecord();
}
if (cmd.equals("取消"))
f3.hide();
}
@SuppressWarnings("unused")
public static void main(String []arg){
QueryBook a=new QueryBook();
}
}
BookIn.java图书入库类
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.sql.*;
//extends JFrame
class BookIn implements ActionListener //图书入库类
{
JFrame f3;
Container cp;
JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;
JButton jbt1,jbt2;//按钮:确定、取消、
JLabel label; //标签
JTextField tf1,tf2,tf3,tf4,tf5,tf6,tf7,tf8; //定义文本框
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("图书入库",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);
tf7=new JTextField(20);
tf8=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(8,1));
JPanel pp3=new JPanel();
pp4.setLayout(new GridLayout(8,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);
pp4.add(new JLabel("是否被借",SwingConstants.CENTER));
pp2.add(tf7);
pp4.add(new JLabel("借书者学号",SwingConstants.CENTER));
pp2.add(tf8);
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);
}
//------------------------------------------------
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;
}
try{ ConnectMysql a=new ConnectMysql();
Connection con=a.Connecting();
Statement sql;
String s="insert into book values('"+tf1.getText()+"','"+tf2.getText()+"','"+ tf3.getText()+"','"+tf4.getText()+"','"+tf5.getText()+"','"+tf6.getText()+"','"+tf7.getText()+"','"+tf8.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("");
tf7.setText("");
tf8.setText("");
}
}catch(SQLException g)
{
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
}
@SuppressWarnings("deprecation")
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if(cmd.equals("确定"))
{
insertRecord();
}
展开阅读全文