前言

记录下学习的点点滴滴,留下属于我的足迹。
以此篇记录我的第一次课程设计。

课设实现

一、课程设计题目

题目一 学生信息管理系统

二、总体设计

原理及工具

JAVA的前端搭建:JAVA GUI
MySQL的数据库后端搭建:DDL,DQL,DML,DCL。
数据库与前端的连接:mysql-connector-java等

模块介绍

该学生信息管理系统主要分为6个模块:①身份验证模块②新生信息输入模块③教务信息输入之学籍变更模块④教务信息输入之奖学金评定模块⑤教务信息输入之处罚记录模块⑥个人信息查询修改模块

设计步骤

①构建身份验证登录窗口;
②设计登陆界面与信息变更查询的选择框界面的跳转;
③设计选择框与模块2、3、4、5、6的跳转;
④完善各个界面的功能设计;
⑤美化界面。

详细设计

需求分析:

1.系统需求分析

学校每年都有新生入学、老生毕业,还有其他各种人事变动。如何有效地管理这些学生 的信息,帮助学校和老师掌握学生的情况,这就是学生信息管理系统需要完成的功能。

2.数据库需求分析

可以列出以下记录学生信息所需的数据项和数据结构:学生:学号、姓名、性别、生日、籍贯、所在院系、所在班级。处罚记录:记录号、级别、处罚对象、记录时间、详细描述、是否生效。   奖励记录:记录号、级别、奖励对象、记录时间、详细描述。学籍变更记录:记录号、变更情况、记录对象、记录时间、详细描述。
所需的外部数据支持:班级:班级编号、班级名称、所属院系、班长。院系:代码、名称。

功能分析

本系统主要的功能是收集学生的个人信息,以便向教师提供每个学生在校的情况。系统 的主要功能有:
①学生个人信息输入,包括:姓名、性别、院系、生日、籍贯、生源所在地等。
②学生流动情况的输入,包括:转系、休学、复学、退学、毕业。
③奖惩情况的输入。
④学生个人情况查询和修改,包括流动情况和奖罚情况。

概念模型(E-R模型)

逻辑设计

物理设计(MySQL后端开发)

部分代码(其他类似)

构建student表,设置外键,建立级联:
create table student(
studentid char(15) not null primary key,
name char(10) not null,
sex char(2) not null,
class char(4) not null,
department char(2) not null,
birthday date null,
native_place char(10) null,
constraint fk_class foreign key (class) references class(id) on update cascade on delete cascade,
constraint fk_department foreign key (department) references department(id) on update cascade on delete cascade);

前端开发(Java):

关键代码:

定性查询、将数据存入JTable表:

憨憨如我,一开始没想这么多,建立了一个超大的表

