《数据库信息管理系统》课程设计报告学生成绩管理系统

上传人:仙*** 文档编号:28226304 上传时间:2021-08-24 格式:DOC 页数:24 大小:542KB
返回 下载 相关 举报
《数据库信息管理系统》课程设计报告学生成绩管理系统_第1页
第1页 / 共24页
《数据库信息管理系统》课程设计报告学生成绩管理系统_第2页
第2页 / 共24页
《数据库信息管理系统》课程设计报告学生成绩管理系统_第3页
第3页 / 共24页
点击查看更多>>
资源描述
数据库开发与实践数据库信息管理系统课程设计报告学院:现代科技学院专业:计算机科学与技术班级:08-3班 姓名:学号:指导教师:同组成员: 2011年7月1日一开发背景及目的学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件学生成绩,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生成绩管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。通过调研目前教学管理系统中的成绩管理子系统,了解成绩管理子系统的业务流程;通过分析比较,结合用户对成绩管理子系统的改进意见与实现情况,运用面向对象思想方法,设计和实现一个满足功能和性能,并有所创新的成绩管理子系统,以提高成绩管理的自动化、友好性等。本系统基于oracle10数据库和前台java语言图形界面设计,并且通过odbc进行后台数据库和前台界面的连接。二数据结构及数据库设计(后台设计)2.1由需求分析,E-R图如下:2.2数据结构学生管理=学籍,学生学籍,组成:学号,姓名,性别,出生日期,班级,电话班级管理=班级,班级情况,组成:班号,年级,班主任,教室课程管理=课程,课程分配,组成:课程号,课程名字,课程形式,备注年级课程=年级课程,年级课程分配,组成:年级,课程号成绩=成绩,成绩情况,组成:考试学期,学号,课程名字,成绩,评语分级用户=用户,用户管理,组成:用户名,口令,权限2.3由E-R图,有如下至少满足3NF的的关系模式学生(学号,姓名,性别,出生日期,班级,电话);班级(班号,年级,班主任,教室);课程(课程号,课程名字,课程形式,备注);年级课程(年级,课程号);成绩(考试学期,学号,课程名字,成绩,评语分级);2.4数据流数据流如下图所示:2.5系统功能结构图2.6流程图查询用户登入数据库后台插入管理2.7数据库设计本例采用oracle10作为后台数据库。2.7.1模型设计用PowerDesigner画出对应的CDM图,有系统自动生成PDM图PDM图如下:2.7.2建立数据库表学生表:CREATE TABLE student(student_ID int PRIMARY KEY,student_Name varchar(50) UNIQUE,student_Sex char(2),born_Date datetime,class_NO int,tele_Number varchar(50)班级表:CREATE TABLE class(class_No int PRIMARY KEY,grade int,director char(10),classroom_No char(10) 课程表:CREATE TABLE course(course_No int PRIMARY KEY,course_Name varchar(50),course_Type char(10),course_Des char(50)课程年级表:CREATE TABLE gradecourse(grade char(10),course_Name char(20)成绩表CREATE TABLE result(exam_No char(10),student_ID int,course_Name varchar(50),result float, level char(10) 2.7.3建立数据库触发器语句:create table student_before_log( student_id number(9,0), student_name varchar2(50), student_sex char(4), born_date date, class_no number(4,0), tele_number varchar2(50), ru_date date, address varchar2(50), when date);create or replace trigger biufer_studentbefore insert or update or deleteon studentfor each rowbegin insert into student_before_log values(:old.student_id,:old.student_name,:old.student_sex,:old.born_date,:old.class_no,:old.tele_number,:old.ru_date,:old.address,sysdate);end;create table class_before_log( class_No number(4,0), grade number(20,0), director char(10), classroom_No char(10), when date);create or replace trigger biufer_classbefore insert or update or deleteon classfor each rowbegin insert into class_before_log values(:old.class_No,:old.grade,:old.director ,:old.classroom_No,sysdate);end;create table course_before_log( course_No number(20,0), course_name varchar2(50), course_Type varchar2(50), course_des char(50), when date);create or replace trigger biufer_coursebefore insert or update or deleteon coursefor each rowbegin insert into class_before_log values(:old.course_No,:old.course_name,:old.course_Type ,:old.course_des,sysdate);end;create table result_before_log( exam_No char(10), student_id number(9,0), student_name varchar2(50), class_No number(4,0), course_name varchar2(50), result binary_float , when date);create or replace trigger biufer_resultbefore insert or update or deleteon resultfor each rowbegin insert into result_before_log values(:old.exam_No,:old.student_id,:old.student_name ,:old.class_No,:old.course_name,:old.result,sysdate);end;建立的表如下图:3 建立用户界面(前台设计)本实验采用odbc进行前台java语言和后台oracle数据库的链接,连接过程如下:3.1前台程序,用户登陆连接数据库代码:import java.sql.*; public class qtdm public static void main(String args) throws SQLException, ClassNotFoundException /定义了数据库连接串 String dbUrl = jdbc:odbc:test; /数据库的用户名 String user = test; /数据库的用户口令 String password = test; / 加载jdbc-odbc bridge驱动程序 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); / 与url指定的数据源建立连接 Connection conn = DriverManager.getConnection(dbUrl, user, password); /采用Statement进行查询 Statement state = conn.createStatement(); System.out.println(sucessful ); state.close();conn.close(); / 关闭Statement,其上的ResultSet也将关闭 3.2插入信息代码:import java.awt.CardLayout;import java.awt.Color;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;public class xueshengjm extends JFrame implements ActionListenerJMenuBar jm = new JMenuBar();JMenu jm1 = new JMenu(信息);JMenu jm2 = new JMenu(成绩);JMenuItem jmi1 = new JMenuItem(录入);JMenuItem jmi2 = new JMenuItem(查询);JMenuItem jmi21 = new JMenuItem(录入);JMenuItem jmi22 = new JMenuItem(查询);public xueshengjm() this.setTitle(老师界面); this.setLayout(null); this.setJMenuBar(jm); jm.add(jm1); jm.add(jm2); jm1.add(jmi1); jm1.add(jmi2); JLabel JL1 = new JLabel(欢迎进入老师查询界面); jmi1.addActionListener(this); jmi2.addActionListener(this); jm2.add(jmi21); jm2.add(jmi22); jm2.addActionListener(this); jmi2.addActionListener(this); jmi21.addActionListener(this); this.add(JL1); JL1.setForeground(Color.red); JL1.setFont(new java.awt.Font(宋体,Font.PLAIN,20); JL1.setBounds(150, 80, 200, 200); this.setBounds(400, 250, 500, 400); this.setVisible(true); public void actionPerformed(ActionEvent e) public static void main(String agrs) new xueshengjm(); 3.3添加学生信息代码:import java.awt.Color;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.ButtonGroup;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JRadioButton;import javax.swing.JTextField;public class chaxun extends JFrame implements ActionListener JLabel JL = new JLabel(查询成績,JLabel.CENTER); JLabel JLNumber = new JLabel(请输入学号:); JTextField JTNumber =new JTextField(); JButton JBset =new JButton(查询); JButton JBnext = new JButton(重置); JButton JBcr = new JButton(插入); JLabel JLName = new JLabel(姓名); JTextField JTName = new JTextField(); JLabel JLClass = new JLabel(班级); JTextField JTClass = new JTextField(); JLabel JL1 = new JLabel(数学); JTextField JT1 = new JTextField(); JLabel JL2 = new JLabel(语文); JTextField JT2 =new JTextField(); String sql= ; public chaxun()this.setTitle(查询成绩);this.setLayout(null);JL.setForeground(Color.red);JL.setFont(new java.awt.Font(宋体,Font.PLAIN,19);JL.setBounds(100, 30, 200, 40);this.add(JL);JLNumber.setBounds(100, 80, 100, 20);this.add(JLNumber);JTNumber.setBounds(200, 80, 80, 20);this.add(JTNumber);JLName.setBounds(100, 160, 80, 20);this.add(JLName);JTName.setBounds(200, 160, 80, 20);this.add(JTName);JL2.setBounds(100, 240, 100, 20);this.add(JL2);JT2.setBounds(200, 240, 80, 20);this.add(JT2);JLClass.setBounds(100, 280, 60, 20);this.add(JLClass);JTClass.setBounds(200, 280, 80, 20);this.add(JTClass);JL1.setBounds(100, 320, 60, 20);this.add(JL1);JT1.setBounds(200, 320, 80, 20);this.add(JT1);JBset.setBounds(80, 120, 90, 20);this.add(JBset);JBset.addActionListener(this);JBnext.setBounds(190, 120, 90, 20);this.add(JBnext);JBnext.addActionListener(this);JBcr.setBounds(300, 120, 90, 20);this.add(JBcr);JBcr.addActionListener(this);this.setBounds(400, 250, 500, 400);this.setVisible(true);/通过内部内重写关闭的方法 public void actionPerformed(ActionEvent e) / TODO Auto-generated method stub if(e.getSource()=JBcr) /处理登录事件; this.hide(); xiugai cx=new xiugai(); if(e.getSource()=JBset) String snumber =JTNumber.getText(); String sname=JTName.getText(); String sclass=JTClass.getText(); String ssex =女; String sbir =JT2.getText(); String scollect=JT1.getText(); sql=select*from student where Id=+snumber+; try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection cot = DriverManager.getConnection(jdbc:odbc:/student,root,123); Statement stm =cot.createStatement();/提交查巡 ResultSet rs =stm.executeQuery(sql);/取得查巡結果 if(rs.next() String name =rs.getString(2); JTName.setText(name); String clas =rs.getString(3); JTClass.setText(clas); String collect=rs.getString(5); JT1.setText(collect); String bir = rs.getString(6); JT2.setText(bir); /对数苦苦进行查询 int n = stm.executeUpdate(sql); if(n0) JOptionPane.showMessageDialog(null, 查询成功); else JOptionPane.showMessageDialog(null, 查询失败); /通过showmessagedialog()打印信息 else JOptionPane.showMessageDialog(null, 次用户不在); catch(Exception ee) if(e.getSource()=JBnext) JTNumber.setText(null); JTName.setText(null); JTClass.setText(null); JT1.setText(null); JT2.setText(null); public static void qtlj(String args) throws SQLException, ClassNotFoundException /定义了数据库连接串 String dbUrl = jdbc:odbc:test; /数据库的用户名 String user = test; /数据库的用户口令 String password = test; / 加载jdbc-odbc bridge驱动程序 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); / 与url指定的数据源建立连接 Connection conn = DriverManager.getConnection(dbUrl, user, password); /采用Statement进行查询 Statement state = conn.createStatement(); System.out.println(sucessful ); public static void main(String args) new chaxun(); 3.4修改学生信息代码:import java.awt.Color;import java.sql.*; import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.ButtonGroup;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JRadioButton;import javax.swing.JTextField;public class xiugai extends JFrame implements ActionListener JLabel JL = new JLabel(添加基本信息,JLabel.CENTER);JLabel JLNumber =new JLabel (学号:);JTextField JTNumber = new JTextField();JLabel JLName = new JLabel(姓名:);JTextField JTName = new JTextField();JLabel JLClass = new JLabel(班级:);JTextField JTClass = new JTextField();JLabel JLsex = new JLabel(性别:);ButtonGroup BG = new ButtonGroup();JRadioButton JRB1 = new JRadioButton(男);JRadioButton JRB2 = new JRadioButton(女);JLabel JL1 = new JLabel(学院:);JTextField JT1 = new JTextField();JButton JBAdd = new JButton(添加);JButton JBNext = new JButton(重置);String sql=;public xiugai() this.setTitle(添加学生信息); this.setLayout(null); JL.setForeground(Color.red); JL.setBounds(100, 30, 200, 40); this.add(JL); JLNumber.setBounds(100, 80, 100, 20); this.add(JLNumber); JTNumber.setBounds(200, 80, 80, 20); this.add(JTNumber); JLName.setBounds(100, 120, 60, 20); this.add(JLName); JTName.setBounds(200, 120, 80, 20); this.add(JTName); JLsex.setBounds(100, 160, 100, 20); this.add(JLsex); JRB1.setBounds(200, 160, 40, 20); JRB2.setBounds(300, 160, 40, 20); this.add(JRB1); this.add(JRB2); BG.add(JRB1); BG.add(JRB2); JLClass.setBounds(100, 240, 60, 20); this.add(JLClass); JTClass.setBounds(200, 240, 80, 20); this.add(JTClass); JL1.setBounds(100, 280, 60, 20); this.add(JL1); JT1.setBounds(200, 280, 100, 20); this.add(JT1); JBAdd.setBounds(80, 320, 90, 20); this.add(JBAdd); JBAdd.addActionListener(this); JBNext.setBounds(190, 320, 90, 20); this.add(JBNext); JBNext.addActionListener(this); this.setBounds(400, 250, 500, 400); this.setVisible(true); public void actionPerformed(ActionEvent e) if(e.getSource()=JBAdd) String snumber= JTNumber.getText(); String sname = JTName.getText(); String sclass = JTClass.getText(); String ssex =女; if(JRB1.isSelected() ssex=男; String scollect = JT1.getText(); sql=select * from student where snumber =+snumber+; try Class.forName(com.mysql.jdbc.Driver).newInstance(); Connection cot = DriverManager.getConnection(jdbc:mysql:/localhost:3306/student?characterEncoding=gbk ,root,123); Statement stm =cot.createStatement();/提交查巡 ResultSet rs =stm.executeQuery(sql);/取得查巡結果 if(rs.next() JOptionPane.showMessageDialog(null, 该號已經存在); else sql=insert into student values (+snumber+,+sname+,+sclass+,+ssex+,+scollect+); int i =stm.executeUpdate(sql); if(i0) JOptionPane.showMessageDialog(null, 添加成功); else JOptionPane.showMessageDialog(null, 刪除失敗); catch(Exception ee) if(e.getSource()=JBNext) JTNumber.setText(null); JTName.setText(null); JTClass.setText(null); JT1.setText(null); public static void main(String agrs) new xiugai(); 四、运行调试1.主登录界面2. 登入后二级主界面(1) 学生界面(2) 教师界面3.插入信息界面4. 查询基本信息界面 5. 查询学生成绩界面 五、心得体会及总结 做这次课程设计过程中,可以说“困难重重”,但是也学到不少东西。接到课设题目时,和Java课设对比了一下,之间只有一个是重叠的:学生学籍管理系统。但是两个的侧重点也不同:数据库课设的重点是后台数据库的设计和实现要合理、科学、安全,至少要满足3NF范式;Java课设要求前台应用程序要人性化,实用性强,对后台数据库要求不严格。 在整个课程设计过程中,我们小组6个成员以团队方式共进退,以项目方式管理,设计了整个系统。我认为这是对我们最大的考研也是最大的收获。我主要参与了E-R图的构建,后台数据库中学生表,课程表的设计和前台中登陆界面的设计。 但是在做的过程中,发现最大的问题是Java和Oracle连接有问题,为此找了很多资料,最终在同组成员的共同努力以及在强彦老师的悉心帮助下才得以解决。通过这次课设,确实加深了对数据库的以及与其他平台的兼容和协调性的认识。在解决连接数据库问题的过程中,更是对自己数据库知识和Java水平的考验,不过最终还是圆满解决。- 24 -
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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