最新Java课程设计报告学生管理系统.doc

上传人:1595****071 文档编号:35032792 上传时间:2022-08-20 格式:DOC 页数:47 大小:2.01MB
返回 下载 相关 举报
最新Java课程设计报告学生管理系统.doc_第1页
第1页 / 共47页
最新Java课程设计报告学生管理系统.doc_第2页
第2页 / 共47页
点击查看更多>>
资源描述

《最新Java课程设计报告学生管理系统.doc》由会员分享,可在线阅读,更多相关《最新Java课程设计报告学生管理系统.doc(47页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateJava课程设计报告学生管理系统Java课程设计报告学生管理系统 JAVA程序设计 课程设计报告课 题: 学生信息管理系统 姓 名:赵咏荔 学 号: 201217020113同组姓名:肖雅婷 刘玲 专业班级:信管12101 指导教师: 刘国清设计时间:2014.6.232014.6.27评阅意见:评定成绩:指导老师签名: 年 月 日 - 目 录1.系统描述.3 1.1

2、需要实现的功能.3 1.2 设计的目的.32.分析与设计.4 2.1功能模块划分.4 2.2 数据库结构描述.4 2.3系统详细设计文档.5 2.4 各个模块实现方法描述.9 2.5 测试数据及期望结果.93.系统测试.124.总结或心得体会.185.参考文献.196.附录.191.系统描述1.1需要实现的功能(1)录入学生基本信息的功能 学生基本信息主要包括:学号、姓名、性别、年龄、出生地、专业、班级、总学分,在插入时,如果数据库则已经存在该学号,则不能再插入该学号。(2)修改学生基本信息的功能在管理员模式下,只要在表格中选中某个学生,就可以对该学生信息进行修改。(3)查询学生基本信息的功能

3、可使用 “姓名”对已存有的学生资料进行查询。(4)删除学生基本信息的功能 在管理员模式下,只要选择表格中的某个学生,就可以删除该学生。(5)用户登陆用不同的登录权限可以进入不同的后台界面,从而实现权限操作。(6)用户登陆信息设置可以修改用户登陆密码1.2 设计的目的本程序用于用户对少量学生信息进行简单的管理,本程序针对于对安全系数要求不高,操作不是很复杂的小型客户开发。本程序的管理员可以实现对学生信息的录入、查询、修改、删除等操作,同时支持查看所有学生信息,学生只能查询自己的信息。程序功能完善,界面简洁美观,布局合理,操作简便,简单易用,任何人可轻松操作。同时,本程序对系统要求配置较低,运行速

4、度快,而却对数据库管理要求较低。本程序数据库采用office2007版本的access数据库(.accdb)进行数据存储,该数据库可实现关系较为简单的数据管理。2.分析与设计: 2.1功能模块划分学生信息管理系统浏览学生信息查询学生信息添加学生信息修改学生信息删除学生信息普通学生(用户)模块班委(管理员)模块浏览学生信息查询学生信息学生管理登陆管理修改登陆密码显示登陆用户 图1 功能模块图2.2数据库结构描述 (1)数据库E-R模型 图2 学生局部E-R图 图3 登陆用户局部E-R图(2)数据库关系模型二维 表1 学生表(student)字段数据类型说明stuIdnvarchar(30)学号s

5、tuNamenvarchar(30)姓名stuSexnvarchar(30)性别stuAgeint年龄stuJgnvarchar(30)籍贯stuZynvarchar(30)专业classIdnvarchar(30)班号stuSoursenumeric(5,2)总学分 表2 登陆权限表(login)字段数据类型说明userIdnvarchar(30)用户名(账号),即登陆Idpasswordnvarchar(30)登陆密码positionnvarchar(30)职位,如班委,普通学生 (3)数据流图进度条(闪屏)用户登陆登陆验证falsetrue班委(管理员)界面普通学生界面查询添加修改删除查

6、询显示班委(管理员员 )普通学生(用户)退出退出系统结束结束退出系统truefalsefalsetrue修改用户登陆密码显示登陆用户信息 图4 数据流图2.3系统详细设计文档 表3 包以及包所包含的类包名(package)所包含的类说明com.sqlConnectionSqlConn.java用于连接数据库com.ToolsMyFont.java用于设置窗体各组件的字体com.ViewIndex.java使用进度条与线程结合实现闪屏,初始化进入登陆界面Login.java登陆界面,管理员与用户登陆ManageView.java管理员界面,可进行所有操作StuMainView.java普通学生(

7、用户)界面,只能进行部分操作StuQuery.java学生信息查询模块AddStu.java添加学生信息模块UpdateStu.java更新学生信息模块TableModel.java表数据更新模型,学于更新并通过表来显示信息LoginModel.java用户登陆验证模型PurViewModel.java用户权限设置界面UpdateLogin.java用户账户修改界面 表4 SqlConn类类名类的成员属性与方法说明SqlConn.javaConnection ct得到与数据库的连接PreparedStatement ps实现发送SQL语句给数据库ResultSet rs获得数据库返回的记录集p

8、ublic ResultSet sqlQuery(String sql)实现查询功能的方法public void sqlUpdate(String sql)实现添加,修改功能 的方法public void sqlDelete(String sql)实现删除学生记录的方法public void closeSqlConn()实现关闭数据库连接的功能 表5 Index类类名类的成员属性与方法说明Index.javaJProgressBar jpb定义进度条JLabel jl1用于在窗体的北部放一张图片,南部是进度条int width,height用于获取显示屏分辨率大小,以便设置窗口的默认位置pub

9、lic Index()初始化窗口的相关组件public void run()进度条线程的run方法,用于设置线程的属性int progressValue定义一个数组,存放进度条显示时需要的数据 表6 Login类 类名类的成员属性与方法说明Login.javaJLabel jl1,jl2,jl3定义三个标签组件JTextField jtf1定义一个用户输入账号的文本框JPasswordField jpf1密码输入框JButton jb1,jb2提交和清除按钮int width,height用于设置窗口初始位置的变量,即获取显示器的大小ResultSet rs用于接收从数据库返回来的记录集Log

10、inModel loginModel自定义一个模型,把值到登陆验证模型public Login()构造方法,用于初始化登陆窗口的相关组件class BackImage extends JPanel创建一个内部类,并继承JPanle,用于画背景图片 2.4各个模块实现方法描述 sqlConnection是连接数据库。可实现发送SQL语句给数据库,获得数据库返回的记录集,实现查询、添加、修改、删除学生记录,关闭数据库连接等功能。Myfont是设置窗体各组件的字体。Index是使用进度条与线程结合实现闪屏,初始化进入登陆界面。Login是登陆界面,管理员与用户登陆,可以分别登入管理员和用户,管理员与

11、用户的登录进去后可分别按自己的权限操作。2.5 测试数据及期望结果在登入窗口可以分别登入管理员和用户的账号及密码,会进入权限不同的页面,管理员可以实现查询、添加、修改、删除学生记录,还可以查询,修改、删除管理员表格。而学生只能查询学生记录。例如: 图1登入管理员 图2查询全部信息 图3查询个人信息 图4添加学生信息 图5修改学生信息 图6修改学生信息 图7查询肖林卫婕的成绩3. 系统测试 图8系统启动界面图9 用户登陆界面 图10 班委(管理员)界面,即具有完全权限的用户后台界面 图11 班委(管理员)界面子菜单项显示 图12 普通用户(学生)界面子菜单项显示图13学生信息查询结果显示图14

12、添加学生信息界面图15 修改学生信息界面 图16 显示所有学生信息 图17当没有选中一行的时候,不能修改和删除,并弹出提示警告框 图18 删除文件时的确认对话框(当点击确认时才会删除,点击取消,则返回主界面) 图19 显示所有登陆用户信息 图20 修改用户登陆密码,选中某个用户进行修改 图21 关闭用户记录,即不显示所有用户信息 图22 关闭学生记录 图23 退出系统确认对话框,只有确认时才会退出系统,否则返加主界面 图24 普通学生登陆后的界面(即不能对学生信息进行添加,修改和删除以及用户密码修改,对应的这几项灰色显示,不可点击)四、总结或心得体会1)在写代码之前,在大脑里一定要把思路理清楚

