为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

图书管理系统

2017-09-19 19页 doc 171KB 761阅读

用户头像

is_105949

暂无简介

举报
图书管理系统软 件 学 院 课程设计报告书 课程名称         面向对象程序设计              设计题目           图书信息管理                  专业班级                               学    号                              姓    名                                  指导教师                                  2010 年 12 月 目  录 1 设计...
图书管理系统
软 件 学 院 课程报告书 课程名称         面向对象程序设计              设计题目           图书信息管理                  专业班级                               学    号                              姓    名                                  指导教师                                  2010 年 12 月 目  录 1 设计时间……………………………………………………1 2 设计目的……………………………………………………1 3 设计任务……………………………………………………1 4 设计内容……………………………………………………1 4.1概要设计………………………………………………1 4.1.1 体系结构设计……………………………………1 4.1.2 数据库设计……………………………………….2 4.2自定义类及接口说明…………………………………2 4.2.1登录模块…………………………………………2 4.2.2 图书查询模块……………………………………………3 4.2.3 图书删除模块…………………………………………3 4.2.4 图书更改模块…………………………………………3 4.2.5图书入库模块……………………………………………4 4.2.6图书显示模块…………………………………………4 4.3 程序源码及运行与调试……………………………… …4 4.3.1 程序源码………………………………………………4 4.3.2 运行界面………………………………………………13 4.3.3 错误调试………………………………………………14 5 总结与展望……………………………………… ……………16 参考文献………………………………………… ………………17 1 设计时间 2010年12月20日—2010年12月31日 2 设计目的 《面向对象程序设计课程设计》的教学目的是培养学生软件系统开发方案综合设计能力和创新精神。在教师的启发和引导下,学生能自主地进行科技文献检索,进行方案设计、编写代码、调试程序,对方案进行综合分析与评述等。 3设计任务 (1)使用图形用户界面实现。 (2)该应用程序面向的使用者是图书管理员。 (3)图书信息包括:书ISBN号、书名、作者、出版时间、出版社,其余可自行丰富。 (4)用数据库建立1或2个图书信息表(不限使用哪种数据库)。 (5)能连接数据库并实现对相关信息的录入、查询、修改、删除等功能,相关界面要用GUI完成。查询要求按书号或书名查询;修改、删除图书信息必须输入书号,然后对书名、作者、出版社等进行修改,或对该条记录进行删除。 (6)系统使用的GUI组件不得少于5种,越全面越好,但要合适(和谐界面)。 4 设计内容 4.1 概要设计 4.1.1 体系结构设计 1  程序分析与说明 图书入库的实现:该模块输入图书的各种信息,如果录入成功则出现对话框,显示录入成功。 图书查询的实现:该模块以输入图书号来查询图书信息,图书信息包括图书名、图书号、作者、出版社和出版时间. 图书删除的实现:该模块以图书名来进行删除。首先,输入图书名,点击删除,如果 删除成功则出现对话框,显示删除成功。 图书更改的实现:该模块以输入图书号来进行更改。首先,输入图书数据库中已有的 图书名,然后输入要更改的信息,点击更新则更改。     图书显示的实现:该模块显示数据库中所有的图书的信息。 2  系统功能结构图 图书管理 身份验证 图书入库 显示 图书更改 图书查询 图书删除 管理模块 登录模块     图4-1 4.1.2 数据库设计    表4-1 tushu1          列名 数据类型 长度 允许空 Isbn char 40 √ Shuming char 40 √ zuozhe char 16 √ Cbtime char 20 √ cbshe char 40 √ 表4-2 huiyuan 列名 数据类型 长度 允许空 id char 8 ps char 8 4.2自定义类及接口说明 4.2.1登录模块 (1)类名:Deng (2)父类:JFrame (3)作用:用户的身份验证 (4)主要成员变量: JButton jb,jb1;              //定义各按钮 JTextField jtf;            //定义文本行 JPasswordField ps;          //定义密码输入文本行 JLabel jl,jl1,jl2             //定义各个标签 (5)主要成员方法: public Deng()              //初始化各部件定义和事件监听设置显示窗口的布局 4.2.2 图书查询模块 (1)类名:MySQLChaxun (2)父类:JFrame (3)作用:查询图书信息 (4)主要成员变量: JTextField jtf;            //定义文本行 JLabel jl;                 //定义标签 JTextArea jta;            //定义文本区 JButton jb,jb1              //定义各个按钮 (5)主要成员方法: MySQLChaxun()          //初始化各部件定义和事件监听设置显示窗口的布局 4.2.3 图书删除模块 (1)类名:MySQLDel (2)父类:JFrame (3)作用:删除图书信息 (4)主要成员变量: JTextField jtf;                //定义文本行 JLabel jl;                    //定义标签 JButton jb,jb1                 //定义各个按钮 (5)主要成员方法: MySQLChaDel()              //初始化各部件定义和事件监听设置显示窗口的布局 4.2.4 图书更改模块 (1)类名:MySQLGeng (2)父类:JFrame (3)作用:更改图书信息 (4)主要成员变量: JTextField jtf1, jtf2, jtf3, jtf4,jtf0;      //定义各个文本行 JLabel jl1, jl2, jl3, jl4,  jl0;          //定义各个标签 JButton jb,jb1;                    //定义各个按钮 (5)主要成员方法: MySQLChaGeng()                  //初始化各部件定义和事件监听设置显示窗口的布局 4.2.5图书入库模块 (1)类名:MySQLInsert (2)父类:JFrame (3)作用:添加新的图书信息 (4)主要成员变量: JTextField jtf1, jtf2, jtf3, jtf4,jtf0;    //定义各个文本行 JLabel jl1, jl2, jl3, jl4,  jl0;          //定义各个标签 JButton jb,jb1;                    //定义各个按钮 (5)主要成员方法: MySQLInsert ()          //初始化各部件定义和事件监听设置显示窗口的布局 4.2.6图书显示模块 (1)类名:MySQCha (2)父类:JFrame (3)作用:显示图书信息 (4)主要成员变量: JTextArea jta;                //定义文本区 JButton jb,jb1;              //定义各个按钮 (5)主要成员方法: MySQLCha ()               //初始化各部件定义和事件监听设置显示窗口的布局 .. 4.3 程序源码及运行与调试 4.3.1 程序源码 1登录 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class Deng extends JFrame {     JButton jb;     JTextField jtf;     JPasswordField ps;     JLabel jl,jl1,jl2;     static Statement st;     static{         try         {             Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");             String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tushu";             String user = "sa";             String password = "123";             Connection conn = DriverManager.getConnection(url, user, password);             st=conn.createStatement();         }         catch (Exception e) {}     }     public Deng(){         jtf=new JTextField(8);         ps=new JPasswordField(8);         jb=new JButton("确定");         jb.addActionListener(new Mysql());         jl=new JLabel("登录名称");         jl1=new JLabel("用户密码");         jl2=new JLabel("欢迎登录图书管理系统 ");         Container container =getContentPane();         JPanel p = new JPanel();         JPanel jp = new JPanel();         jp.add(jl2);         jp.setVisible(true);         p.add(jp);         jp = new JPanel();         jp.add(jl);         jp.add(jtf);         p.add(jp);         jp = new JPanel();         jp.add(jl1);         jp.add(ps);         jp.setVisible(true);         p.add(jp);         jp = new JPanel();         jp.add(new JLabel("                                  "));         jp.add(jb);         jp.add(new JLabel("                "));         jp.add(new JLabel("                "));         jp.setVisible(true);         p.add(jp);         container.add(p);     setTitle(" 登陆窗口");     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     setSize(300, 250);     setLocation(350,350);     setVisible(true);     }class Mysql implements ActionListener{         public void actionPerformed(ActionEvent e){             try{                 String str1 = jtf.getText().trim();                   String str2 = ps.getText().trim();                 String s="use tushu select * from huiyuan";             ResultSet rs=st.executeQuery(s);//获得结果集             while(rs.next()){                 if(rs.getString(1).equals (str1)&&                         rs.getString(2).equals(str2))                         {                     dispose();                     b ms=new b();                     break;                         }             }             rs.close();}                     catch (Exception ee)    {}                         }                     }     public static void main (String args[]){         new Deng();} } 2管理 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class b extends JFrame{ b(){     JPanel p=new JPanel();     JPanel jp=new JPanel();     jb1=new JButton("查询"); jb2=new JButton("显示"); jb3=new JButton("删除"); jb4=new JButton("更新"); jb5=new JButton("添加"); jp.setLayout(new FlowLayout()); jb1.addActionListener(new b1()); jb2.addActionListener(new b2()); jb3.addActionListener(new b3()); jb4.addActionListener(new b4()); jb5.addActionListener(new b5()); Container container =getContentPane(); jp.add(new JLabel("            ")); jp.add(jb1 ); jp.add(new JLabel("查询需要的图书信息 ")); jp.setVisible(true); p.add(jp); jp=new JPanel(); jp.add(new JLabel("        ")); jp.add(jb2 ); jp.add(new JLabel("获得所有图书信息")); jp.setVisible(true); p.add(jp); jp=new JPanel(); jp.add(jb3 ); jp.add(new JLabel("删除图书信息")); jp.setVisible(true); p.add(jp); jp=new JPanel(); jp.add(jb4 ); jp.add(new JLabel("修改图书信息")); jp.setVisible(true); p.add(jp); jp=new JPanel(); jp.add(jb5 ); jp.add(new JLabel("添加图书信息")); jp.setVisible(true); p.add(jp); container.add(p ); this.setTitle("图书管理系统"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(300, 250); this.setLocation(350,350); this.setVisible(true);} JButton jb1,jb2,jb3,jb4,jb5;     class b1 implements ActionListener{         public void actionPerformed(ActionEvent e){             if(e.getSource()==jb1){                 dispose();             MySQLChaxun s1=new MySQLChaxun();                     }         }     }     class b2 implements ActionListener{         public void actionPerformed(ActionEvent e){             if(e.getSource()==jb2){                 dispose();             MySQLCha s2=new MySQLCha();         }             }     }     class b3 implements ActionListener{         public void actionPerformed(ActionEvent e){             if(e.getSource()==jb3){                 dispose()             MySQLDel s3=new MySQLDel();         }         }     }     class b4 implements ActionListener{         public void actionPerformed(ActionEvent e){             if(e.getSource()==jb4){                 dispose();             MySQLGeng s4=new MySQLGeng();         }         }     }     class b5 implements ActionListener{         public void actionPerformed(ActionEvent e){             if(e.getSource()==jb5){                 dispose();             MySQLInsert s5=new MySQLInsert();         }         }     } } class  x{     public static void main (String args[]){         new b();     } } 3 图书入库 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class MySQLInsert extends JFrame{     JTextField jtf1, jtf2, jtf3, jtf4,jtf0; JLabel jl1, jl2, jl3, jl4,  jl0; JButton jb1,jb; static Statement st; static{     try     {         Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");         String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tushu";         String user = "sa";         String password = "123";         Connection conn = DriverManager.getConnection(url, user, password);         st = conn.createStatement();     }     catch (Exception e) {} } public MySQLInsert(){     jtf0 = new JTextField(15);     jtf1 = new JTextField(15);     jtf2 = new JTextField(15);     jtf3 = new JTextField(15);     jtf4 = new JTextField(15);     jl0 = new JLabel("书ISBN号");     jl1 = new JLabel(" 书名");     jl2 = new JLabel(" 作者");     jl3 = new JLabel(" 出版时间");     jl4 = new JLabel(" 出版社");     jb1 = new JButton(" 添加");     jb=new JButton("返回");     Container container =getContentPane();     JPanel jp1 = new JPanel();     JPanel jp= new JPanel();     jp1.setLayout(new GridLayout(5, 2));     jp1.add(jl0); jp1.add(jtf0);     jp1.add(jl1); jp1.add(jtf1);     jp1.add(jl2); jp1.add(jtf2);     jp1.add(jl3); jp1.add(jtf3);     jp1.add(jl4); jp1.add(jtf4);     jp.add(jb1);jp.add(jb);     jb1.addActionListener(new mysql());     jb.addActionListener(new Mysql1());     container.add(jp1, BorderLayout.CENTER);     container.add(jp, BorderLayout.SOUTH);     setTitle("添加窗口");     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     setSize(300, 250);     setLocation(350,350);     setVisible(true); }     class mysql implements ActionListener{         public void actionPerformed(ActionEvent e){             try{ String str1 = jtf1.getText().trim();             String str2 = jtf2.getText().trim();             String str3 = jtf3.getText().trim();             String str4 = jtf3.getText().trim();             String str0 = jtf0.getText().trim(); String sql = "use tushu insert into tushu1(isbn,shuming,zuozhe,cbtime,cbshe) values('" + str0 + "','" + str1 + "','" + str2 + "','" + str3 + "','" + str4 + "');"; st.executeUpdate(sql);    JOptionPane.showMessageDialog(MySQLInsert.this,"数据添加成功","提示对话框",1);     }         catch (Exception ee)    {}             }         }     class Mysql1 implements ActionListener{         public void actionPerformed(ActionEvent e1){             if(e1.getSource()==jb){                 dispose();                 b ms=new b();             }         }             }     public static void main(String args[]){         new MySQLInsert();     } 4.3.2 运行界面                           图4-2 登录界面                         图4-3 管理界面                             图4-4 图书查询界面                             图4-5 图书删除界面                             图4-6 图书入库界面                               图4-7 图书显示界面 4.3.3 错误调试 (1)在MySQLCha类MySQLCha方法中出现定义的按钮jb变为无效的 原因:在程序的开始声明了改按钮,然后再实例化的时候又声明了一遍。 如何解决:将实例化中的JButton (2)在MySQLCha 中的内部类Mysql类actionPerformed方法中出现找不到对象错误。 原因:在sql语句中把与数据库对应的字段名拼写错了 如何解决:把ibsn改成isbn (3)在MySQLCha 中的内部类Mysq类actionPerformed方法中出现找不到数据源错误。 原因:没有引用数据源     如何解决:在sql语句前面加一句use tushu (4)在MySQLCha询中内部类actionPerformed方法中输入图书号却显示处信息 原因:把获取信息的的方法写成了getInt,所以只能显示整型的数据,而数据库中的定义为char型 如何解决:把getInt改成getString (5)在在MySQLCha询中内部类actionPerformed方法中点击按钮返回时返回时,原先的对话框不能关 原因:没有对原来的界面进行处理。 如何解决:原来的界面应该在操作后执行dispose(); (6)在b类中各个组件排列不够整齐 原因:没有把JPanel还有JFrame的默认布局的点 如何解决:设置JPanel的布局 (7)在MySQLCha类actionPerformed方法中判定事件源出现问题。 原因:没有搞清”equals()”和”==”的区别。 如何解决:将”==”改为”equals()”。 (8)在b类中运行后窗体总是出现在左上角 原因:没有设置窗体的坐标 如何解决:添加语句setLocation() 5 总结与展望 经过两个星期的努力,终于完成了这次的课程设计。 通过这次的课程设计,我学到了很多的东西,让我更进一步地了解了Java编程语言,对sql server数据库也有了更进一步的了解。同时也查阅了大量的资料,提高了动手制作能力,同时也体会到了团队的力量是不可缺少的,也提高了团队协作的效率。 通过自己的直接实践积累了项目设计的经验,特别是在与数据库连接的时候,翻查了大量的资料,最终在老师的帮助下,终于连接成功。的解决。还有在解决页面跳转问题时,才能使我的程序更完整。我想以后碰到类似的问题,我会轻松对亏同学帮忙 在实习中培养了我们勇于探索,严谨推理,实事求是,有过必改的学习态度,这在我们今后的学习中,和以后的工作中都是一种很好的工作态度,也是科学技术人员应具有的素质。 在本次的实训设计中,也深深地体会到进行软件开发不是一件简单的事情,它需要设计者具有全面的专业知识、缜密的思维、严谨的工作态度以及较高的分析问题、解决问题的能力,而我在很多方面还有欠缺。只要学习就会有更多的问题,有更多的难点,但也会有更多的收获。     参考文献 [1]刘万军,王松波.Java6程序设计, 北京:清华大学出版社,2009.                          [2]刘正林,周纯杰.Java技术基础,武汉:华中科技大学出版社,2004. [3]朱福喜,尹为民.Java语言与面向对象程序设计,武汉:武汉大学出版社,2002. [4]孙艳春.面向对象程序设计,北京:机械工业出版社,2003. [5] (美)梁著,万波等译, Java语言程序设计基础篇[M] ,第6版,机械工业出版社,2008. 成绩评定 成绩                        教师签字
/
本文档为【图书管理系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索