JAVA-课程设计报告.docx

上传人:牧羊曲112 文档编号:4885613 上传时间:2023-05-21 格式:DOCX 页数:31 大小:203.17KB
返回 下载 相关 举报
JAVA-课程设计报告.docx_第1页
第1页 / 共31页
JAVA-课程设计报告.docx_第2页
第2页 / 共31页
JAVA-课程设计报告.docx_第3页
第3页 / 共31页
JAVA-课程设计报告.docx_第4页
第4页 / 共31页
JAVA-课程设计报告.docx_第5页
第5页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《JAVA-课程设计报告.docx》由会员分享,可在线阅读,更多相关《JAVA-课程设计报告.docx(31页珍藏版)》请在三一办公上搜索。

1、JAVA程序设计课程设计报告设计题目:学生信息管理系统学院名称:信息工程学院专业班级:13计本1姓 名:学 号:目录一需求分析3二概要设计3三详细设计33.1数据库设计33.2模块及窗体设计。33.2.1数据库模块设计 33.2.2用户登录识别模块 53.2.3用户信息管理模块 6(1)密码修改6(2)用户信息添加和删除,83.2.4学生息管理模块10(1)添加信息10(2)信息查看11(3)信息修改12(4)删除信息143.2.6主窗体菜单设计 15四软件测试15五总结15参考资料:17一需求分析本系统的主要目的就是实现学生信息管理使学生信息管理工作更加容易,从而提高工作效 率,降低管理成本

2、.系统中需要对拥护身份进行管理,采取登陆进入系统的形式二概要设计/*概要设计阶段主要是粗略描述整个软件的框架,并从业务的角度描述软件的模块、工作 流程等。项目的成功取决于设计的好坏,而概要设计则是整个设计的关键部分。概要设计的 主要任务是将用户的需求划分为不同的功能,然后将这些功能细分成模块,并给模块一些规 则约束,以达到各个模块之间可以相互交流的目的。概要设计关乎到系统的整体架构,因此 想做好一个概要设计,不仅仅要熟悉用户的业务流程,还要具备相当丰富的设计经验。2.1概要设计的原则概要设计是根据系统分析的需求和工作环境的情况对整个软件的总体结构进行大致的 设计。概要设计要坚持以下几个原则。(

3、1)细分原则:软件系统都是由很多不同的模块组成,当设计一套软件时,要先将所 有的功能分解。解决复杂问题的方法是将其分解成几个小问题,一个个来解决。(2)提高代码重用性:在面向对象设计中,首先考虑的就是代码的重用,一个好的设 计,将来在升级换代时不需要太大的改动,节省了人力物力。(3)从上而下层层分析:概要设计要从整体出发,逐个剖析软件的功能,从上而下, 先分析系统总的功能,然后一步步细分,直到最小的功能模块。(4)一致性原则:概要设计要求所有功能模块在定义时使用统一的规范。(5)提高独立性,减少耦合:各个模块与模块之间尽量减少关联,否则修改一个地方 就会引起其他多处的变动,不符合面向对象的原则

4、。一般情况下,对类封装后,只允许对类 进行扩展,而不能修改,而封装的类必须具有单一职责,既理论情况下不允许两个类共同完 成一个功能。(6)模块的大小要尽量适中:不是结构算法越复杂的模块越好,模块的大小要根据实 际工作目标和其他类的耦合紧密程度来决定。经验表明,一个模块的规模不应过大,模块的 总行数应控制在1010 0行的范围内,最好为306 0行,这样理解和阅读都较方便。过长 的模块往往是分解不充分的表现,会增加阅读理解的难度;但小规模太多也会使模块之间联 系变得复杂,增大系统在模块调用时传递信息所花费的开销。由于概要设计是整个设计的重中之重,牵一发而动全身,所以要努力做一个好的概要设 计,才

5、能在今后软件开发过程中不再反复。现在软件行业流行模式化驱动设计,将一些市场上比较成功的模式拿来用在自己的设计中。2.2将用户需求模块化根据概要设计的原则来分析一下本项目的用户需求并最终转化成用程序语言描述的模 块。什么样的需求才是一个模块?模块应该具备如下3个特征。(1)输入和输出:模块必须能被调用并且正确的返回调用,而且调用都是相对一个对 象而言,这是模块独立性的一个体现。(2)处理功能:模块必须可以对调用的输入数据进行灵活的处理,并为输出准备好处 理结果。(3)程序代码:用来实现模块功能的源代码。3.3确定系统最终模块概要设计中最重要的就是确定此项目包括哪些模块。根据上两节讲述的设计原则和

6、模块 特征,将用户需求转化为下面的模块。*/2.1 UML用例图1用户登录信息管理2用户信息管理 3学生信息管理4系统管理2.2模块设计1数据库设计模块2用户登录识别模块4学生信息管理模块5系统管理模块三详细设计3.1数据库设计数据库名称:student表名:user, stud表user :存放登陆用户的用户名和密码表stud :存放学生基本信息学生表(stus)字段名类型备注stusIDVarchar(30)学生idstuNameNvarchar(50)Not nullstuSexNchar(1)性别男或者女stuAgeint年龄0stuDeptNvarchar(30)所在系3.2模块及窗

