数据库Java图书管理系统.pdf
70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 1 课程设计报告 课程名称 Java 语言程序设计 设计题目 图书管理系统 专业班级 物联网 1541 姓 名 张禄泽 学 号 1511431143 成 绩 评 定 考核 内容 设计 表现 设计 报告 答辩 综合评 定成绩 成 绩 计算机技术与工程学院 和谐 勤奋 求是 创新 70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 2 课程设计考核和成绩评定办法 1 课程设计的考核由指导教师根据设计表现、设计报告、设计成果、答辩等几个方面,给出各项权重,综合评定成绩。该设计考核教研室主任审核,主管院长审批备案。2 成绩评定采用五级分制,即优、良、中、及格、不及格。3 参加本次设计时间不足三分之二或旷课四天以上者,不得参加本次考核,按不及格处理。4 课程设计结束一周内,指导教师提交成绩和设计总结。5 设计过程考核和成绩在教师手册中有记载。课程设计报告内容 课程设计报告内容、格式各专业根据专业不同统一规范,经教研室主任审核、主管院长审批备案。注:1.课程设计任务书和指导书在课程设计前发给学生,设计任务书放置在设计报告封面后和正文目录前。2.为了节省纸张,保护环境,便于保管实习报告,统一采用 A4 纸,实习报告建议双面打印(正文采用宋体五号字)或手写,右侧装订。2016/2017 学年第一学期 java 语言程序设计 课程设计任务书 指导教师:郑永春 王丽平 班级:物联网 1541 地点:机房 9409 70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 3 一、课程设计目的 1、综合运用 Java 程序设计课程和其他相关课程的理论和知识,掌握面向对象程序设计的一般方法、常用技术及技巧,树立良好的软件设计思想,培养分析问题和解决实际问题的能力;2、学会从 OOP 程序设计的方法及要求出发,认真分析题目,做好总体设计,根据要求科学地设计包、类、接口等,正确设计算法,合理安排界面,规范开发过程,仔细调试程序,做好设计总结;3、充分利用互联网资源,提高学生获取知识,实践知识的能力。二、课程设计内容 1、基于数据库的管理信息系统设计及实现 如:学籍管理系统;成绩管理系统;学生学习、生活管理系统;学生就业信息管理系统;图书管理系统;超市商品管理系统;汽车租赁管理系统;药店管理系统;游泳馆售票管理系统;计算机维修店管理系统等。主要设计内容:根据题目需求进行数据库设计,软件结构设计、软件功能设计,软件主要功能:主界面设计;信息的录入/增加、删除、修改、查找、统计及业务功能实现设计等。2、记事本程序设计及实现 记事本程序主要设计内容:菜单设计,记事本各功能项的实现。计算器程序:界面设计,各种计算功能的实现。3、网络通讯软件或游戏软件设计 注:以上 3 类题目任选其一或自选其它题目(必须由指导老师审核批准)。三、时间及任务安排 序号 完成内容 时间 1 设计准备(查阅文献、资料、确定方案)1 天 2 总体设计 2 天 3 详细设计、编码、调试 5 天 6 编写设计报告书 1.5 天 7 验收和答辩 0.5 天 8 合计 10 天 四、基本要求 1、根据题目做好总体设计、详细设计;2、列出程序中的主要类(包括类中的成员变量、类变量和主要方法)、接口或画出类图等;3、编写程序,调试、运行程序;4、能够积极上网查询所需资料;5、提交设计报告书,可以选择打印和手写;6、设计报告书要求 A4 幅面,如果采用打印稿,正文采用 5 号宋体;7、答辩。五、课程设计报告内容要求:70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 4 1.格式见“模板”2报告内容:1)系统描述:介绍开发的系统的功能和解决的问题;2)分析与设计 功能模块划分;数据库结构描述;系统详细设计文档(类的划分及相互关系、接口设计等)各个模块的实现方法描述;3)源代码:符合 Java 编码规范;4)运行结果截图 5)参考文献:参考文献的书写格式要符合如下规范;a.期刊文献书写格式:作者论文篇名J期刊名出版年,卷(期 b.著作文献书写格式:作者书名M出版地:出版社,出版年 六、验收及成绩评定 验收方式:检查程序运行、程序实现功能情况及答辩。成绩评定:结合设计表现(30%)、设计报告(成果质量等)(40%)和答辩情况(30%)按优秀、良好、中等、及格、不及格给出成绩。70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 5 目录 一 系统描述.0 二 系统分析与设计.0 2.1 需求分析.0 2.1.1 性能要求.0 2.1.2 灵活性要求.0 2.1.3 故障处理要求.0 2.1.4 其他要求.0 2.2 功能模块图.1 2.3 数据库设计.1 三 主要源代码.2 3.1 添加图书.2 3.2 修改图书.3 3.3 删除图书.4 3.4 删除管理员.5 3.5 删除学生.6 3.6 功能选择.7 3.7 归还图书.9 3.8 借阅图书.10 3.9 登录界面.11 3.10 增加管理员.13 3.11 增加学生.14 3.12 学生查找图书.15 3.13 显示图书信息.16 3.14 查找系统.17 3.15 连接数据库.18 四 运行结果截图.24 五 设计总结.27 六 参考文献.28 70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 0 一 系统描述 图书管理系统是针对图书的增删改查以及用户的增删进行管理的软件。分为管理和学生用户。其中管理员具有增加、删除、修改、借出、归还图书,新建用户、新建管理员、删除用户、删除管理员的权限;用户只有查看想要借阅的书是否存在以及所剩数量的权限。二 系统分析与设计 2.1 需求分析 2.1.1 性能要求 功能服务部分:用户输入后,从提交命令到返回结果不超过 5 秒钟。数据库管理部分:从提交一次记录到结果返回显示不超过 5 秒钟。当资源不能满足借阅需求时,应首先给予提示,不应该陷入无限死循环。2.1.2 灵活性要求 数据库的设计应考虑可扩充性。以便以后图书管的管理。2.1.3 故障处理要求 正常使用时不应该出错,若运行时遇到不可恢复的系统错误,也必须保证数据库的完整性。在系统出错后,应能恢复原来备份的数据库。2.1.4 其他要求 安全性:不同的用户具有不同的使用权限,具有最高权限的是图书管理员能修改注销数据库中的信息,具有一般权限的用户只能读取与自己相关的内容。一致性:系统数据要保持一致性、准确性、当某一数据库中的记录发生改变时,与之相关的数据库也会随着变化。可靠性:必须对数据库及时备份与恢复。易操作性:在系统中提供提示,便于用户操作使用。70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 1 2.2 功能模块图 图 2.2 功能模块图 2.3 数据库设计 表 2.3.1 管理员信息表 列名 数据类型 允许 Null 值 用户名 nchar(10)不允许 密码 nchar(10)不允许 表 2.3.2 学生信息表 列名 数据类型 允许 Null 值 用户名 nchar(10)不允许 密码 nchar(10)不允许 表 2.3.3 图书信息表 列名 数据类型 允许 Null 值 tsname nchar(10)不允许 tsnum int 不允许 kucunshuliang nchar(10)不允许 chubanshe int 不允许 表 2.3.4 用户借阅图书信息表 列名 数据类型 允许 Null 值 tsname nchar(10)不允许 tsnum nchar(10)不允许 70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 2 三 主要源代码 3.1 添加图书 class addSystem extends JFrame implements ActionListener JDialog dialog;JTextField tF1=new JTextField();JTextField tF2=new JTextField();JTextField tF3=new JTextField();JTextField tF4=new JTextField();sql dac=new sql();/构造方法,从其调用方法中获得对话框的父窗口 addSystem(JFrame f)dialog=new JDialog(f,添加图书,true);Container dialogPane=dialog.getContentPane();dialogPane.setLayout(new GridLayout(6,3);dialogPane.add(new JLabel(图书名:,SwingConstants.CENTER);dialogPane.add(tF1);dialogPane.add(new JLabel(图书编号:,SwingConstants.CENTER);dialogPane.add(tF2);dialogPane.add(new JLabel(出版社:,SwingConstants.CENTER);dialogPane.add(tF3);dialogPane.add(new JLabel(库存录入:,SwingConstants.CENTER);dialogPane.add(tF4);JButton b1=new JButton(确定);dialogPane.add(b1);JButton b2=new JButton(取消);dialogPane.add(b2);b1.addActionListener(this);b2.addActionListener(this);dialog.setBounds(200,150,380,320);dialog.show();public void actionPerformed(ActionEvent e)String cmd=e.getActionCommand();if(cmd.equals(确定)int rs=dac.addSystem(tF1.getText(),tF2.getText(),tF3.getText(),tF4.getText();if(rs=0)JOptionPane.showMessageDialog(this,添加成功n);else if(cmd.equals(取消)70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 3 System.exit(0);3.2 修改图书 class changeSystem extends JFrame implements ActionListener JDialog dialog;JTextField tF1=new JTextField();JTextField tF3=new JTextField();sql dac=new sql();/构造方法,从其调用方法中获得对话框的父窗口 changeSystem(JFrame f)dialog=new JDialog(f,修改图书信息,true);Container dialogPane=dialog.getContentPane();dialogPane.setLayout(new GridLayout(4,5);dialogPane.add(new JLabel(请 输 入 要 修 改 的 图 书 名:,SwingConstants.CENTER);dialogPane.add(tF1);dialogPane.add(new JLabel(请输入修改的数量:,SwingConstants.CENTER);dialogPane.add(tF3);JButton b1=new JButton(修改);dialogPane.add(b1);JButton b2=new JButton(取消);dialogPane.add(b2);b1.addActionListener(this);b2.addActionListener(this);dialog.setBounds(200,150,380,320);dialog.show();public void actionPerformed(ActionEvent e)String cmd=e.getActionCommand();if(cmd.equals(修改)int rs=dac.updata(tF1.getText(),tF3.getText();if(rs=0)JOptionPane.showMessageDialog(this,添加成功n);else if(cmd.equals(取消)System.exit(0);70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 4 3.3 删除图书 public class deleteSystem extends JFrame implements ActionListener JLabel jl1,jl2,jl3;JTextField jtf1,jtf2,jtf3;JButton jb1;sql dac=new sql();public deleteSystem()this.setSize(385,310);this.setLocation(350,300);this.setTitle(删除图书);jl1=new JLabel(请输入要删除的图书名);jl2=new JLabel(请输入要删除图书编号);jtf1=new JTextField(10);jtf2=new JTextField(11);jb1=new JButton(确定);jb1.addActionListener(this);this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);this.setVisible(true);Container cp=this.getContentPane();cp.setLayout(new FlowLayout(FlowLayout.CENTER,20,40);cp.add(jl1);cp.add(jtf1);cp.add(jl2);cp.add(jtf2);cp.add(jb1);public static void main(String args)/TODO Auto-generated method stub new deleteSystem();public void actionPerformed(ActionEvent e)String cmd=e.getActionCommand();if(cmd.equals(确定)int rs=dac.deletebook(jtf1.getText(),jtf2.getText();if(rs=0)JOptionPane.showMessageDialog(this,删除成功n);70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 5 3.4 删除管理员 public class dmanger extends JFrame implements ActionListener JLabel jl1,jl2,jl3;JTextField jtf1,jtf2,jtf3;JButton jb1;sql dac=new sql();public dmanger()this.setSize(385,310);this.setLocation(350,300);this.setTitle(删除管理员);jl1=new JLabel(请输入要删除的管理员姓名);jl2=new JLabel(请输入要删除管理员密码);jtf1=new JTextField(10);jtf2=new JTextField(11);jb1=new JButton(确定);jb1.addActionListener(this);this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);this.setVisible(true);Container cp=this.getContentPane();cp.setLayout(new FlowLayout(FlowLayout.CENTER,20,40);cp.add(jl1);cp.add(jtf1);cp.add(jl2);cp.add(jtf2);cp.add(jb1);public static void main(String args)/TODO Auto-generated method stub new dmanger();public void actionPerformed(ActionEvent e)String cmd=e.getActionCommand();if(cmd.equals(确定)int rs=dac.deletemanger(jtf1.getText(),jtf2.getText();if(rs=0)JOptionPane.showMessageDialog(this,删除成功n);70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 6 3.5 删除学生 public class dstudent extends JFrame implements ActionListener JLabel jl1;JTextField jtf1;JButton jb1;sql dac=new sql();public dstudent()this.setSize(380,160);this.setLocation(350,300);this.setTitle(删除学生);jl1=new JLabel(请输入要删除的学生姓名);jtf1=new JTextField(10);jb1=new JButton(确定);jb1.addActionListener(this);this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);this.setVisible(true);Container cp=this.getContentPane();cp.setLayout(new FlowLayout(FlowLayout.CENTER,40,20);cp.add(jl1);cp.add(jtf1);cp.add(jb1);public static void main(String args)/TODO Auto-generated method stub new dstudent();public void actionPerformed(ActionEvent e)String cmd=e.getActionCommand();if(cmd.equals(确定)int rs=dac.deletestudent(jtf1.getText();if(rs=0)JOptionPane.showMessageDialog(this,删除成功n);70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 7 3.6 功能选择 public class gongnengxuanze extends JFrame implements ActionListener JFrame f=null;public gongnengxuanze()/构造方法 f=new JFrame(图书馆管理系统);/创建一个顶层容器 Container cp=f.getContentPane();/创建窗体的内容面板 cp.setLayout(new FlowLayout(FlowLayout.CENTER,60,90);JPanel buttonPanel=new JPanel();/创建一中间容器 JPanel JButton b=new JButton(新建管理员);/创建一原子组建-按钮 JButton a=new JButton(新建学生);b.addActionListener(this);/为按钮添加事件监听器对象 buttonPanel.add(b);/将此按钮添加到中间容器 a.addActionListener(this);/为按钮添加事件监听器对象 buttonPanel.add(a);/将此按钮添加到中间容器 buttonPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.blue,2),新建用户,TitledBorder.CENTER,TitledBorder.TOP);/设置中间容器边框 cp.add(buttonPanel,BorderLayout.CENTER);/将中间容器添加到内容面 JMenuBar mBar=new JMenuBar();/创建菜单条 JMenu selection=new JMenu(图书选项);JMenuItem regist=new JMenuItem(添加图书信息);JMenuItem regist1=new JMenuItem(查找图书);JMenuItem regist2=new JMenuItem(删除图书);JMenuItem regist3=new JMenuItem(修改图书信息);JMenuItem regist4=new JMenuItem(借书);JMenuItem regist5=new JMenuItem(还书);JMenuItem regist6=new JMenuItem(删除学生);JMenuItem regist7=new JMenuItem(删除管理员);selection.add(regist);selection.add(regist1);selection.add(regist2);selection.add(regist3);selection.add(regist4);selection.add(regist5);selection.add(regist6);selection.add(regist7);JMenu sys=new JMenu(系统);JMenuItem exit=new JMenuItem(退出系统);sys.add(exit);mBar.add(selection);mBar.add(sys);70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 8 f.setJMenuBar(mBar);/为窗体增加菜单 f.setJMenuBar(mBar);regist.addActionListener(this);/为菜单添加时间监听器 regist1.addActionListener(this);regist2.addActionListener(this);regist3.addActionListener(this);regist4.addActionListener(this);regist5.addActionListener(this);regist6.addActionListener(this);regist7.addActionListener(this);exit.addActionListener(this);f.pack();f.setVisible(true);f.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););public void actionPerformed(ActionEvent e)String cmd=e.getActionCommand();if(cmd.equals(添加图书信息)new addSystem(f);else if(cmd.equals(查找图书)new serchSystem();else if(cmd.equals(删除图书)new deleteSystem();else if(cmd.equals(修改图书信息)new changeSystem(f);else if(cmd.equals(借书)new jieyue();else if(cmd.equals(还书)new huanshu();else if(cmd.equals(删除学生)new dstudent();else if(cmd.equals(删除管理员)new dmanger();else if(cmd.equals(退出系统)System.exit(0);else if(cmd.equals(新建管理员)new manger();else if(cmd.equals(新建学生)new student();70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 9 public static void main(String args)new gongnengxuanze();3.7 归还图书 public class huanshu extends JFrame implements ActionListener JLabel jl1,jl2,jl3,jl4;JTextField jtf1,jtf2,jtf3,jtf4;JButton jb1;sql dac=new sql();public huanshu()this.setSize(300,420);this.setLocation(350,300);this.setTitle(还书);jl1=new JLabel(请输入还书名称);jl2=new JLabel(请输入还书编号);jl3=new JLabel(请输入还书数量);jl4=new JLabel(请输入还书出版社);jtf1=new JTextField(10);jtf2=new JTextField(10);jtf3=new JTextField(10);jtf4=new JTextField(10);jb1=new JButton(确定);jb1.addActionListener(this);this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);this.setVisible(true);Container cp=this.getContentPane();cp.setLayout(new FlowLayout(FlowLayout.CENTER,20,40);cp.add(jl1);cp.add(jtf1);cp.add(jl2);cp.add(jtf2);cp.add(jl3);cp.add(jtf3);cp.add(jl4);cp.add(jtf4);cp.add(jb1);public static void main(String args)/TODO 自动生成的方法存根 70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 10 new huanshu();Override public void actionPerformed(ActionEvent e)/TODO 自动生成的方法存根 String cmd=e.getActionCommand();if(cmd.equals(确定)int rs=dac.huanshu(jtf1.getText(),jtf2.getText(),jtf3.getText(),jtf4.getText();if(rs=0)JOptionPane.showMessageDialog(this,添加成功n);3.8 借阅图书 public class jieyue extends JFrame implements ActionListener JLabel jl1,jl2;JTextField jtf1,jtf2;JButton jb1;sql dac=new sql();public jieyue()this.setSize(300,250);this.setLocation(350,300);this.setTitle(借书);jl1=new JLabel(请输入借书名称);jl2=new JLabel(请输入借书编号);jtf1=new JTextField(10);jtf2=new JTextField(10);jb1=new JButton(确定);jb1.addActionListener(this);this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);this.setVisible(true);Container cp=this.getContentPane();cp.setLayout(new FlowLayout(FlowLayout.CENTER,20,40);cp.add(jl1);cp.add(jtf1);cp.add(jl2);cp.add(jtf2);cp.add(jb1);70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 11 public static void main(String args)/TODO 自动生成的方法存根 new jieyue();Override public void actionPerformed(ActionEvent e)/TODO 自动生成的方法存根 String cmd=e.getActionCommand();if(cmd.equals(确定)int rs=dac.jieyue(jtf1.getText(),jtf2.getText();if(rs=0)JOptionPane.showMessageDialog(this,借阅成功n);3.9 登录界面 public class mainJFrame extends JFrame implements ActionListener public JButton jb1,jb2;public JLabel jl1,jl2,jl3;public JTextField jtf1,jtf2;sql dac=new sql();public mainJFrame()setTitle(图书馆系统);this.setBounds(300,300,800,600);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setResizable(true);/界面大小可调节 /创建组建 jl1=new JLabel(欢迎使用本系统);jl1.setBounds(350,80,600,80);jl1.setForeground(Color.black);jl1.setFont(new java.awt.Font(宋体,1,30);jl2=new JLabel(用户名);jl2.setBounds(290,175,200,30);jl3=new JLabel(密码);jl3.setBounds(290,175,200,30);jb1=new JButton(学生登录);jb1.setBounds(320,330,100,30);70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 12 jb2=new JButton(管理员登录);jb2.setBounds(450,330,100,30);jtf1=new JTextField();jtf1.setBounds(350,175,200,30);jtf2=new JTextField();jtf2.setBounds(350,220,200,30);this.add(jtf1);this.add(jtf2);this.add(jb1);this.add(jb2);this.add(jl1);this.add(jl2);this.add(jl3);jb1.addActionListener(this);jb2.addActionListener(this);this.setTitle(图书馆系统);this.setBounds(375,100,800,600);this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);this.setVisible(true);this.setLayout(null);Override public void actionPerformed(ActionEvent e)String cmd=e.getActionCommand();if(cmd.equals(学生登录)int rs=dac.mainJFrame1(jtf1.getText(),jtf2.getText();if(rs=1)this.dispose();new see();else JOptionPane.showMessageDialog(this,账户或密码错误n);jtf1.setText();jtf2.setText();if(cmd.equals(管理员登录)int rs=dac.mainJFrame(jtf1.getText(),jtf2.getText();if(rs=1)this.dispose();new gongnengxuanze();else JOptionPane.showMessageDialog(this,账 户 或 密 码 错 误70+120+120+70m 连续梁桥 及 80+140+140+80m 连续刚构桥施工方案 13 n);jtf1.setText();jtf2.setText();public static void main(String args)/TODO Auto-generated method stub new mainJFrame();3.10 增加管理员 public class manger extends JFrame implements ActionListener JLabel jl1,jl2,jl3,jl4;JTextField jtf1,jtf2,jtf3,jtf4;JButton jb1;sql dac=new sql();public manger()this.setSize(220,250);this.setLocation(350,300);this.setTitle(新增管理员);jl1=new JLabel(用户名);jl2=new JLabel(密码);jtf1=new JTextField(10);jtf2=new JTextField(10);jb1=new JButton(注册);jb1.addActionListener(this);this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);this.setVisible(true);Container cp=this.getContentPane();cp.setLayout(new FlowLayout(FlowLayout.CENTER,20,40);cp.add(jl1);cp.add(jtf1);cp.add(jl2);cp.add(jtf2);cp.add(jb1);public