1、课程设计报告课程名称 Java语言程序设计 设计题目 图书管理系统 专业班级 物联网1541 姓 名 张禄泽 学 号 1511431143 成 绩 评 定考核内容设计表现设计报告答辩综合评定成绩成 绩计算机技术与工程学院和谐 勤奋 求是 创新课程设计考核和成绩评定办法1 课程设计的考核由指导教师根据设计表现、设计报告、设计成果、答辩等几个方面,给出各项权重,综合评定成绩。该设计考核教研室主任审核,主管院长审批备案。2 成绩评定采用五级分制,即优、良、中、及格、不及格。3 参加本次设计时间不足三分之二或旷课四天以上者,不得参加本次考核,按不及格处理。4 课程设计结束一周内,指导教师提交成绩和设计
2、总结。5 设计过程考核和成绩在教师手册中有记载。课程设计报告内容 课程设计报告内容、格式各专业根据专业不同统一规范,经教研室主任审核、主管院长审批备案。注: 1. 课程设计任务书和指导书在课程设计前发给学生,设计任务书放置在设计报告封面后和正文目录前。 2. 为了节省纸张,保护环境,便于保管实习报告,统一采用A4纸,实习报告建议双面打印(正文采用宋体五号字)或手写,右侧装订。2016/2017学年第一学期java语言程序设计 课程设计任务书指导教师: 郑永春 王丽平 班级:物联网1541 地点:机房 9409一、 课程设计目的1、综合运用Java程序设计课程和其他相关课程的理论和知识,掌握面向
3、对象程序设计的一般方法、常用技术及技巧,树立良好的软件设计思想,培养分析问题和解决实际问题的能力;2、学会从OOP程序设计的方法及要求出发,认真分析题目,做好总体设计,根据要求科学地设计包、类、接口等,正确设计算法,合理安排界面,规范开发过程,仔细调试程序,做好设计总结;3、充分利用互联网资源,提高学生获取知识,实践知识的能力。二、 课程设计内容1、 基于数据库的管理信息系统设计及实现如: 学籍管理系统; 成绩管理系统; 学生学习、生活管理系统; 学生就业信息管理系统;图书管理系统; 超市商品管理系统;汽车租赁管理系统; 药店管理系统;游泳馆售票管理系统; 计算机维修店管理系统等。 主要设计内
4、容:根据题目需求进行数据库设计,软件结构设计、软件功能设计,软件主要功能:主界面设计;信息的录入/增加、删除、修改、查找、统计及业务功能实现设计等。2、记事本程序设计及实现记事本程序主要设计内容:菜单设计,记事本各功能项的实现。计算器程序:界面设计,各种计算功能的实现。3、网络通讯软件或游戏软件设计注:以上3类题目任选其一或自选其它题目(必须由指导老师审核批准)。三、 时间及任务安排序号完成内容时间1设计准备(查阅文献、资料、确定方案)1天2总体设计2天3详细设计、编码、调试5天6编写设计报告书1.5天7验收和答辩0.5天8合计10天四、 基本要求1、 根据题目做好总体设计、详细设计;2、 列
5、出程序中的主要类(包括类中的成员变量、类变量和主要方法)、接口或画出类图等;3、 编写程序,调试、运行程序;4、 能够积极上网查询所需资料;5、 提交设计报告书,可以选择打印和手写;6、 设计报告书要求A4幅面,如果采用打印稿,正文采用5号宋体;7、 答辩。五、课程设计报告内容要求:1. 格式见“模板”2报告内容: 1)系统描述:介绍开发的系统的功能和解决的问题; 2)分析与设计 功能模块划分; 数据库结构描述; 系统详细设计文档(类的划分及相互关系、接口设计等) 各个模块的实现方法描述;3)源代码:符合Java编码规范;4)运行结果截图5)参考文献:参考文献的书写格式要符合如下规范;a.期刊
6、文献书写格式:作者论文篇名J期刊名出版年,卷(期b.著作文献书写格式:作者书名M出版地:出版社,出版年六、验收及成绩评定验收方式:检查程序运行、程序实现功能情况及答辩。成绩评定:结合设计表现(30%)、设计报告(成果质量等)(40%)和答辩情况(30%)按优秀、良好、中等、及格、不及格给出成绩。目录一 系统描述1二 系统分析与设计12.1 需求分析12.1.1性能要求12.1.2灵活性要求12.1.3故障处理要求12.1.4其他要求12.2 功能模块图22.3 数据库设计2三 主要源代码33.1添加图书33.2修改图书43.3删除图书53.4删除管理员63.5删除学生73.6功能选择83.7归
7、还图书103.8借阅图书113.9登录界面123.10增加管理员143.11增加学生153.12学生查找图书163.13显示图书信息173.14查找系统183.15连接数据库19四 运行结果截图25五 设计总结28六 参考文献29一 系统描述图书管理系统是针对图书的增删改查以及用户的增删进行管理的软件。分为管理和学生用户。其中管理员具有增加、删除、修改、借出、归还图书,新建用户、新建管理员、删除用户、删除管理员的权限;用户只有查看想要借阅的书是否存在以及所剩数量的权限。二 系统分析与设计2.1 需求分析2.1.1性能要求功能服务部分:用户输入后,从提交命令到返回结果不超过5秒钟。数据库管理部分
8、:从提交一次记录到结果返回显示不超过5秒钟。当资源不能满足借阅需求时,应首先给予提示,不应该陷入无限死循环。2.1.2灵活性要求数据库的设计应考虑可扩充性。以便以后图书管的管理。2.1.3故障处理要求正常使用时不应该出错,若运行时遇到不可恢复的系统错误,也必须保证数据库的完整性。在系统出错后,应能恢复原来备份的数据库。 2.1.4其他要求安全性:不同的用户具有不同的使用权限,具有最高权限的是图书管理员能修改注销数据库中的信息,具有一般权限的用户只能读取与自己相关的内容。一致性:系统数据要保持一致性、准确性、当某一数据库中的记录发生改变时,与之相关的数据库也会随着变化。可靠性:必须对数据库及时备
9、份与恢复。易操作性:在系统中提供提示,便于用户操作使用。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值tsnamenchar(10)不允许tsnumint不允许kucunshuliangnchar(10)不允许chubanshe int不允许 表2.3.4用户借阅图书信息表列名数据类型允许Null值tsnamenchar
10、(10)不允许tsnumnchar(10)不允许三 主要源代码3.1添加图书class addSystem extends JFrame implements ActionListenerJDialog dialog;JTextField tF1=new JTextField();JTextField tF2=new JTextField();JTextField tF3=new JTextField();JTextField tF4=new JTextField();sql dac = new sql();/构造方法,从其调用方法中获得对话框的父窗口addSystem(JFrame f)di
11、alog=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(出版社:,Swin
12、gConstants.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
13、.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(取消)System.exit(0);3.2修改图书class changeSystem ext
14、ends JFrame implements ActionListenerJDialog 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);
15、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(
16、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); 3.3删除图书public
17、 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
18、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(
19、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(thi
20、s, 删除成功n);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(请输入要删
21、除管理员密码); 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
22、.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.showM
23、essageDialog(this, 删除成功n);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)
24、; 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 Au
25、to-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);3.6功能选择public class gongnengxuanze extends JFrame implements ActionListe
26、nerJFrame f=null;public gongnengxuanze() /构造方法f=new JFrame(图书馆管理系统);/创建一个顶层容器 Container cp=f.getContentPane();/创建窗体的内容面板 cp.setLayout(new FlowLayout(FlowLayout.CENTER,60,90);JPanel buttonPanel=new JPanel();/创建一中间容器JPanelJButton b=new JButton(新建管理员);/创建一原子组建-按钮JButton a=new JButton(新建学生);b.addActionL
27、istener(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,
28、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(借书); J
29、MenuItem 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(regi
30、st7); JMenu sys=new JMenu(系统); JMenuItem exit=new JMenuItem(退出系统); sys.add(exit); mBar.add(selection); mBar.add(sys); f.setJMenuBar(mBar);/为窗体增加菜单 f.setJMenuBar(mBar); regist.addActionListener(this);/为菜单添加时间监听器 regist1.addActionListener(this); regist2.addActionListener(this); regist3.addActionListen
31、er(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); )
32、; 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(
33、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(); public static void main(String args)new gongnengxuanze();3.7归还图书pub
34、lic class huanshu extends JFrame implements ActionListenerJLabel 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(请
35、输入还书数量); 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.setL
36、ayout(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 自动生成的方法存根 new huanshu();Overridepublic void actionPerformed(ActionEvent e) / TODO 自动生成的方
37、法存根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 ActionListenerJLabel jl1,jl2;JTextField jtf1,jtf2;JButton
38、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
39、_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 自动生成的方法存根 new jieyue();Overridepublic 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