学生信息系统 java+mysql

一.课程设计目的…

二.课程设计要求…

三.设计与实现过程……………………………………………………

四.系统实现…

五.总结…

六.参考文献…

1、课程设计目的

通过布置具有一定难度的实际程序设计项目,使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的用法,以及java面向对象的的核心,通过该课程设计:使学生掌握分析问题,求解问题的方法并提高学生设计编程实现的能力。

2、课程设计要求

基本要求:

  1. 要求利用java语言来完成系统的设计;

  2. 突出java语言的面向对象特征,

  3. 画出功能模块图;

  4. 进行简单界面设计,能够实现友好的交互;

  5. 具有清晰的程序流程图和数据结构的详细定义;

  6. 熟练掌握java语言的各种操作。

创新要求:

在基本要求达到后,可进行创新设计,如系统用户功能控制,改进算法的实现,实现友好的人机交互等等。

3.课题要求:

  1. 通过深入细致的调查,多方面搜集资料,以及实地考察等方法,经过总结研究,总结出了系统管理的基本的业务功能,详细如下:

学生部分:

(1)查看自己的信息(班级,编号等等)

(2)修改密码:修改自己的密码。

(3)查看帮助:查看帮助

(4)权限:学生不能对于班级管理的操作,以及对教师的管理操作,在学生管理中只能查看自己的相关信息。

老师部分:

(1) 添加学生:老师可以根据情况进行添加学生,修改学生信息。

(2) 添加班级:老师可以根据情况进行添加班级,修改班级信息。

(3) 修改密码: 修改老师本人密码。

(4) 权限:老师不能添加老师信息。

管理员部分:

(1)查看自己的信息(姓名,编号等等)

(2)修改密码:修改自己的密码

(3)添加老师:管理员可以根据情况进行添加老师,修改老师信息

(4)添加学生:管理员可以根据情况进行添加学生,修改学生信息。

(5)添加班级:管理员可以根据情况进行添加班级,修改班级信息。

(6)查看帮助:查看帮助。

  1. 设计与实现过程

l 主要设计思想和设计流程。共包括几个方面(或模块),对每个方面(或模块)的设计方法进行描述。

设计流程要求画流程图,

  1. 在主界面上方设置五个窗口

系统设置:(修改密码,退出系统)

学生管理:(添加学生,学生信息管理)

班级管理:(添加班级,班级信息管理)

教师管理:(添加教师,教师信息管理)

帮助:(添加一个关于我们的网站链接)

  1. 每一个窗口对应一个界面,在不同的界面添加不同的按钮,面板,以及事件的监听。

  2. 根据登录的身份不同,拥有不同的权限。

  3. 根据需求在数据库中建立与之相对应的表,将有关的信息全部存入到数据库中,并通过JDBC操作数据库,对所有的信息操作,实现增删查改。

管理员:

老师:

修改密码只能修改本人的。

学生:

学生只能修改自己的密码,以及对自己信息的修改。

  1. 设计思想

该学生信息管理系统一共有五个包,分别为dao,images,model,util,view,每个包都存放着相类似的类

dao包里面都是关于数据库的部分,通过JDBC操作数据库,实现信息的增删查改,比如,Admin包里面存放的是管理员的相关信息,BaseDao是个基础用于其他各个的继承,ClassDao里面放的是教室的相关信息,StudentDao里面放的是学生的相关信息,TeacherDao里面放的是老师的相关信息。

Images包里面存放的是图片。

Model包里面存放的是,各种数据类型,实现了封装。

Util包里面存放的是一些重复代码。

View包里面主要是各个界面的代码,以及一些增删查改的

功能实现。

文件夹如下:

运行界面如下:

登录界面:
在这里插入图片描述

管理员登录时,主界面:

在这里插入图片描述

总结:

短短的一时间就在这紧张而又忙碌的实验中结束,虽然忙碌,但收获却是丰硕的。这也是我们进行的自主设计的课题练习,完全的自由,给了我们充分的发挥空间,真正给了我们锻炼的机会,的确,是一次很有收获的实习。不单单是针对实习内容,而是给了我们一种能力上的锻炼,毕竟,未来社会需要的是创新型的人才,只会照搬的书呆子早已难以生存,只有创新,才有可能在未来激烈的竞争中获胜,只有创新,才能生存,这是残酷的现实给我们最真实的忠告,然而,我们必须面对,逃避只会走向失败。

通过本课程设计的锻炼,我不仅对java理论知识有了更深一层的认识,对封装,继承等知识点更加透彻的了解。我越来越感觉到基础的重要性,这不仅来源于我在第一阶段的辛苦,更加体会深刻的是我在后面发现问题的过程中,不断的发现不足,不断的更改前一阶段的相关内容。但是鉴于时间的原因,设计过程中有的问题没有深入研究,考虑全面,不可避免的出现了一些问题,这也是有待改进的,也是情有可原的。知识的重新学习只是本次实习的一小方面,更重要的是让我学会了很多书本上学不到的东西,比如自己学习,自己设计,自己调查研究,从各种渠道获取有用知识的能力,自主创新,自主完成课题,自主设计,这也许就是本次实习的最终目的吧。
需要源码及报告的可以留言我。。。

