小型图书管理系统
项目开发计划书
拟 制 人: 第十组全体成员 审 核 人:辛明
批 准 人:辛明
[二零一零年十月二十六]
[项目名称]——项目开发计划 1
项目开发计划
1. 引言
1.1 编写目的
基于图书管理者对用户的管理以及对图书的借阅、归还等提供轻松快捷的管理方式,同时也方便广大的读者用户可以随时随地的对图书进行借阅、归还、续借、查询等。
1.2 背景
a.待开发软件系统的名称 小型图书管理系统;
b.本项目的任务提出者:辛明 ,
开发者:刘春丽,刘晓玉,叶飞,叶易昂,
用户:读者,图书管理者,实现该系统的团体,
c.实现该软件的计算中心或计算机网络:网络基础实训室
1.3 定义
该小型图书管理系统是基于Internet/Intranet 及Web技术,建立以Browser/Server 为结构模式、以数据库为后台核心应用、以服务为目的信息平台,对资源进行科学的加工整序和管理维护,为教学和科学研究提供文献信息保障和提高管理图书的效率而设计的系统。
1.4 参考资料
a.《信息系统分析与设计》(第3版)邝孔武 王晓敏 编著 清华大学出版社 b.《SQL Server 数据库基础教程与上机指导》 出版单位:清华大学出版社 c.《C#程序设计及应用教程》 人民邮电出版社
d. 网上资源
2. 项目概述
2.1 工作内容
该系统功能:
1. 能够存储大量图书和读者信息,并方便有效的进行相应的图书操作和管理,这主要包括:
1)能够通过书籍基本信息(包括:书号、书名、出版社、出版日期、作者、内容摘要)单个或以AND方式组合多个条件查询书籍信息;
2)对于每一种书籍,除可查看其基本信息之外还可查看其总数以及目前在馆数量;
3)可增添,删除,修改书籍信息;
4)能够通过读者基本信息(包括:证号、姓名、性别、系名、年级)单个或以AND
方式组合多个条件查询读者信息;
5)对于每位读者除可查看其基本信息之外,还可查看其已借的书籍列表、数量、借
还日期;
6)可增添,删除,修改读者信息;
[项目名称]——项目开发计划 2
2.能够对需要的统计结果提供打印输出。
3.能够提供一定的安全机制,提供数据信息授权访问,防止随意删改,同时提供信息备份的服务。
2.2 主要参加人员
组长:刘春丽,有很好的协调和组织能力,具有开发系统的实际经验,
组员:刘晓玉,叶飞,叶易昂,有很强的编程能力,和实际转换能力
2.3 产品
2.3.1 程序
C#程序和sql server 2000 数据库
2.3.2.文件
1 系统开发计划书
2 系统需求说明书
3 系统设计说明书
4 测试计划和Bug跟踪列表
5 用户手册
6 一个能正确运行的可执行程序
2.3.3.服务
培训安装、维护和运行支持从使用该系统开始,维护期限为一年。
2.3.4.非移交的产品
无
2.4 验收标准
各个功能均能正常使用
2.5 完成项目的最迟期限
本学期第十八周
2.6 本计划的批准者和批准日期
批准者:辛明
批准日期:20xx年10月10日
3. 实施计划
3.1 工作任务的分解与人员分工
组长: 刘春丽 任务: (1)系统总的开发计划书
(2)每周至少组织小组讨论一次,记录讨论内容,列出本周开发计划
(3)项目开发进度的管理
(4)团队的组织和协调
设计:刘春丽,刘晓玉,叶飞,叶易昂
任务: (1)参与小组讨论
(2)进行系统的需求分析和系统设计
(3)完成系统需求说明书和系统设计说明书
[项目名称]——项目开发计划 3
(4)编写测试计划,参与系统测试,记录Bug跟踪列表
(5)协助文档人员完成用户相关文档
(6)根据设计完成编码,并注释
(7)进行单元测试
(8)界面的设计和美工
(9)用户手册的编写
3.2 接口人员
叶飞,叶易昂
3.3 进度
系统规划阶段: 项标志性事件 开始到完成
开发阶段: 项目开发计划书的完成 第8-9周
需求分析阶段: 系统需求说明书完成 第10-14周
设计阶段: 系统设计说明书 第15-18周
编码实现: 项目的形成 18周以后
测试阶段: 测试计划和Bug跟踪列表
移交阶段: 项目的递交
3.4 预算
参与编写人员:4
预期完成需时:11周
费用:工资,电费。。。。
3.5 关键问题
结合用户的实际需求认真做好需求分析及参与人员的团结精神以及积极的态度
4.支持条件
4.1 计算机系统支持
Windows xp 操作系统 ,sql server 2000 数据库,c#语言编程
5.专题计划要点
[说明本项目开发中需制订的各个专题计划的要点。]
Java应用课程设计
项目名称:小型图书管理系统
课程名称:Java应用
项目作者:* * *
完成日期:20xx年12月24日
1
前言
本系统是小型图书管理系统,专为个人设计。本系统启动后需要登陆,然后进入主界 在这个界面我们可以选择所需要的功能模块来完成所要执行的功能。
系统共有4个功能模块:图书入库、图书查询、图书删除、图书概览、修改密码。支持一系列关于图书管理方面的简单操作,诸如查询、删除、添加、修改密码等。
系统流程图
说明:
首先是输入判断,相当于在登陆模块,要求用户输入用户名和密码;然后判断,如果判断失败退出系统,否则进入图书管理系统的主界面。进入主界面后,用户要选择所需执行的功能,即通过鼠标点击相应项,来完成所需操作。
数据库设计
在图书管理系统中,共设计2张表。本系统使用Access来创建数据表。数据库的名称为
Book.mdb。
1.表book 字段名称 图书名 图书号 单价 作者 出版社 入库时间
2.表user 字段名称 用户名 密码
数据类型 文本(主键) 文本 3
数据类型 文本
文本(主键) 文本 文本 文本 文本
系统源码
程序代码
1登陆界面:程序名Login.java
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Container;
import java.util.*;
import java.sql.*;
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(" 用户密码"); jp1=new JPanel(); jp2=new JPanel(); t1=new JTextField(18); t2=new JPasswordField(18);
jp1.add(jlable1);
jp1.add(t1);
jp1.add(jlable2);
4
jp1.add(t2);
JLabel JL=new JLabel("<html><font color=#CC00FF size='7'><i>欢迎登陆</i></font>",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); }
}
public void confirm()//验证用户和密码是否存在
{ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:odbc:driver={Microsoft
(*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url);
5 Access Driver
Statement sql=con.createStatement();
String uname=t1.getText().trim();
String Mima=t2.getText().trim();
String queryMima="select * from user where 用户名='"+uname+"' and 密码='"+Mima+"'";
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(); } }
public static void main(String []arg){
Login a=new Login();
}
}
6
2图书概览:程序名BookBrower.java
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Container;
import java.util.*;
import java.sql.*;
class BookBrower implements ActionListener
{
JFrame f;
Container cp; JPanel jpS,jpanelWest; JButton jbt1,jbt2;//按钮,查询、取消、修改 JLabel label,L; //标签 //定义文本框
JTable table;//用来接收数据库中返回的信息
Object columnName[]={"图书名","图书号","单价","作者","出版社","入库时间"}; Object ar[][] =new Object[80][6];
String sno;
String count="xx";
BookBrower()
{
f=new JFrame(); cp=f.getContentPane(); // 初始化面板、按钮、标签、文本框 jpS=new JPanel();
jpanelWest=new JPanel();
//------------------------------------------------ jbt1=new JButton("确定");
jbt2=new JButton("返回");
//------------------------------------------------ label=new JLabel("<html><font color=#CC00FF size='4'>图书概览</font>",SwingConstants.CENTER);
label.setForeground(Color.blue);
L=new JLabel("书库现在共有图书"+count+"本");
//------------------------------------------------
table=new JTable(ar,columnName);//ar存放表中的数据,columnname表示列名 7
JScrollPane scrollpane = new JScrollPane(table); //------------------------------------------------ //布局,添加控件 jpS.add(jbt1); jpS.add(jbt2); JPanel jpanel=new JPanel(); jpanel.add(label);
JPanel pp4=new JPanel();
JPanel jpE=new JPanel();
cp.add(jpanel,"North"); JPanel jp=new JPanel(); //jp.add(scrollpane); JPanel p=new JPanel();//用来放两个表 p.setLayout(new BorderLayout()); p.add(L,"North");
p.add(scrollpane);
cp.add(pp4,"West");
cp.add(p,"Center");
cp.add(jpS,"South");
cp.add(jpE,"East"); //------------------------------------------------ Dimension screen=kit.getScreenSize(); int x=screen.width; /*取得显示器窗口的宽度*/ int y=screen.height; f.setSize(400,330); /*取得显示器窗口的高度*/ Toolkit kit=Toolkit.getDefaultToolkit();
int xcenter=(x-350)/2;
int ycenter=(y-330)/2;
f.setLocation(xcenter,ycenter);/*显示在窗口中央*/ 8
f.setVisible(true);
//-------------------------------------------------
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
/* f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
} //------------------------------------------------ int i=0; } );*/ } System.exit(0);
public void showRecord()
{
while(i>=0) { ar[i][0]=""; ar[i][1]=""; ar[i][2]=""; ar[i][3]=""; ar[i][4]=""; ar[i][5]=""; i--; } i=0;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:odbc:driver={Microsoft
(*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url); String s="select * from book "; Access Driver
Statement sql=con.createStatement();
ResultSet rs=sql.executeQuery(s);
while(rs.next())
9
{ 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); ar[i][0]=bname; ar[i][1]=bno; ar[i][2]=price; ar[i][3]=writer; ar[i][4]=publish; ar[i][5]=indate; i++; } count=""+i+""; L.setText("书库现在共有图书"+count+"本"); f.repaint();
con.close();
}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("确定")) { f.hide(); } if(cmd.equals("返回")) f.hide(); 10
}
public static void main(String []arg){
BookBrower a=new BookBrower();
a.showRecord();
}
}
3图书查询:程序名QueryBook.java
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Container;
import java.util.*;
import java.sql.*;
class QueryBook implements ActionListener
{
JFrame f3; Container cp; JPanel jp1,jp2,jp3,jp4,jp,jpanelWest; JButton jbt1,jbt2;//按钮,确定、取消 JLabel label; //标签:请输入图书号 JTextField tf,tf1,tf2,tf3,tf4,tf5,tf6; //定义文本框 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("取消"); //------------------------------------------------ label=new JLabel("<html><font color=#CC00FF size='4'>请输入图书号:11
</font>",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); //------------------------------------------------ //布局,添加控件 JPanel jpanel=new JPanel(); jpanel.add(label); jpanel.add(tf); tf6=new JTextField(20);
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");
12
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 showRecord()
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:odbc:driver={Microsoft
(*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url); Statement sql; String ql=tf.getText().trim(); Access Driver
String s="select * from book where 图书号 ='"+ql +"'";
sql=con.createStatement();
ResultSet rs=sql.executeQuery(s); if(rs.next()) { String bname=rs.getString(1); 13
} 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); tf1.setText(bname); tf2.setText(bno); tf3.setText(price); tf4.setText(writer); tf5.setText(publish); tf6.setText(indate);
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(false); tf2.setEditable(false); tf3.setEditable(false); tf4.setEditable(false); tf5.setEditable(false); tf6.setEditable(false); }
public void actionPerformed(ActionEvent e)
{ String cmd=e.getActionCommand(); if(cmd.equals("确定")) { showRecord(); tf.setText(""); } 14
} else if(cmd.equals("取消")) f3.hide();
public static void main(String []arg){
}
}
4图书删除:程序名RemoveBook.java
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Container;
import java.util.*;
import java.sql.*;
class RemoveBook implements ActionListener
{
JFrame f; Container cp; JPanel jpS,jpanelWest; JButton jbt1,jbt2,jbt3;//按钮,查询、取消、修改 JLabel label,L; //标签:请输入学号 JTextField tf; //定义文本框 JTable table;//用来接收数据库中返回的信息 QueryBook a=new QueryBook();
Object columnName[]={"图书名","图书号","单价","作者","出版社","入库时间"}; Object ar[][] =new Object[80][6];
String sno; String count="xx";
RemoveBook()
{
f=new JFrame(); cp=f.getContentPane(); // 初始化面板、按钮、标签、文本框 jpS=new JPanel(); 15
jpanelWest=new JPanel();
//------------------------------------------------ jbt1=new JButton("查询"); jbt2=new JButton("取消");
jbt3=new JButton("删除");
//------------------------------------------------ label=new JLabel("<html><font color=#CC00FF size='4'>请输入要删除的图书名:label.setForeground(Color.blue); L=new JLabel("该种图书共有"+count+"本"); </font>",SwingConstants.CENTER);
//------------------------------------------------
table=new JTable(ar,columnName);//ar存放表中的数据,columnname表示列名
JScrollPane scrollpane = new JScrollPane(table); //------------------------------------------------ tf=new JTextField(18);
//------------------------------------------------
//------------------------------------------------ //布局,添加控件 jpS.add(jbt1); jpS.add(jbt2); jpS.add(jbt3); JPanel jpanel=new JPanel(); jpanel.add(label); jpanel.add(tf); JPanel pp4=new JPanel();
JPanel jpE=new JPanel();
cp.add(jpanel,"North"); JPanel jp=new JPanel(); //jp.add(scrollpane); JPanel p=new JPanel();//用来放两个表 p.setLayout(new BorderLayout()); 16
p.add(L,"North");
p.add(scrollpane);
cp.add(pp4,"West");
cp.add(p,"Center");
cp.add(jpS,"South");
cp.add(jpE,"East"); //------------------------------------------------ Dimension screen=kit.getScreenSize(); int x=screen.width; /*取得显示器窗口的宽度*/ int y=screen.height; f.setSize(400,330); /*取得显示器窗口的高度*/ Toolkit kit=Toolkit.getDefaultToolkit(); int xcenter=(x-350)/2; int ycenter=(y-330)/2; f.setLocation(xcenter,ycenter);/*显示在窗口中央*/ f.setVisible(true);
//------------------------------------------------- jbt1.addActionListener(this);//注册监听器 jbt2.addActionListener(this);
jbt3.addActionListener(this);
/*f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
} } } System.exit(0); );*/ //------------------------------------------------ int i=0;
public void showRecord(String ql)
{
while(i>=0) { ar[i][0]=""; ar[i][1]=""; ar[i][2]=""; ar[i][3]=""; ar[i][4]=""; ar[i][5]=""; 17
i--; } i=0;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:odbc:driver={Microsoft Access (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url);
Statement sql;
String s="select * from book where 图书名 ='"+ql +"'";
sql=con.createStatement();
ResultSet rs=sql.executeQuery(s);
while(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);
ar[i][0]=bname;
ar[i][1]=bno;
ar[i][2]=price;
ar[i][3]=writer;
ar[i][4]=publish;
ar[i][5]=indate;
i++;
}
count=""+i+"";
L.setText("该种图书共有"+count+"本");
f.repaint();
con.close();System.out.println(ar[0][1]);
}catch(SQLException g)
{
18 Driver
System.out.println("E Code"+g.getErrorCode());
} System.out.println("E M"+g.getMessage()); } public void deleteRecord(int index) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:odbc:driver={Microsoft
(*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url); Statement sql; Access Driver
String ql=(String)(ar[index][1]);
String s="delete * from book where 图书号 ='"+ql +"'";
sql=con.createStatement();
int del=sql.executeUpdate(s);
if(del==1) {JOptionPane.showMessageDialog(null,"删除成功!", "信息", JOptionPane.YES_NO_OPTION); } con.close();
f.repaint();
}catch(SQLException g)
} { System.out.println("E Code"+g.getErrorCode()); System.out.println("E M"+g.getMessage()); }
public void actionPerformed(ActionEvent e)
{
String remember="";
19
String ql=""; String cmd=e.getActionCommand(); if(cmd.equals("查询")) {
ql=tf.getText().trim(); remember=ql;
} showRecord(ql); } if(cmd.equals("删除")) { int index=table.getSelectedRow(); if( index==-1) JOptionPane.showMessageDialog(null,"请选定要删除的表格行", "输入错误", JOptionPane.YES_NO_OPTION); else{ deleteRecord(index); //showRecord(remember); } } if(cmd.equals("取消")) f.hide();
public static void main(String []arg){
RemoveBook a=new RemoveBook(); }
}
5图书入库:程序名BookIn.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 JFrame
20
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; //定义文本框 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);
21 书入库图
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(pp4,"West");
cp.add(pp2,"Center");
cp.add(pp3,"South");
cp.add(jpane4,"East"); 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);
//------------------------------------------------ Toolkit kit=Toolkit.getDefaultToolkit(); 22
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; }
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(ClassNotFoundException e){System.out.println("加载驱动程序失try{ String 败!");} url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url);
Statement sql; String s="insert 23 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();
24
} if(cmd.equals("确定")) { insertRecord(); } else if(cmd.equals("取消")) f3.hide(); public static void main(String []arg){
BookIn a=new BookIn();
}
}
6主界面:程序名Book.java
/*本类为用户界面*/
import java.net.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;import java.util.*;
class Book extends JFrame implements ActionListener {
JButton QueryScore=new JButton("图书查询");
JButton QueryXuefen=new JButton("图书入库"); JButton jiangfa=new JButton("图书删除"); JButton xuanke=new JButton("图书概览"); JButton gaiMima=new JButton("修改密码"); JMenuBar mb = new JMenuBar();//菜单栏 JPanel jp=new JPanel();//用来填放子模块 Container cp=getContentPane();
String username;
Book(){}
Book(String username)
{
this.username=username; mb.add(QueryScore); mb.add(QueryXuefen); 25
mb.add(jiangfa);
mb.add(xuanke);
mb.add(gaiMima);
cp.add(mb,"North");
// 设置边框 jp.setBorder(BorderFactory.createTitledBorder(BorderFactory .createLineBorder(Color.blue, 2),null, TitledBorder.CENTER, TitledBorder.TOP)); jp.setLayout(new BorderLayout()); jp.add(label1); JLabel label1 = new JLabel(new ImageIcon("4.jpg"));
/* JLabel JL=new JLabel("<html><font color=#CC00FF size='7'><i>欢迎登陆</i></font>",SwingConstants.CENTER);
jp.add(JL,"North");*/ JLabel label2 = new JLabel(new ImageIcon("2.jpg")); //jp.add(label2,"South"); JScrollPane scrollpane=new JScrollPane(jp); cp.add(scrollpane); setTitle("欢迎登陆");
Toolkit kit=Toolkit.getDefaultToolkit(); Dimension screen=kit.getScreenSize(); int x=screen.width; /*取得显示器窗口的宽度*/ int y=screen.height; /*取得显示器窗口的高度*/ //setSize(x,y); /*让系统窗口平铺整个显示器窗口*/ setSize(600,600); int xcenter=(x-600)/2; int ycenter=(y-600)/2; setLocation(xcenter,ycenter);/*显示在窗口中央*/ setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //注册临听器 QueryScore.addActionListener(this); QueryXuefen.addActionListener(this); jiangfa.addActionListener(this); xuanke.addActionListener(this); gaiMima.addActionListener(this); } public void actionPerformed(ActionEvent e) { 26
}
String cmd=e.getActionCommand(); if (cmd.equals("图书查询")) { new QueryBook(); } if (cmd.equals("图书入库")) { } { new RemoveBook(); } if (cmd.equals("图书概览")) { new BookBrower().showRecord(); new BookIn(); if (cmd.equals("图书删除")) } if (cmd.equals("修改密码")) { } new UpdateMima(username); } public static void main(String[]args) { } new Book("");
7.密码修改:程序名UpdateMima.java
import java.net.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
class UpdateMima extends JFrame implements ActionListener 27
{
JFrame f;
Container cp;
JPanel jp1,jp2,jp3,jp4,jp,jpanelWest;
JButton jbt1,jbt2;//按钮,确定、取消
JLabel label; //标签:修改密码
JTextField name;
JPasswordField tf1,tf2,tf3; //定义文本框
JLabel label1,label2,label3,label4;
String sno;
UpdateMima(){}
UpdateMima(String username)
{
sno=username;
f=new JFrame();
cp=f.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);
label.setFont(new Font("BOLD",Font.BOLD,15));
name=new JTextField(20);
//name.setEditable(false);
//------------------------------------------------ tf1=new JPasswordField(20);
tf2=new JPasswordField(20);
tf3=new JPasswordField(20);
//------------------------------------------------ //布局,添加控件
28 修改密码
jp1.add(jbt1); jp1.add(jbt2); jp1.add(new JLabel("您好"+"xx"+"欢迎登陆学生信息系统")); JPanel jpanel=new JPanel(); jpanel.add(label); JPanel pp4=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.RIGHT)); pp2.add(name); pp4.add(new JLabel("原密码: ",SwingConstants.RIGHT)); pp2.add(tf1); pp4.add(new JLabel(" 新密码: ",SwingConstants.RIGHT)); pp2.add(tf2); pp4.add(new JLabel("确认密码: ",SwingConstants.RIGHT)); pp2.add(tf3); JPanel jpane4=new JPanel();
pp2.add(new JLabel());
JPanel jpbutton=new JPanel();
jpbutton.add(jbt1); jpbutton.add(jbt2); pp2.add(jpbutton);
//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(); 29
Dimension screen=kit.getScreenSize(); int x=screen.width; int y=screen.height; f.setSize(350,330); int xcenter=(x-350)/2; /*取得显示器窗口的宽度*/ /*取得显示器窗口的高度*/ int ycenter=(y-330)/2; f.setLocation(xcenter,ycenter);/*显示在窗口中央*/ //f.setTitle("修改密码"); f.setVisible(true);
//-------------------------------------------------
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
/*f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
} } } System.exit(0); );*/
public void updateM()
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connection con=DriverManager.getConnection(url);
Statement sql=con.createStatement(); String uname=name.getText().trim(); String queryMima="select * from user where 用户名='"+uname+"'"; ResultSet rs=sql.executeQuery(queryMima); { if(rs.next())
String newMima=tf2.getText().trim();
String s="update user set 密码='"+newMima+"' where 用户名 ='"+uname +"'";
sql=con.createStatement();
int updateMima=sql.executeUpdate(s);
30
if(updateMima==1) { JOptionPane.showMessageDialog(f,"密码修改成功!"); } con.close(); f.repaint();
}else{
JOptionPane.showMessageDialog(null,"该用户不存在","警告!",
JOptionPane.YES_NO_OPTION); }
name.setText("");
tf1.setText("");
} //------------------------------------------------ public void actionPerformed(ActionEvent e) { String cmd=e.getActionCommand(); if(cmd.equals("确定")) { tf2.setText(""); tf3.setText(""); } catch(SQLException g) { System.out.println("E Code"+g.getErrorCode()); System.out.println("E M"+g.getMessage()); }
if(name.getText().equals("")||tf1.getText().equals("")||tf2.getText().equals("")||tf3.getText().equals(""))
{
JOptionPane.showMessageDialog(null,"请填写用户的所有信息","提示",
JOptionPane.YES_NO_OPTION); return; }
if(tf2.getText().trim().equals(tf3.getText().trim())) updateM();
}
31
else if(cmd.equals("取消")) f.hide();
}
public static void main(String[]args)
}
{ new UpdateMima(""); }
四.界面设计
32
33
34
图书管理系统系统项目开发计划书目录1引言错误未定义书签11编写目的错误未定义书签12项目背景错误未定义书签13定义错误未定义书签1…
图书管理系统项目名称项目承担部门撰写人完成日期评审负责人评审日期项目计划书图书管理系统项目计划书逍遥七人组软件开发团队杨亚辉20x…
课程设计题目图书管管理系统项目开发计划书学生姓名李军霍瑞光安启超夏文涛学院信息工程学院系别计算机系专业软件工程班级软件071指导教…
图书管理系统项目计划书1引言11编写目的尽量采用学校现有的软硬件环境及先进的管理系统开发方案从而达到充分利用学校现有资源提高系统开…
20##级软件工程专业《软件项目管理》实训计划题目:《图书管理系统软件项目管理计划书》起止日期:20##年6月17日20##年6月…
项目计划书项目名称销售管理系统学校名称上海电机学院项目时间20xx030120xx0510项目策划人赵慧哲吕延晨李娜顾观佩1系统主…
20##级软件工程专业《软件项目管理》实训计划题目:《图书管理系统软件项目管理计划书》起止日期:20##年6月17日20##年6月…
图书管理系统项目进度计划1引言11编写目的尽量采用学校现有的软硬件环境及先进的管理系统开发方案从而达到充分利用学校现有资源提高系统…
图书管理系统系统项目开发计划书目录1引言错误未定义书签11编写目的错误未定义书签12项目背景错误未定义书签13定义错误未定义书签1…
软件测试计划书软件开发第六小组组长陈静成员宋玲孟倩倩刘春梅底琳琳1修订历史记录2目录1简介411目的412背景413范围414测试…