13、,不能模模糊糊,一定要把功能图和流程图画出来,然后根据它去实现每一个功能块,要多分析,培养一种良好的逻辑思维能力。2)在写代码的过程中,一定要采取就近原则,同一个功能,或者对同一个组件的设置一般要写在一块,这样写的程序比较清晰,不容易出错,也便于查找。3)要养成良好的注释习惯,一是有利于别人阅读你的程序,同时也有利于自己以后再看,就能很快的读懂程序,提高效率。4)把功能模块化,即把实现相同功能的代码段封装成一到一个类或者一个方法中,实现的时候调用即可,这样能提高代码的可读性5)养成创建包来存放不同功能的类,使系统的结构更加模块化和规范化。6)在编写代码的时候,一定要边写边调试,要适时的设置断点

14、,或者把某些变量的值输出到控制台,通过观察和分析变量的值,便于判断问题所在,同时,需要捕获异常的一定要把异常信息打印出来,便于分析问题。在老师悉心的指导下,我顺利地完成了本次课程设计,并取得了很大的收获,对以后的软件开发奠定了一定的基础!五、 参考文献(1)赵海廷.Java语言程序设计教程.北京:清华大学出版社.2012(2)孙印杰,刘斌,孙玉强.Java编程案例精解.北京:电子工业出版 社.2005(3)何梅.java编程实例系列丛书.北京:清华大学出版社,2002(4)杨昭.编著二级Java语言程序设计教程.北京:中国水利水电出版社,2006(5)赵文靖编著.Java程序设计基础与上机指导

