2022年JAVA_课程设计报告.pdf
JAVA_ 课程设计报告JAVA 程序设计课程设计报告设计题目 : 学生信息管理系统学院名称 : 信息工程学院专业班级 : 13 计本 1 姓名: 学号: 目录一 需求分析。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。3 二 概要设计。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。3 三 详细设计。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。3 3、1 数据库设计。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。3 3、2 模块及窗体设计。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。3 3、2、1 数据库模块设计。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。3 3、2、2 用户登录识别模块。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。5 3、2、3 用户信息管理模块。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。6 (1) 密码修改 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。6 (2)用户信息添加与删除。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。8 3、2、4 学生息管理模块。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。10 (1)添加信息 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。10 (2)信息查瞧 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。11 (3)信息修改 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。12 (4)删除信息 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。14 3、2、5 系统管理模块 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。15 3、2、6 主窗体菜单设计。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。15 四 软件测试。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。15 五 总结。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。15 参考资料 :.17 一 需求分析本系统的主要目的就就是实现学生信息管理,使学生信息管理工作更加容易,从而提高工作效率 ,降低管理成本、系统中需要对拥护身份进行管理,采取登陆进入系统的形式、二 概要设计/* 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 16 页 - - - - - - - - - - JAVA_ 课程设计报告概要设计阶段主要就是粗略描述整个软件的框架,并从业务的角度描述软件的模块、工作流程等。项目的成功取决于设计的好坏,而概要设计则就是整个设计的关键部分。概要设计的主要任务就是将用户的需求划分为不同的功能,然后将这些功能细分成模块,并给模块一些规则约束 ,以达到各个模块之间可以相互交流的目的。概要设计关乎到系统的整体架构,因此想做好一个概要设计,不仅仅要熟悉用户的业务流程,还要具备相当丰富的设计经验。2、1 概要设计的原则概要设计就是根据系统分析的需求与工作环境的情况对整个软件的总体结构进行大致的设计。概要设计要坚持以下几个原则。(1)细分原则 :软件系统都就是由很多不同的模块组成,当设计一套软件时,要先将所有的功能分解。解决复杂问题的方法就是将其分解成几个小问题,一个个来解决。(2)提高代码重用性:在面向对象设计中,首先考虑的就就是代码的重用,一个好的设计,将来在升级换代时不需要太大的改动,节省了人力物力。(3)从上而下层层分析:概要设计要从整体出发,逐个剖析软件的功能,从上而下 ,先分析系统总的功能 ,然后一步步细分,直到最小的功能模块。(4)一致性原则 :概要设计要求所有功能模块在定义时使用统一的规范。(5)提高独立性 ,减少耦合 :各个模块与模块之间尽量减少关联,否则修改一个地方就会引起其她多处的变动,不符合面向对象的原则。一般情况下,对类封装后 ,只允许对类进行扩展,而不能修改 ,而封装的类必须具有单一职责,既理论情况下不允许两个类共同完成一个功能。(6)模块的大小要尽量适中:不就是结构算法越复杂的模块越好,模块的大小要根据实际工作目标与其她类的耦合紧密程度来决定。经验表明,一个模块的规模不应过大,模块的总行数应控制在10100 行的范围内 ,最好为3060 行,这样理解与阅读都较方便。过长的模块往往就是分解不充分的表现,会增加阅读理解的难度;但小规模太多也会使模块之间联系变得复杂,增大系统在模块调用时传递信息所花费的开销。由于概要设计就是整个设计的重中之重,牵一发而动全身,所以要努力做一个好的概要设计,才能在今后软件开发过程中不再反复。现在软件行业流行模式化驱动设计,将一些市场上比较成功的模式拿来用在自己的设计中。2、2 将用户需求模块化根据概要设计的原则来分析一下本项目的用户需求,并最终转化成用程序语言描述的模块。什么样的需求才就是一个模块?模块应该具备如下3 个特征。(1)输入与输出:模块必须能被调用并且正确的返回调用,而且调用都就是相对一个对象而言 ,这就是模块独立性的一个体现。(2)处理功能 :模块必须可以对调用的输入数据进行灵活的处理,并为输出准备好处理结果。(3)程序代码 :用来实现模块功能的源代码。3、3 确定系统最终模块概要设计中最重要的就就是确定此项目包括哪些模块。根据上两节讲述的设计原则与模块特征 ,将用户需求转化为下面的模块。*/ 2、1 UML用例图1 用户登录信息管理2 用户信息管理精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 16 页 - - - - - - - - - - JAVA_ 课程设计报告学生信息管理系统管理2、2 模块设计1 数据库设计模块2 用户登录识别模块3 用户信息管理模块4 学生信息管理模块5 系统管理模块三 详细设计3、1 数据库设计数据库名称 :student 表名 :user, stud 表 user:存放登陆用户的用户名与密码表 stud:存放学生基本信息学生表 (stus) 字段名类型备注stusID Varchar(30) 学生 id stuName Nvarchar(50) Not null stuSex Nchar(1) 性别男 或者 女 stuAge int 年龄0 stuDept Nvarchar(30) 所在系3、2 模块及窗体设计3、2、1 数据库模块设计将数据库的连接包装在一个database类中,以便其她模块能够轻松调用,避免每次重写数据库系统首页用户登陆信息管理用户信息管理学生信息管理通过身份请求添加删除用户修改密码添加查瞧修改删除系统管理重新登陆退出登陆精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 16 页 - - - - - - - - - - JAVA_ 课程设计报告连接代码。下表就是她的基本属性文件名成员变量成员方法database、java public static Connection cn; public static Statement st; public static ResultSet rs; public static boolean joinDB() public static boolean executeSQL(String sqlString) public static boolean query(String sqlString) 代码如下 : import java 、sql、*;/ 引入包public class database public static Connection cn; / 定义一个连接对象public static Statement st;/ 定义一个 SQL 语句对象public static ResultSet rs;/ 定义一个数据集public static boolean joinDB() /用来判断就是否连接成功boolean joinFlag; try joinFlag = true; Class、forName(sun、jdbc、odbc、JdbcOdbcDriver);/ 通过调用java、lang 中的 Class类的 forName 方法来实现JDBCODBC 桥接器cn = DriverManager 、getConnection(jdbc:odbc:student,sa,);创建一个连接对象cn、setCatalog(student);/ 加载数据库System、out、println( 数据库连接成功); st = cn、createStatement(ResultSet、TYPE_SCROLL_SENSITIVE, ResultSet、CONCUR_READ_ONL Y); /返回一个可滚动的结果集,数据库变化时结果集跟着变化;不能用结果集更新数据库中的表return joinFlag; catch (SQLException sqlEx) System、out、println(sqlEx 、getMessage(); joinFlag = false; return joinFlag; catch (ClassNotFoundException notfoundEX) System、out、println(notfoundEX 、getMessage(); joinFlag = false; return joinFlag; public static boolean executeSQL(String sqlString) boolean executeFlag; try st、execute(sqlString); executeFlag = true; catch (Exception e) executeFlag = false; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 16 页 - - - - - - - - - - JAVA_ 课程设计报告System、out、println(sql exception: + e 、getMessage(); return executeFlag; public static boolean query(String sqlString) try rs = null; rs = st、executeQuery(sqlString); catch (Exception Ex) System、out、println(sql exception: + Ex); return false; return true; 3、2、2 用户登录识别模块代码封装在类Land 里,所用到的信息保存在表user 里下表就是她的基本属性文件名控件成员方法Land、java JLabel:labelname=newJLabel( 用户名 ) labelmima=new JLabel( 密码 ) Jbutton: btenter=new JButton( 确定 ); btcancel=new JButton( 清空); private void Judge(String sqlString) 判断用户名与密码就是否正确的成员方法代码: private void Judge(String sqlString) if (database、joinDB() /如果数据库连接成功if (database、query(sqlString) /如果 SQL 语句执行成功try if(database、rs、isBeforeFirst() / 如果指向记录集的在第一条记录的前面精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 16 页 - - - - - - - - - - JAVA_ 课程设计报告System、out、println( 密码正确 ); jf、 setVisible(false);/ 窗体不可见database 、cn、close();/关闭数据库连接new Main();/ 主窗体 else System、out、println( 错误 ); new JOptionPane() 、showMessageDialog(null,用户名或密码错误!,JOptionPane 、ERROR_MESSAGE); catch(Exception ex) System、out、println(ex 、 getMessage(); else System、out、println( 连接数据库不成功!); 按钮“确定”的监听事件代码: public void actionPerformed (ActionEvent e) if(textname、 getText()、equals() new JOptionPane()、showMessageDialog(null, 用户名不能为空!); else if(textmima 、getText()、equals() new JOptionPane()、showMessageDialog(null, 密码不能为空!); else String sql=select * from user where user_id = + textname、getText() + and password = + textmima 、getText()+ ; System、out、println(sql); Judge(sql);/调用成员方法 ,判断就是否用户名与密码正确 3、2、3 用户信息管理模块(1) 密码修改精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 16 页 - - - - - - - - - - JAVA_ 课程设计报告用户名将自动从表user里检索出来 ,供用户选择以下就是它的基本属性文件名控件名称xgmima、java Jlabel: lbe2、lbe3、lbe4、lbe5 jTextField: tf JpasswordField:pas1、pas2、 pas3 Jbutton: b1=new JButton( 提交 ); b2=new JButton( 退出 ); 将所有用用户名读出来database 、joinDB();/ 连接数据库String sql=select * from user; try if(database、query(sql) while(database、 rs、next()/ 依次将用户名读出String name=database、rs、getString(user_id); tf、addItem(name); catch(Exception e) 确定“按钮”的监听事件代码: b1、addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String name= + tf 、getSelectedItem(); System、out、 println(name); String sql=select * from user where user_id=+ name +; System、out、 println(sql); try if(database、query(sql) database 、rs、next(); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 16 页 - - - - - - - - - - JAVA_ 课程设计报告String ps1=pas1、getText(); String password=database、rs、getString(Password); if(ps1、equals(password) if(pas2、getText()、equals(pas3、 getText() String supdate=update user set password=+ pas3、getText()+ where user_id=+ name +; database 、executeSQL(supdate); new JOptionPane()、showMessageDialog(null, 密码更改成功!); else new JOptionPane()、showMessageDialog(null, 两次密码不同!); else new JOptionPane()、showMessageDialog(null, 旧密码不正确!); catch(Exception el) System、out、println(el); ); (2)用户信息添加与删除上半部分用来添加用户,下半部分用来删除用户基本属性如下文件名控件名AddDeleteUser 、java private JButton butACancel,butDCancel,butDelete,butOk; private JComboBox cbUserName; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 16 页 - - - - - - - - - - JAVA_ 课程设计报告private JLabel jLabel1,jLabel2,jLabel3,jLabel4,jLabel5; private JPasswordField pas1,pas2,pas3; private JTextField txtname; /将所有用用户名读出来database 、joinDB(); String sql=select * from user; try if(database、query(sql) while(database、 rs、next()/ 记录集若有记录则通过循环将数据依次读出String name=database、rs、getString(user_id); cbUserName、addItem(name); catch(Exception e) /为添加按钮加事件- butOk、addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if(txtname 、getText()、equals() /判断就是否为空new JOptionPane()、showMessageDialog(null, 用户名不能为空!); else if(pas1、getText()、equals() new JOptionPane()、showMessageDialog(null, 密码不能为空!); else if(pas1、getText()、equals(pas2、getText() String sql=insert into user values(+ txtname 、getText() +,+ pas1 、getText() +); try if(database、executeSQL(sql)/ 若 SQL 执行成功new JOptionPane()、showMessageDialog(null, 添加成功! ); cbUserName、addItem(txtname 、 getText(); catch(Exception ea) ); 删除按钮监听事件代码butDelete、addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String name= + cbUserName 、getSelectedItem();/ 得到用户名String sql=select * from user where user_id=+ name +; try if(database、query(sql) database 、rs、next(); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 16 页 - - - - - - - - - - JAVA_ 课程设计报告String pas=pas3、getText(); String password=database、rs、getString(Password); System、out、println(password); if(pas、equals(password)/ 比较密码就是否与记录集里对应一致String sdelete=delete from user where user_id=+ name +; if(database、executeSQL(sdelete) new JOptionPane()、showMessageDialog(null, 删除成功! ); pas3、setText(); cbUserName、removeAllItems();/ 将删除的条目从JcomboBox 中删除String sql1=select * from user; if(database、query(sql1) while(database、rs、next()/ 更新 JcomboBox 条目String name1=database、 rs、 getString(user_id); cbUserName、 addItem(name1); else new JOptionPane()、showMessageDialog(null, 密码不正确!); catch(Exception el) System、out、println(el); ); 3、2、4 学生信息管理模块(1)添加信息该添加就是按照先添加学生信息,添加学生信息中的“添加“按钮代码: 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 16 页 - - - - - - - - - - JAVA_ 课程设计报告butOk、addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if(jtf1 、getText()、equals() new JOptionPane()、showMessageDialog(null, 学号不能为空); else if(jtf2 、getText()、equals() new JOptionPane()、showMessageDialog(null, 姓名不能为空); else if(jtf3 、getText()、equals() new JOptionPane()、showMessageDialog(null, 性别不能为空); else String sql=insert into stud values(+ jtf1 、getText() +,+ jtf2 、getText() +,+ jtf3 、getText() +,+ jtf4 、 getText()+,+ jtf5 、 getText()+,+ jtf6 、 getText()+,+ jtf7 、 getText()+); try if(database、executeSQL(sql) new JOptionPane()、showMessageDialog(null, 添加成功! ); catch(Exception ea) ); (2)信息查瞧分为查瞧学生基本信息与查瞧学生成绩信息,因为代码与窗体大致相识,进取其一讲述下面就是她的属性文件名称控件名称viewstud、java JtextArea:te=new JTextArea(); 代码为 : class viewstud extends JInternalFrame 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 16 页 - - - - - - - - - - JAVA_ 课程设计报告 viewstud() super( 查瞧学生基本信息);/ 窗体显示得名称Container con=getContentPane();/ 创建 JinternalFrame 的容器对象con、setLayout(new BorderLayout();/ 设定窗体布局JTextArea te=new JTextArea(); JScrollPane croll=new JScrollPane(te); / 加载垂直水平滚动条con、add(croll,BorderLayout 、CENTER); database 、joinDB(); / 连接数据库String sql=SELECT * FROM stud; try if(database 、query(sql) while(database、rs、next() te、append(学号: +database、 rs、 getString(1)+ ); te、append(姓名: +database、 rs、 getString(2)+ ); te、append(性别: +database、 rs、 getString(3)+ ); te、append(年龄: +database、rs、getString(4)+ ); te、append(政治面貌 :+database、rs、getString(5)+ ); te、append(系别: +database、rs、getString(6)+ ); te、append(班级: +database、rs、getString(7)+ ); te、append(n); catch(SQLException ex) System、out、println(ex); this、setClosable(true);/关闭窗口可用setVisible(true);/ 窗体可见setBounds(20,70,600,350); (3)信息修改信息修改分为学生基本信息修改,学生成绩信息修改,由于原理相似就以修改学生基本信息作为例子进行介绍下面就是她的属性信息文件名称控件名称xiugai、java private JButton butCancel,butOk,butShow; private JLabel jLabel1,jLabel2,jLabel3,jLabel4,jLabel5,jLabel6,jLabel7; private JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6,jtf7; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 16 页 - - - - - - - - - - JAVA_ 课程设计报告显示信息按钮的监听事件代码如下: database 、joinDB(); butShow、addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if(jtf1 、getText()、equals() new JOptionPane()、showMessageDialog(null, 请输入学号 ); else String sql=select * from grade where 学号 = + +jtf1 、getText() +; try if(database、query(sql)/ 此处用了个database 、 executeSQL(sql)提示 resultset 关闭if(!database、rs、first() JOptionPane、showMessageDialog(null, 没有该学生信息、 、 、); /下面就是用来显示其她文本框里的内容else database 、rs、first(); jtf2 、setText(database 、 rs、 getString(VBA开发 ); jtf3 、setText(database 、 rs、 getString( 大学英语 ); jtf4 、setText(database 、 rs、 getString(java 开发 ); jtf5 、setText(database 、 rs、 getString(SQLServer); jtf6 、setText(database 、 rs、 getString( 高等数学 ); jtf7 、setText(database 、 rs、 getString( 网站建设 ); butOk、setEnabled(true); catch(NullPointerException upe) System、out、println(upe 、toString(); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 16 页 - - - - - - - - - - JAVA_ 课程设计报告catch(SQLException sqle) System、out、 println(sqle 、toString(); catch(Exception ex) System、out、 println(ex 、toString(); ); (4)删除信息删除学生信息下面就是窗口属性文件名称控件名称shanchu、java private JButton butCancel,butOk; private JLabel jLabel1; private JTextField jtf1; private JPanel p; butOk=new JButton( 删除 ); butCancel=new JButton( 清空 ) 删除按钮监听事件代码如下: butOk、addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if(jtf1 、getText()、equals() new JOptionPane()、showMessageDialog(null, 请输入学号 ); else String sql=select * from stud where 学号 = + +jtf1 、getText() +; try if(database、query(sql)/ 此处用了个database 、 executeSQL(sql)提示 resultset 关闭if(!database、rs、first() JOptionPane、showMessageDialog(null, 没有该学生信息、 、 、 ); else String sqq=delete from stud where 学号 = +jtf1 、getText() +; String qll=delete from grade where 学号 =+jtf1 、getText() +; String slq=select * from grade where 学号 =+jtf1 、getText()+; if(database、query(slq) if(database、rs、first()if(database 、executeSQL(qll) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 16 页 - - - - - - - - - - JAVA_ 课程设计报告if(database、executeSQL(sqq)JOptionPane 、showMessageDialog(null, 删除成功 ); 3、2、5 系统管理模块重新登陆监听事件代码: land、addActionListener(new ActionListener()/重新登陆监听public vo