//定义Vector title, title1, title2, title3, title4 = null;JTable table = null;JScrollPane scrollpane = null;
// 建表title = new Vector();title1 = new Vector();title2 = new Vector();title3 = new Vector();title4 = new Vector();title1.add("学号");title1.add("姓名");title1.add("性别");title1.add("籍贯");title1.add("学籍变更");title1.add("记录时间");title1.add("描述");title1.add("奖励");title1.add("记录时间");title1.add("描述");title1.add("处罚");title1.add("记录时间");title1.add("描述");title1.add("是否生效");table = new JTable(title, title1);table.setPreferredScrollableViewportSize(new Dimension(450, 160));scrollpane = new JScrollPane(table);scrollpane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);scrollpane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
public void queryProcess(String sQueryField) {try {// 建立查询条件String sql1 = "select student.studentid,student.name,student.sex,student.class,student.department,student.birthday,student.native_place,\r\n"+ "          change_code.description4,change_al.rec_time1,change_al.description1,\r\n"+ "          reward_levels.description5,reward.rec_time2,reward.description2,\r\n"+ "          punish_levels.description6,punishment.rec_time3,punishment.description3,punishment.enable\r\n"+ "from  student,change_al,reward,punishment,change_code,reward_levels,punish_levels\r\n"+ "where student.studentid=reward.studentid and student.studentid=change_al.studentid and student.studentid=punishment.studentid \r\n"+ "           and change_al.change_al=change_code.code and reward.levels=reward_levels.code and punishment.levels=punish_levels.code \r\n"+ " and ";String queryFieldStr = jCBSelectQueryFieldTransfer(box_choose);sql1 = sql1 + queryFieldStr + "='" + sQueryField + "';";System.out.println("queryProcess(). sql = " + sql1);db.connect();ResultSet rs1 = db.executeQuery(sql1);// 将查询获得的记录数据,转换成适合生成JTable的数据形式title.clear();while (rs1.next()) {Vector v = new Vector();v.add(rs1.getString("studentid"));v.add(rs1.getString("name"));v.add(rs1.getString("sex"));v.add(rs1.getString("birthday"));v.add(rs1.getString("native_place"));v.add(rs1.getString("description4"));v.add(rs1.getString("rec_time1"));v.add(rs1.getString("description1"));v.add(rs1.getString("description5"));v.add(rs1.getString("rec_time2"));v.add(rs1.getString("description2"));v.add(rs1.getString("description6"));v.add(rs1.getString("rec_time3"));v.add(rs1.getString("description3"));v.add(rs1.getString("enable"));title.add(v);}table.updateUI();db.disconnect();} catch (SQLException sqle) {System.out.println("sqle = " + sqle);JOptionPane.showMessageDialog(null, "数据操作错误", "错误", JOptionPane.ERROR_MESSAGE);} catch (Exception e) {System.out.println("e = " + e);JOptionPane.showMessageDialog(null, "数据操作错误", "错误", JOptionPane.ERROR_MESSAGE);}}
简易登录
public class login {public login() {//设置窗口JFrame jf = new JFrame();// jf.setResizable(false);jf.setSize(580, 350);jf.setLocation(20, 20);jf.setLayout(new BorderLayout());//定义组件JLabel label1 = new JLabel("账户 :");//设置账户label1.setFont(new Font("Dialog", 1, 15));label1.setForeground(Color.BLACK);JLabel label2 = new JLabel("密码 :");//设置密码label2.setFont(new Font("Dialog", 1, 15));label2.setForeground(Color.BLACK);JTextField text = new JTextField(13);//设置账户文本框text.setBorder(BorderFactory.createLineBorder(Color.darkGray));JPasswordField password = new JPasswordField(13);//设置密码文本框password.setBorder(BorderFactory.createLineBorder(Color.darkGray));JButton button = new JButton("登录");//设置登录按钮button.setBorderPainted(false);button.setForeground(Color.GRAY);button.setBackground(Color.ORANGE);// 设置背景面板JPanel panel1 = new JPanel() {public void paintComponent(Graphics g) {super.paintComponent(g);ImageIcon image = new ImageIcon("D:\\eclipse\\workspace\\学生信息管理系统\\Pictures\\8463593.jpg");g.drawImage(image.getImage(), 0, 0, getWidth(), getHeight(), image.getImageObserver());}};panel1.setLayout(null);//取消背景板布局//加入组件panel1.add(label1);panel1.add(label2);panel1.add(text);panel1.add(password);panel1.add(button);//设置组件位置label1.setBounds(180, 200, 40, 20);text.setBounds(230, 200, 125, 20);label2.setBounds(180, 230, 40, 20);password.setBounds(230, 230, 125, 20);button.setBounds(260, 276, 60, 20);//加入窗口jf.add(panel1);jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);jf.setVisible(true);//为登录按钮设置监听器button.addMouseListener(new MouseAdapter() {public void mouseClicked(MouseEvent e) {String inputstr1 = text.getText().trim();String inputstr2 = password.getText().trim();if (inputstr1.equals("") && inputstr2.equals("")) {jf.dispose();new ManagerFrame();} else {JOptionPane.showConfirmDialog(null, "账户或密码错误", "温馨提示", JOptionPane.CLOSED_OPTION);}}});}public static void main(String[] args) {new login();}
}
焦点获取(花里胡哨)
jf.addWindowFocusListener(new WindowFocusListener() {@Overridepublic void windowLostFocus(WindowEvent e) {// TODO Auto-generated method stubjf.dispose();}@Overridepublic void windowGainedFocus(WindowEvent e) {// TODO Auto-generated method stubSystem.out.println("点击窗口区域");}});
审计(简易版)
public void Audit(String sql) throws Exception {// TODO Auto-generated method stubFile file=new File("D:\\eclipse\\workspace\\学生信息管理系统\\Audit\\数据库审计文档.txt");FileOutputStream out=new FileOutputStream(file,true);String str=sql;//分隔符String strline="***********************************\r\n";str+="\r\n";//时间Date date =new Date();SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒:\n");String time=sdf.format(date);out.write(time.getBytes());out.write(str.getBytes());out.write(strline.getBytes());out.close();}
前后端的连接
public class DbProcess{Connection connection = null;ResultSet rs = null;//mysql数据库urlString userMySql="root"; String passwordMySql="数据库的密码";//String urlMySql="jdbc:mysql://localhost:3306/db_test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT";String urlMySql = "jdbc:mysql://localhost:3306/db_test?user="+userMySql+"&password="+passwordMySql + "&useUnicode=true&characterEncoding=gbk&useSSL=false&serverTimezone=GMT";
//如果是使用MySQL5.0版本,则
//String urlMySql = "jdbc:mysql://localhost:3306/db_test?user="+userMySql+"&password="+passwordMySql + "&useUnicode=true&characterEncoding=gbk";//sqlserver数据库url//String urlSqlServer = "jdbc:sqlserver://localhost:1433;integratedSecurity=true;DatabaseName=InfoDb";public DbProcess() {try {//mysql数据库设置驱动程序类型Class.forName("com.mysql.cj.jdbc.Driver"); System.out.println("mysql数据库驱动加载成功");
//如果是MySQL5.0版本,则去掉.cj//sqlserver数据库设置驱动程序类型//Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//System.out.println("sqlserver数据库驱动加载成功");}catch(java.lang.ClassNotFoundException e) {e.printStackTrace();}}public void connect(){try{//mysql数据库connection = DriverManager.getConnection(urlMySql);  //sqlserver数据库//connection = DriverManager.getConnection(urlSqlServer);if(connection!=null){System.out.println("数据库连接成功");}}catch(Exception e){e.printStackTrace();}}public void disconnect(){try{if(connection != null){System.out.println("数据库连接断开");connection.close();connection = null;}}catch(Exception e){e.printStackTrace();}}public ResultSet executeQuery(String sql) {try {System.out.println("executeQuery(). sql = " + sql);PreparedStatement pstm = connection.prepareStatement(sql);// 执行查询rs = pstm.executeQuery();} catch(SQLException ex) { ex.printStackTrace();}return rs;}//插入//executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。//executeUpdate用于执行 INSERT、UPDATE 或 DELETE 语句//以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。//执行增、删、改语句的方法public int executeUpdate(String sql) {int count = 0;connect();try {Statement stmt = connection.createStatement();count = stmt.executeUpdate(sql);} catch(SQLException ex) { System.err.println(ex.getMessage());}disconnect();return count;}
}

结果

基本上实现了数据库的基本操作和简单的审计功能。
但是,但是!存在一些小小的问题,比如所有学生必须有奖励又有处罚才能在“学生信息查询”中被找到,所以我又偷偷摸摸在前面的查询表格中加入了查询功能,其实可以把“学生信息查询”的表格简化,在其他表格中构建如老师案例的表。又或者在没有处罚和奖励的情况下强制填入无(还有待改良)。

效果图










小结

不管怎么说,这一次的课设确实让我学到了很多东西,虽然自己还是菜菜的,不过问题不大,在今后的学习生活中,还要继续努力哦!

源代码

链接:https://pan.baidu.com/s/1q3mN5a6fhzCZUrFlFd3HFA
提取码:1lfb

【记录贴】数据库课程设计——学生信息管理系统相关推荐

  1. oracle学生信息管理系统课程设计,数据库课程设计-学生信息管理系统的设计与实现.doc...

    数据库课程设计-学生信息管理系统的设计与实现 2011-2012课程设计II 学生信息管理系统的设计与实现 一 设计内容 建立一个简单的在校学生信息查询系统,可以让使用者查询到学生的一些简单的个人信息 ...

  2. 数据库课程设计——学生信息管理系统

    学生信息管理系统 0 前言 0.1效果演示 0.2 开发工具 0.3 创新点 1.系统需求分析 1.1 系统功能分析 1.2 系统功能模块设计(划分) 1.3 与其它系统的关系 1.4 数据流程图 2 ...

  3. 查询学生选修课程管理系统java_JAVA数据库课程设计学生选课管理系统的

    <JAVA数据库课程设计学生选课管理系统的>由会员分享,可在线阅读,更多相关<JAVA数据库课程设计学生选课管理系统的(59页珍藏版)>请在人人文库网上搜索. 1.一.课程设计 ...

  4. ASP.NET程序设计课程设计——学生信息管理系统

    点击查看详细信息 ASP.NET程序设计课程设计--学生信息管理系统 一.实验目的 综合运用们所学的ASP.NET知识,开发学生信息管理系统,完成相关功能: (1)教师管理 (2)学生信息 (3)课程 ...

  5. C语言课程信息管理系统课程设计,c语言课程设计学生信息管理系统.doc

    c语言课程设计学生信息管理系统 课程设计报告 课程名称: 高级语言程序设计课程设计 姓 名: 汤璞君 班级学号: BX1209 121003410937 指导教师: 吉顺如 完成日期: 2013.6. ...

  6. 数据库课程设计-员工信息管理系统(基于python和MySQL实现)

    一.项目地址 具体项目相关信息可移步至我的Github查看,那里有整套项目文件以及课程设计报告等,仅供交流学习和参考,如有错误之处请多多指正哦. 二.系统定义 随着计算机技术的不断发展,计算机作为知识 ...

  7. java查询学生信息_分别显示女生_女生学生基本信息的代码_java课程设计学生信息管理系统_毕业论文.doc...

    java课程设计学生信息管理系统_毕业论文 学 号: 课 程 设 计 题 目学生信息管理系统学 院计算机科学与信息工程学院专 业金融信息化服务外包班 级学生姓名指导教师 2015年12月28日 课程设 ...

  8. 数据库课程设计----学生信息与选课、成绩评价管理系统

    目录 一.需求分析 4 二.概念设计 5 2.1 概念模型(E-R图) 6 2.2 数据字典 6 三.逻辑结构设计 5 3.1 关系模式 6 3.2 系统结构图 6 四.物理设计 5 4.1 存储安排 ...

  9. Java课程设计——学生信息管理系统

    一.项目简介 二.项目构架图 三.团队成员任务简介 四.代码 五.项目运行图片 一.项目简介: 实现一个功能简单的学生信息管理系统,该系统具有按照账户名密码登录功能,登录后,可以添加,删除,修改.查询 ...

最新文章

  1. 果然,武汉驶上了AI高速路
  2. 轻松智能的数据中心冷却节能方法
  3. Cambridge eap essay 1
  4. NOIP信息奥赛--1995“同创杯”初中复赛题题解(五)
  5. 【0ms优化】剑指 Offer 18. 删除链表的节点
  6. 安卓跑linux程序_Android下运行Linux可执行程序
  7. php引用其他接口,PHP 接口与接口的引用
  8. vue+ 下拉框有选择项 点击选项也拿到值就是页面不显示选中项
  9. 登陆模板_曝北京国安克星将登陆中超,3年进84球,可成中超新政引援模板
  10. C#知识点:操作XML
  11. BrainOS —最像大脑的AI
  12. 【UE4】特效之 Particle System 详解(一)—— 综述
  13. IDEA中如何进行XML解析
  14. 服务器系统sm总线控制器驱动,sm总线控制器驱动
  15. 计算机最小的计量单位,计算机中最小的计量单位是
  16. 齐次线性方程组、齐次方程、齐次多项式
  17. 巴比特 | 元宇宙每日必读:工业元宇宙究竟是什么,为何它值得被追捧?
  18. java调用浏览器_Java调用浏览器打开网页实例完整版
  19. JavaScript高级程序设计(第4版)学习随笔【第六章】
  20. StatisticsView

热门文章

  1. js中事件对象event的兼容性问题
  2. 我为什么要创建帮创业者找合伙人的缘创派(ycpai.com)?
  3. spss实现k均值聚类
  4. HAWQ个人学习笔记(一)——HAWQ介绍
  5. springboot+基于web的传染病信息管理系统的设计与实现 毕业设计-附源码221124
  6. 试题 历届真题 翻硬币【第四届】【省赛】【B组】
  7. 大学计算机考试纲要,大学计算机考试纲要
  8. 10.12NOIP模拟赛
  9. 那个,在你颓唐不安的时候一直陪在你身边的我。
  10. 位图索引bitmap(一):基本概念