15、.北京:清华大学出版社,2006六、附录(1)功能:连接数据库package com.SqlConnection;import java.sql.*;import com.View.AddStu;public class SqlConn Connection ct=null;PreparedStatement ps=null;ResultSet rs=null;String driver=sun.jdbc.odbc.JdbcOdbcDriver;String dburl=jdbc:odbc:stuSystem;String userName=;String password=;/实现查询功能的

16、方法public ResultSet sqlQuery(String sql)try /加载驱动Class.forName(driver);ct=DriverManager.getConnection(dburl,userName,password);ps=ct.prepareStatement(sql);rs=ps.executeQuery(); catch (Exception e) e.printStackTrace();/ TODO: handle exceptionreturn rs;/实现添加,修改功能 的方法public void sqlUpdate(String sql)try

17、 /加载驱动Class.forName(driver);ct=DriverManager.getConnection(dburl,userName,password);ps=ct.prepareStatement(sql);/执行添加,更新操作int i=ps.executeUpdate();/返回一个值,如果为1则表示添加成功。if(i=1)System.out.println(数据添加/修改成功!);elseSystem.out.println(数据添加/修改失败!); catch (Exception e) e.printStackTrace();/ TODO: handle excep

18、tion/实现删除学生记录的方法public void sqlDelete(String sql)try /加载驱动System.out.println(ok);Class.forName(driver);ct=DriverManager.getConnection(dburl,userName,password);ps=ct.prepareStatement(sql);System.out.println(ok1);/执行添加,更新操作int i=ps.executeUpdate();/返回一个值,如果为1则表示删除成功。if(i=1)System.out.println(数据删除成功!);