7、体设计3.2.1数据库模块设计将数据库的连接包装在一个database类中,以便其他模块能够轻松调用,避免每次重写数据库连接代码。下表是他的基本属性文件名成员变量成员方法database.javapublic static Connection cn;public static Statementst;public staticResultSet rs;public static boolean joinDB()public static boolean executeSQL(StringsqlString)public static boolean query(String sqlStrin

8、g)代码如下: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

9、.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_ONLY);/返回一个可滚动的结果集,数据库变化时结果集跟着变化;不能用结果集更新数据 库中的表return joinF

10、lag; 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

11、st.execute(sqlString);executeFlag = true; catch (Exception e) executeFlag = false;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:

12、 + Ex);return false;return true;3.2.2用户登录识别模块代码封装在类Land里,所用到的信息保存在表user里下表是他的基本属性文件名控件成员方法Land.javaJLabel:labelname=newJLabel(用户 名)labelmima二new JLabel(密码)Jbutton: btenter=new JButton(确定);btcancel = new JButton(清空);private voidJudge(StringsqlString)判断用户名和密码是否正确的成员方法代码: private void Judge(String sqlS

13、tring) (if (database.joinDB() /如果数据库连接成功if (database.query(sqlString) /如果 SQL语句执行成功tryif(database.rs.isBeforeFirst() /如果指向记录集的在第一条记录的前面System.out.println(密码正确”);jf.setVisible(false);/8 体不可见.close();/关闭数据库连接new Main();/主 窗体else System.out.println(错误”);new JOptionPane().showMessageDialog(null,”用户名或密码错

14、误!,JOptionPane.ERROR_MESSAGE);catch(Exception ex) System.out.println(ex.getMessage();elseSystem.out.println(连接数据库不成功!);按钮确定”的监听事件代码:public void actionPerformed (ActionEvent e)if(textname.getText().equals()new JOptionPane().showMessageDialog(null,”用户名不能为空!);else if(textmima.getText().equals()new JOpt

15、ionPane().showMessageDialog(null密码不能为空!);elseString sql=select * from user where user_id = + textname.getText() + and password = + textmima.getText()+ ”;System.out.println(sql);Judge(sql);/调用成员方法,判断是否用户名和密码正确3.2.3用户信息管理模块(1)密码修改用户密码修改用户名:旧密码:新密码:确认新密码:Blji V:退出用户名将自动从表user里检索出来,供用户选择以下是它的基本属性文件名控件名称

16、xgmima.javaJlabel: lbe2、lbe3、lbe4、lbe5jTextField : tfJpasswordField:pas1、pas2、pas3Jbutton: b1 = new JButton(提交”);b2二new JButton(退出);将所有用用户名读出来database.joinDB();/连接数据库String sql=select * from user;tryif(database.query(sql)(while(database.rs.next()/依 次将用户名读出String name二database.rs.getString(user_id);t

17、f.addltem(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);tryif(database.query(sql)(d

18、atabase.rs.next();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().showMessageDial

19、og(null,”密码更改成 功!);elsenew JOptionPane().showMessageDialog(null,”两次密码不同!);else(new JOptionPane().showMessageDialog(null,”旧密码不正确!);catch(Exception el)(System.out.println(el););(2)用户信息添加和删除H用户信息添堀和哪除区制用F名:|输入密码:IHfiiASr 码:海加 | 清至已有用户名:2密四: 上半部分用来添加用户,下半部分用来删除用户基本属性如下文件名控件名AddDeleteUser.javaprivate JBu

20、tton butACancel,butDCancel,butDelete,butOk;private JComboBox cbUserName;private JLabel jLabel1,jLabel2,jLabel3,jLabel4,jLabel5;private JPasswordField pas1,pas2,pas3;private JTextField txtname;/将所有用用户名读出来database.joinDB();String sql=select * from user;tryif(database.query(sql)(while(database.rs.next(

21、)记录集若有记录则通过循环将数据依次读 出String name二database.rs.getString(user_id);cbUserName.addltem(name);catch(Exception e)为添加按钮加事件butOk.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)(if(txtname.getText().equals()/判断是否为空new JOptionPane().showMessageDialog(null,”用户名不能为空!);else if(pa

22、s1.getText().equals()new JOptionPane().showMessageDialog(null密码不能为空!);else if(pas1.getText().equals(pas2.getText()String sql=insert into user values(+ txtname.getText() +, + pas1.getText() +);tryif(database.executeSQL(sql)/若 SQL 执行成功new JOptionPane().showMessageDialog(null,”添加成 功!);cbUserName.addIte

23、m(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 +”; tryif(database.query(sql)(database.rs.next();Strin

24、g 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();cbUserN

25、ame.removeAllItems();/将删除的条目从 JcomboBox中删除String sqll=select * from user;if(database.query(sql1)(while(database.rs.next()更新Jc omboBox条 目Stringname1=database.rs.getString(user_id);cbUserName.addItem(name1);elsenew JOptionPane().showMessageDialog(null,”密码不 正确!);catch(Exception el)System.out.println(el

26、););3.2.4学生信息管理模块(1) 添加信息漆加学生信扁学号姓名性别年龄政治而貌系别班就 I该添加是按照先添加学生信息,添加学生信息中的添加按钮代码:butOk.addActionListener(new ActionListener()(public void actionPerformed(ActionEvent e)(if(jtf1.getText().equals()(new JOptionPane().showMessageDialog(null,”学号不能为空”);else if(jtf2.getText().equals()(new JOptionPane().showMe

27、ssageDialog(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()+);tryif(databas

28、e.executeSQL(sql)(new JOptionPane().showMessageDialog(null,”添加成功!);catch(Exception ea);(2) 信息查看分为查看学生基本信息和查看学生成绩信息,因为代码和窗体大致相识,进取其一讲述卜面是他的属性文件名称控件名称viewstud.javaJtextArea :te=new JTextArea();代码为:class viewstud extends JInternalFrame( viewstud()super(-查看学生基本信息);/窗体显示得名称Container con二getContentPane();

29、/创建 JinternalFrame 的容器对象con.setLayout(new BorderLayout();/S 定窗体布局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(学号:+da

30、tabase.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);

31、catch(SQLException ex)( System.out.println(ex);this.setClosable(true);/关闭窗口可用setVisible(true);/窗 体可见setBounds(20,70,600,350);(3)信息修改信息修改分为学生基本信息修改,学生成绩信息修改,由于原理相似就以修改学生基本信息作为例子进行介绍卜面是他的属性信息文件名称控件名称xiugai.javaprivate JButton butCancel,butOk,butShow;private JLabel jLabel1,jLabel2,jLabel3,jLabel4,jLabe

32、l5,jLabel6,jLabel7;private JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6,jtf7;峰咬学生信息显示信息按钮的监听事件代码如下:database.joinDB();butShow.addActionListener(new ActionListener()(public void actionPerformed(ActionEvent e)(if(jtf1.getText().equals()(new JOptionPane().showMessageDialog(null,”请输入学号”);else (String sql=sel

33、ect * from grade where 学号=+ ” +jtf1.getText() +”;tryif(database.query(sql)(/此 处用了个 database.executeSQL(sql)提示 resultset 关闭if(!database.rs.first()JOptionPane.showMessageDialog(null,S 有该学生信息.”);/下面是用来显示其他文本框里的内容else database.rs.first();jtf2.setText(database.rs.getString(VBA 开发);jtf3.setText(database.r

34、s.getString(大学英语);jtf4.setText(database.rs.getString(java 开发);jtf5.setText(database.rs.getString(SQLServer);jtf6.setText(database.rs.getString(M 等数学);jtf7.setText(database.rs.getString(网站建设);butOk.setEnabled(true); catch(NullPointerException upe)System.out.println(upe.toString();catch(SQLException s

35、qle)System.out.println(sqle.toString();catch(Exception ex)System.out.println(ex.toString(););(4)删除信息删除学生信息卜面是窗口属性文件名称控件名称shanchu.javaprivate JButton butCancel,butOk;private JLabel jLabel1;private JTextField jtf1;private JPanel p;butOk=new JButton(-删除,butCancel二new JButton(清空”)删除按钮监听事件代码如下:butOk.addA

36、ctionListener(new ActionListener()(public void actionPerformed(ActionEvent e)(if(jtf1.getText().equals()(new JOptionPane().showMessageDialog(null,”请输入学号”);else (String sql=select * from stud where 学号=+ ” +jtf1.getText() +”;tryif(database.query(sql)(/此 处用了个 database.executeSQL(sql)提示 resultset 关闭if(!

37、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.exec

38、uteSQL(qll) if(database.executeSQL(sqq)JOptionPane.showMessageDialog(null,删除成功);3.2.5系统管理模块重新登陆监听事件代码:land.addActionListener(new ActionListener()重新登陆监听public void actionPerformed(ActionEvent e)System.out.println(Land);setVisible(false);new Land(););退出菜单监听事件代码:exit.addActionListener(new ActionListene

39、r()/退出系统监听public void actionPerformed(ActionEvent e) setVisible(false););3.2.6主窗体菜单设计分为三个主菜单:系统管理、用户管理、学生信息管理系统管理分为:重新登陆和退出用户管理:密码修改、添力/删除用户学生信息管理:删除学生信息及二级菜单-添加记录、信息查看、信息修改添加记录:学生基本信息添加 信息查看:基本信息查看修改信息:基本信息修改五软件测试测试数据截图/*测试的方法软件测试的方法和技术是多种多样的,网路上也提供了很多免费的工具。对于软件测试 技术,可以从不同的角度加以划分。(1)从是否需要执行被测软件的角度,

40、可分为静态测试和动态测试。(2)从是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒 测试。下面具体介绍黑盒测试和白盒测试。(1)黑盒测试。又叫功能测试,由测试人员在不知道程序如何实现的情况下,输入功 能需要的数据,查看输出结果的正确性。所谓黑盒,其实就是把程序看成是一个完全密 封的盒子,测试人员不考虑程序的内部构造,只是按照需求说明,进行数据的录入操作,并 查看结果是否满足需求要完成的功能。黑盒法着眼于程序外部结构,不考虑内部运算,针对界面和功能进行测试。黑盒 法是穷举测试,只有把所有可能的输入都进行测试,才能查处程序中所有的错误。实际上测 试情况有无穷多个,测试人员不仅要

41、测试合法的输入,还要对那些不合法的输入进行测试。(2)白盒测试。又叫逻辑结构测试。测试人员需要了解功能的内部构造,对所有逻辑 路径都进行测试。白盒法是穷举路径测试。测试人员必须检查程序的内部结构,从检查程序的逻辑着 手,得出测试数据。即使每条路径都测试了,仍然可能有错误。第一,穷举路径测试无法查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试查不出程序中因遗漏路径而出错的情况。第三,穷举路径测试可能发现不了输入数据的错误。*/六总结本次java课程设计主要侧重在对学生信息管理里的添加、删除、修改、查看等最基本 的操作,掌握这些最基本的设计思想是很重要的,能够帮助我们开发更加复杂的软件提供依 据和基础,所以看似简单的课程设计,却是对我们设计软件的一次考验,一次磨练,所以我 一直都保持着很认真地精神来进行设计的,通过这次课程设计对java类和对象的概念有了 更深一步的了解,也培养了我们对java课程设计的兴趣的,增强了设计软件的思维能力, 虽然时间很短,但还是收获了很多,每次课程设计都是一种锻炼。在今后的学习里,一定要 更加努力,学好这门编程语言。参考资料

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号