package cn.com.dao.chivementdao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import cn.com.util.DBConnection; import cn.com.util.DBSql; import cn.com.vo.chivementvo.ChivementVo; public class ExamDao { private Connection conn = DBConnection.getConnectionOracle(); private ChivementVo examVo; public ExamDao() { } public ExamDao(ChivementVo examVo) { super(); this.examVo = examVo; } /** * 全部查询 */ public Object[][] selectAll() { Object date[][] = null; int max = 0; int i = 0; PreparedStatement ps = null; ResultSet rs = null; try { ps = conn.prepareStatement(DBSql.SELECT_ALL); rs = ps.executeQuery(); // 得到列数 max = rs.getMetaData().getColumnCount(); date = new Object[getnumberAll(DBSql.SELECT_ALL_COUNT)][max]; while (rs.next()) { for (int j = 0; j < max; j++) { date[i][j] = rs.getObject(j + 1); } i++; } // rs.close(); // ps.close(); // conn.close(); } catch (SQLException e) { e.printStackTrace(); } return date; } /** * 根据学号查询 */ public Object[][] selectBySid() { Object date[][] = null; int max = 0; int i = 0; PreparedStatement ps = null; ResultSet rs = null; try { ps = conn.prepareStatement(DBSql.SELECT_BY_S_ID); ps.setInt(1, examVo.getS_id()); rs = ps.executeQuery(); // 得到列数 max = rs.getMetaData().getColumnCount(); date = new Object[getnumber(DBSql.SELECT_BY_S_ID_COUNT, examVo .getS_id())][max]; while (rs.next()) { for (int j = 0; j < max; j++) { date[i][j] = rs.getObject(j + 1); } i++; } // rs.close(); // ps.close(); // conn.close(); } catch (SQLException e) { e.printStackTrace(); } return date; } /** * 根据组号查询 */ public Object[][] selectByGid() { Object date[][] = null; int max = 0; int i = 0; PreparedStatement ps = null; ResultSet rs = null; try { ps = conn.prepareStatement(DBSql.SELECT_BY_G_ID); ps.setInt(1, examVo.getG_id()); rs = ps.executeQuery(); // 得到列数 max = rs.getMetaData().getColumnCount(); date = new Object[getnumber(DBSql.SELECT_BY_G_ID_COUNT, examVo .getG_id())][max]; while (rs.next()) { for (int j = 0; j < max; j++) { date[i][j] = rs.getObject(j + 1); } i++; } // rs.close(); // ps.close(); // conn.close(); } catch (SQLException e) { e.printStackTrace(); } return date; } /** * 根据课程号查询 */ public Object[][] selectByCid() { Object date[][] = null; int max = 0; int i = 0; PreparedStatement ps = null; ResultSet rs = null; try { ps = conn.prepareStatement(DBSql.SELECT_BY_C_ID); ps.setInt(1, examVo.getC_id()); rs = ps.executeQuery(); // 得到列数 max = rs.getMetaData().getColumnCount(); date = new Object[getnumber(DBSql.SELECT_BY_C_ID_COUNT, examVo .getC_id())][max]; while (rs.next()) { for (int j = 0; j < max; j++) { // System.out.println( examVo.getG_id()); date[i][j] = rs.getObject(j+1); } i++; } // rs.close(); // ps.close(); // conn.close(); } catch (SQLException e) { e.printStackTrace(); } return date; } /** * 根据姓名模糊查询 * * @return */ public Object[][] selectByName() { Object date[][] = null; int max = 0; int i = 0; PreparedStatement ps = null; ResultSet rs = null; try { ps = conn.prepareStatement(DBSql.SELECT_BY_S_NAME); ps.setString(1, examVo.getS_name()); ps.setString(2, "%" + examVo.getS_name() + "%"); ps.setString(3, "%" + examVo.getS_name()); ps.setString(4, examVo.getS_name() + "%"); rs = ps.executeQuery(); // 得到列数 max = rs.getMetaData().getColumnCount(); date = new Object[getnumberByName(DBSql.SELECT_BY_S_NAME_COUNT, examVo.getS_name())][max]; while (rs.next()) { for (int j = 0; j < max; j++) { date[i][j] = rs.getObject(j + 1); } i++; } } catch (SQLException e) { e.printStackTrace(); } return date; } /** * 根据课程名称模糊查询 * * @return */ public Object[][] selectByClassName() { Object date[][] = null; int max = 0; int i = 0; PreparedStatement ps = null; ResultSet rs = null; try { ps = conn.prepareStatement(DBSql.SELECT_BY_CLASS_NAME); ps.setString(1, examVo.getClass_name()); ps.setString(2, "%" + examVo.getClass_name() + "%"); ps.setString(3, "%" + examVo.getClass_name()); ps.setString(4, examVo.getClass_name() + "%"); rs = ps.executeQuery(); // 得到列数 max = rs.getMetaData().getColumnCount(); date = new Object[getnumberByName(DBSql.SELECT_BY_CLASS_COUNT, examVo.getClass_name())][max]; while (rs.next()) { for (int j = 0; j < max; j++) { date[i][j] = rs.getObject(j + 1); } i++; } } catch (SQLException e) { e.printStackTrace(); } return date; } /** * 修改选中学生的成绩 * */ public void updatSelectClass() { PreparedStatement ps = null; ResultSet rs = null; try { ps = conn.prepareStatement(DBSql.UPDATE_EXAM_BY_STUID); ps.setInt(1, examVo.getClassExamChivement()); ps.setInt(2, examVo.getS_id()); ps.setInt(3, examVo.getC_id()); ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } /** * 得到所有课程号和课程名 * * @return */ public String[] getClassNoName() { String[] classNoName = null; PreparedStatement ps = null; ResultSet rs = null; int j = 0; try { int i = getnumberAll(DBSql.SELECT_CLASS_NAME_COUNT); classNoName = new String[i + i]; ps = conn.prepareStatement(DBSql.SELECT_CLASS_NAME); rs = ps.executeQuery(); while (rs.next()) { classNoName[j] = rs.getString(1); classNoName[j + i] = rs.getString(2); j++; } } catch (SQLException e) { e.printStackTrace(); } return classNoName; } /** * 根据科目修改成绩 查询学号 姓名 成绩 * */ public void SelectClassStuName() { int i = 0; PreparedStatement ps = null; ResultSet rs = null; int j = getnumberBySelectClassName( DBSql.SELECT_CLASS_STU_SNO_SNAME_EXAM_COUNT, examVo.getC_id()); int[] sNum = new int[j]; String[] sName = new String[j]; int[] classExam = new int[j]; try { ps = conn.prepareStatement(DBSql.SELECT_CLASS_STU_SNO_SNAME_EXAM); ps.setInt(1, examVo.getC_id()); rs = ps.executeQuery(); while (rs.next()) { sNum[i] = rs.getInt(1); sName[i] = rs.getString(2); classExam[i] = rs.getInt(3); i++; } } catch (SQLException e) { e.printStackTrace(); } examVo.setSid(sNum); examVo.setSname(sName); examVo.setClassExam(classExam); } /** * 根据科目修改成绩 查询学号 姓名 成绩 后修改成绩 * */ public void UpdateClassStuName() { // int i = 0; PreparedStatement ps = null; ResultSet rs = null; int j = getnumberBySelectClassName( DBSql.SELECT_CLASS_STU_SNO_SNAME_EXAM_COUNT, examVo.getC_id()); try { ps = conn.prepareStatement(DBSql.UPDATE_CHIVEMENT_BY_CLASS); for(int i =0;i<j;i++){ ps.setInt(1, examVo.getClassExam()[i]); ps.setInt(2, examVo.getSid()[i]); ps.setInt(3, examVo.getC_id()); ps.executeUpdate(); } } catch (SQLException e) { e.printStackTrace(); } } /** * 全部查询获得行数 * * @return */ public int getnumberAll(String str) { int number = 0; PreparedStatement ps = null; ResultSet rs = null; try { ps = conn.prepareStatement(str); rs = ps.executeQuery(); rs.next(); number = rs.getInt(1); // rs.close(); // ps.close(); // conn.close(); } catch (SQLException e) { e.printStackTrace(); } return number; } /** * 根据学号 根据组号 根据课程号查询 获得行数 * * @return */ public int getnumber(String str, int i) { int number = 0; PreparedStatement ps = null; ResultSet rs = null; try { ps = conn.prepareStatement(str); ps.setInt(1, i); rs = ps.executeQuery(); rs.next(); number = rs.getInt(1); // rs.close(); // ps.close(); // conn.close(); } catch (SQLException e) { e.printStackTrace(); } return number; } /** * 根据姓名 课程名 查询 获得行数 * */ public int getnumberByName(String str, String i) { int number = 0; PreparedStatement ps = null; ResultSet rs = null; try { ps = conn.prepareStatement(str); ps.setString(1, i); ps.setString(2, "%" + i + "%"); ps.setString(3, "%" + i); ps.setString(4, i + "%"); rs = ps.executeQuery(); rs.next(); number = rs.getInt(1); } catch (SQLException e) { e.printStackTrace(); } return number; } // /** // * 根据课程名查询 获得行数 // * // */ // // public int getnumberByClassName(String str, String i) { // int number = 0; // PreparedStatement ps = null; // ResultSet rs = null; // try { // ps = conn.prepareStatement(str); // ps.setString(1, i); // ps.setString(2, "%" + i + "%"); // ps.setString(3, "%" + i); // ps.setString(4, i + "%"); // rs = ps.executeQuery(); // rs.next(); // number = rs.getInt(1); // } catch (SQLException e) { // e.printStackTrace(); // } // return number; // } /** * * 根据课程名修改成绩获得行数 * * @param str * @param i * @return */ public int getnumberBySelectClassName(String str, int i) { int number = 0; PreparedStatement ps = null; ResultSet rs = null; try { ps = conn.prepareStatement(str); ps.setInt(1, i); rs = ps.executeQuery(); rs.next(); number = rs.getInt(1); } catch (SQLException e) { e.printStackTrace(); } return number; } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值