19、elseSystem.out.println(数据删除失败!); catch (Exception e) e.printStackTrace();/ TODO: handle exception/实现关闭数据库连接的功能public void closeSqlConn()try if(rs!=null)rs.close();if(ps!=null)ps.close();if(ct!=null)ct.close(); catch (Exception e) e.printStackTrace();/ TODO: handle exception(2)功能:这是一个字体包,用于美化窗口的字体pac

20、kage com.Tools;import java.awt.Font;public class MyFont public static Font f1=new Font(宋体,Font.PLAIN,15);public static Font f2=new Font(宋体,Font.PLAIN,13);(3) 功能:这是添加学生的界面,通过模式对话(即继承JDialog对话框)来实现 package com.View;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListene

21、r;import java.sql.ResultSet;import javax.swing.*;import com.SqlConnection.SqlConn;import com.Tools.MyFont;public class AddStu extends JDialog implements ActionListener /定义添加学生信息的相关组件JLabel jl1,jl2,jl3,jl4,jl5,jl6,jl7,jl8;JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6,jtf7,jtf8;JButton jb1,jb2,jb3;ResultSe

22、t rs;SqlConn sqlconn;String No;int stuAge=0;Double stuSourse=0.0;int i=0;/用于判断到底点击了添加还是取消,来决定是否执行数据更新操作public int falg()return i;/这是添加学生界面的函数封装public void addView()jl1=new JLabel(学 号:);jl1.setBounds(20, 20, 60, 25);jl1.setFont(MyFont.f1);jl2=new JLabel(姓 名:);jl2.setFont(MyFont.f1);jl2.setBounds(250,

23、 20, 60, 25);jl3=new JLabel(性 别:);jl3.setFont(MyFont.f1);jl3.setBounds(20, 60, 60, 25);jl4=new JLabel(年 龄:);jl4.setFont(MyFont.f1);jl4.setBounds(250, 60, 60, 25);jl5=new JLabel(出生地:);jl5.setFont(MyFont.f1);jl5.setBounds(14, 100, 60, 25);jl6=new JLabel(专 业:);jl6.setFont(MyFont.f1);jl6.setBounds(20, 1

24、40, 60, 25);jl7=new JLabel(班 级:);jl7.setFont(MyFont.f1);jl7.setBounds(20, 180, 60, 25);jl8=new JLabel(总学分:);jl8.setFont(MyFont.f1);jl8.setBounds(240, 180, 60, 25);jtf1=new JTextField(20);jtf1.setBounds(70, 20, 130, 25);jtf1.setBorder(BorderFactory.createLoweredBevelBorder();jtf2=new JTextField(20);j

25、tf2.setBounds(300, 20, 130, 25);jtf2.setBorder(BorderFactory.createLoweredBevelBorder();jtf3=new JTextField(10);jtf3.setBounds(70, 60, 60, 25);jtf3.setBorder(BorderFactory.createLoweredBevelBorder();jtf4=new JTextField(10);jtf4.setBounds(300, 60, 60, 25);jtf4.setBorder(BorderFactory.createLoweredBev

26、elBorder();jtf5=new JTextField(30);jtf5.setBounds(70, 100, 360, 25);jtf5.setBorder(BorderFactory.createLoweredBevelBorder();jtf6=new JTextField(20);jtf6.setBounds(70, 140, 290, 25);jtf6.setBorder(BorderFactory.createLoweredBevelBorder();jtf7=new JTextField(20);jtf7.setBounds(70, 180, 130, 25);jtf7.s

27、etBorder(BorderFactory.createLoweredBevelBorder();jtf8=new JTextField(20);jtf8.setBounds(300, 180, 130, 25);jtf8.setBorder(BorderFactory.createLoweredBevelBorder();jb1=new JButton(添 加);jb1.setFont(MyFont.f1);jb1.setBounds(100, 220, 80, 25);jb1.addActionListener(this);jb2=new JButton(取 消);jb2.setFont

28、(MyFont.f1);jb2.setBounds(280, 220, 80, 25);jb2.addActionListener(this);jb3=new JButton(清 除);jb3.setFont(MyFont.f1);jb3.setBounds(190,220,80,25);jb3.addActionListener(this);this.setLayout(null);/把组件添加到窗体this.add(jl1);this.add(jtf1);this.add(jl2);this.add(jtf2);this.add(jl3);this.add(jtf3);this.add(j

29、l4);this.add(jtf4);this.add(jl5);this.add(jtf5);this.add(jl6);this.add(jtf6);this.add(jl7);this.add(jtf7);this.add(jl8);this.add(jtf8);this.add(jb1);this.add(jb2);this.add(jb3);public AddStu(Frame Main,String title,boolean model)/调用父类的构造方法,实现模式对话super(Main,title,model);/调用添加学生信息界面的的方法this.addView();

30、/设置窗体的属性this.setSize(465,300);this.getContentPane().setBackground(Color.LIGHT_GRAY);/设置背景必须是在显示窗口前面,否则不能显示出来this.setVisible(true);this.setResizable(false);Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stub/用于判断输入的学号是否存在时,如果存在则返回该学号,否则返回null,因此在这里,定义一个用于接收该返回的学号/并设置该

31、No的初始值为空,否则报错。String No = null ;/当点击了添加按钮if(e.getSource()=jb1)/*/获取文本框的信息 String stuId=jtf1.getText().trim();/判断,不能让文本输入框的值为空if(stuId.equals()JOptionPane.showMessageDialog(this, 请输入学号!);return;/返回到输入界面,如果没有return语句,则会回到主界面String stuName=jtf2.getText().trim();if(stuName.equals()JOptionPane.showMessag

32、eDialog(this, 请输入姓名!);return;/返回到输入界面,如果没有return语句,则会回到主界面String stuSex=jtf3.getText().trim();if(stuSex.equals()JOptionPane.showMessageDialog(this, 请输入性别!);return;/返回到输入界面,如果没有return语句,则会回到主界面/对于年龄,则需要进行两个判断,一个是不能为空,另一个必须是int型,下面用异常来判断输入的学生年龄是否是整型数/*/try stuAge=Integer.parseInt(jtf4.getText().trim()

33、;/把从文本框取得的字符串转换成整型,如果抛异常,则输入的不是整形数 if(stuAge1) JOptionPane.showMessageDialog(this, 年龄必须大于或等于1!); return; catch (Exception e2) /提示输入的不是整数JOptionPane.showMessageDialog(this, 请输入一个整数的年龄!);/如果抛异常,则返回到添加窗口,后面终止执行*/return;/ TODO: handle exception/*/String stuJg=jtf5.getText().trim();if(stuJg.equals()JOpti

34、onPane.showMessageDialog(this, 请输入出生地!);return;/返回到输入界面,如果没有return语句,则会回到主界面String stuZy=jtf6.getText().trim();if(stuZy.equals()JOptionPane.showMessageDialog(this, 请输入专业!);return;/返回到输入界面,如果没有return语句,则会回到主界面String classId=jtf7.getText().trim();if(classId.equals()JOptionPane.showMessageDialog(this,

35、请输入班号!);return;/返回到输入界面,如果没有return语句,则会回到主界面/*/try stuSourse=Double.parseDouble(jtf8.getText().trim();if(stuSourse=0.0)JOptionPane.showMessageDialog(this, 请输入总学分!);return;/返回到输入界面,如果没有return语句,则会回到主界面 catch (Exception e2) JOptionPane.showMessageDialog(this, 请输入一个整数或小数的总学分!);return;/ TODO: handle exception/*/首先先判断该主键是否在数据库中是否存在,其次分别判断性别是否为“男”或者“女”,年龄是否为数字,总学分是否为浮点型或双精度型String sql=select * from student where stuId=+stuId+;SqlConn sqlconn=new SqlConn();rs=sqlconn.sqlQuery(sql);try while(rs.next()No=rs.getString(1);/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 成人自考

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com