数据库课程设计-成绩管理系统.doc_第1页
数据库课程设计-成绩管理系统.doc_第2页
数据库课程设计-成绩管理系统.doc_第3页
数据库课程设计-成绩管理系统.doc_第4页
数据库课程设计-成绩管理系统.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

成绩课程设计(论文)课程名称 数据库课程设计 题目名称_ 成绩管理系统_学生学院 计算机学院 专业班级 学 号_ _ _学生姓名_ _ _指导教师 顾国生 2016年 1 月 目录 引言.51 相关技术介绍52 需求分析62.1数据字典.62.2 数据流图.63 概念结构设计74 逻辑结构设计84.1 数据库设计.84.2 关系模式.84.3 系统模块图及各功能模块说明.95 数据库的物理结构设计106 用户界面设计127 系统测试方案与测试报告147.1 测试方案.147.2 测试报告.148 安装和使用说明199 心得体会1910 参考文献.20引言信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。虽然计算机与人类的关系愈来愈密切,但是还有人由于计算机操作不方便而继续用手工劳动。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。 而成绩管理系统恰恰符合了教学需求,当教师需要录入学生信息时,成绩管理系统就能大大方便教师的操作,提高效率。成绩管理系统主要提供了学生成绩的录入,包括学生的平时成绩,总评成绩,补考成绩,挂科成绩,各类的成绩的打印及优秀学生的评选。一、相关技术介绍这个课程设计是用java+MySql 编写的 ,java是为数据库结构和应用程序开发而设计的功能强大的面向对象的环境。MySql其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。二、需求分析2.1数据字典学生信息:学号,姓名,性别,班级,专业,已获学分选课表:学号,课程号,课程名,是否获取学分课程:课程号,课程名,课程学分成绩表:学号,课程号,课程名,平时成绩,考试趁机,补考成绩,重修成绩,总评成绩2.2数据流图系统登录成绩管理系统重修成绩打印重修名单打印补考成绩打印补考名单打印总评成绩打印重修成绩登记补考成绩登记考试成绩登记信息打印退出成绩登记优秀学生打印三、概念结构设计E-R图:上课时间课程学分课程名课程号是否获取学分总评成绩重修成绩补考成绩平时成绩考试成绩课程名课程号学号系别班级已获学分性别课程名课程号学号学号姓名学生成绩课程信息学生信息选课信息选课提供课程提供课程拥有四、逻辑结构设计4.1数据库设计:数据库由以下表组成:Student:学生信息表Choose_course:选课表Course:课程表Score:成绩表具体功能如下:根据学生选课表对学生成绩表进行各科成绩的录入4.2关系模式学生信息表(学号,姓名,性别,班级,专业,已获学分),其中学号为主码。选课表(学号,课程号,课程名,是否获取学分),其中学号和课程号为外码。课程(课程号,课程名,课程学分),其中课程号为主码。成绩表(学号,课程号,课程名,平时成绩,考试趁机,补考成绩,重修成绩,总评成绩),其中学号和课程号为外码。4.3系统模块图请参照2.2中的数据流图。各模块功能说明:系统登录:该系统使用时需登录,默认账号为:3113005818,密码为123。成绩登记:用于登记各类成绩考试成绩登记:用于登记考试成绩及平时成绩。补考成绩登记:用于登记补考成绩。重修成绩登记:用于登记重修成绩。打印:用于打印各种信息总评成绩打印:用于打印总评成绩。其中:总评成绩=30%*平时成绩+70*考试成绩。补考名单打印:用于打印补考名单,即总评成绩不到60分的学生。补考成绩打印:用于打印补考学生的成绩。重修名单打印:用于打印重修名单,及总评成绩不到60且补考成绩也不到60的学生。重修成绩打印:用于打印重修学生的成绩。优秀学生打印:用于打印优秀学生。及该学生每科总评成绩均大于85.退出:退出系统。五、数据库物理结构设计创建数据库:首先打开MySql可视化工具,我使用的是navicat for mySq建立数据库,首先向创建一个连接,然后在打开连接并右键选择创建grade_management数据库,并依次创建各表。如下图所示:创建各表的脚本文件如下创建学生表:CREATE TABLE student (s_no CHAR (8) PRIMARY KEY,s_name CHAR (8) NOT NULL,s_sex CHAR (2),s_class CHAR (8),s_spec CHAR (8)创建课程表: CREATE TABLE course (c_no CHAR (8) PRIMARY KEY,c_name CHAR (8) NOT NULL,c_point SMALLINT,c_time SMALLINT)创建选课表: CREATE TABLE choose_couse (s_no CHAR (8) NOT NULL,FOREIGN KEY (s_no) REFERENCES student (s_no),c_no CHAR (8) NOT NULL,FOREIGN KEY (c_no) REFERENCES course (c_no),c_name CHAR (8)创建成绩表: CREATE TABLE score (s_no CHAR (8),FOREIGN KEY (s_no) REFERENCES student (s_no),c_no CHAR (8),FOREIGN KEY (c_no) REFERENCES course (c_no),c_name CHAR (8),ord_score INT,exam_score INT,makeup_score INT,renovate_score INT,final_score INT)建表完成后在C:ProgramDataMySQLMySQL Server 5.1datagrade_management目录下会有四个表,如下:六、用户界面的设计登录界面如下:主界面如下:选择界面如下:打印界面如下:七、系统测试方案与测试报告:7.1测试方案:添加学生成绩测试添加学生补考成绩测试:添加学生重修成绩测试:学生总评成绩打印测试学生补考名单打印测试:学生补考成绩单打印测试:学生重修通知单打印测试:学生重修成绩单打印测试:优秀学生名单打印:7.2测试报告添加学生成绩测试:添加学生补考成绩测试:添加学生重修成绩测试:学生总评成绩打印测试:学生补考名单打印测试:学生补考成绩单打印测试:学生重修通知单打印测试:学生重修成绩单打印测试:优秀学生名单打印:八、安装和使用说明本程序使用的数据库软件是MySql,安装MySql后需设置MySql的用户登录口令为root,并建立数据库grade_management,并建建表文件导入该目录下,或者直接新建grade_management的四个表并填写数据。程序已经打包为一个jar可执行的java文件,需在有安装java虚拟机的环境下才能正常打开使用。九、心得体会通过本次的数据库课程设计,我进一步的了解了数据库的开发和使用,与看课本学习不同的是,这次是动手实践去做,而不仅仅局限于课本上的理论知识,更加进一步加深了对数据库的理解。并且,本次课程设计采用的开发语言是java,很多java知识自己完全不懂,之前也没有很深入的去学习java,所以很多知识点或者说是实现功能都是从网上找的或者看书找到的,虽然说这样做是辛苦点,而且效率会低点。但是,从中我确实也学到了不少知识。从一开始的java连接数据库,开始不知道怎么做,无从下手,后来翻书找到了实现的方法,当时确实自己是挺开始的。后来又接着遇到不少难题,比如界面转换,这是我做本次数据库课设最失败的地方,本来想在一个界面实现多个登记表的填写装换,后来发现不行,新添加的表总是覆盖前面添加的表导致表不可见。无奈,只得用弹窗的方式把表格呈现出来,当时也花费了比较多的时间。或许是自己知识的漏洞吧,接下来还得好好学习java知识。再者,就是电脑的系统一直装不了sql server,所以只能更换为MySql。还有一点感触最深的就是或许我的程序bug漏洞百出,又或者有各种各样的不好。但是,我想说的就是这个程序是我一个按键一个按键敲出来的!忙活了几天,有时也熬到了2,3点,但是看着一个程序一个个功能的实现,之前的所有辛苦也是值得的!最后谢谢老师本学期数据库的指导,提前祝老师新年快乐!十、参考文献 数据库系统概论(第五版), 王珊 萨师煊 ,高等教育出版社疯狂java讲义源代码(需导入java连接数据库mysql的驱动)import java.awt.Button;import java.awt.Canvas;import java.awt.Color;import java.awt.Dimension;import java.awt.Graphics;import java.awt.Point;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.SwingUtilities;public class TeachingManageSystem extends WindowAdapterJFrame fm=new JFrame(成绩管理系统);/窗口JFrame fmS=new JFrame(考试成绩登记);JFrame fmD=new JFrame(成绩打印);JFrame fm1=new JFrame(考试成绩登记);JFrame fm2=new JFrame(补考成绩登记);JFrame fm3=new JFrame(重修成绩登记);JFrame fm_score=new JFrame(期末成绩单);JFrame fm4=new JFrame(补考通知单);JFrame fm5=new JFrame(补考成绩单);JFrame fm6=new JFrame(重修通知单);JFrame fm7=new JFrame(重修成绩单);JFrame fm8=new JFrame(优秀学生名单);JMenuBar mb=new JMenuBar();/菜单栏JMenu s_rg=new JMenu(成绩登记);JMenu print=new JMenu(打印);JMenu exit=new JMenu(退出);JMenuItem exam_rg=new JMenuItem(考试成绩登记);/菜单项JMenuItem makeup_rg=new JMenuItem(补考成绩登记);JMenuItem renovate_rg=new JMenuItem(重修成绩登记);JMenuItem final_score=new JMenuItem(总评成绩);JMenuItem makeup_notice=new JMenuItem(补考通知单);JMenuItem makeup_score=new JMenuItem(补考成绩单);JMenuItem renovate_notice=new JMenuItem(重修通知单);JMenuItem renovate_score=new JMenuItem(重修成绩单);JMenuItem excellent_student=new JMenuItem(优秀学生名单);JMenuItem exit_system=new JMenuItem(退出系统);JPanel jp1=new JPanel();/用于装考试信息JPanel jp2=new JPanel();/用于装教职工信息JPanel jp3=new JPanel();/用于装系别信息JPanel jp_score=new JPanel();/用于打印成绩单JPanel jp4=new JPanel();/用于打印补考通知单JPanel jp5=new JPanel();/用于答应补考成绩单JPanel jp6=new JPanel();/用于打印重修通知单JPanel jp7=new JPanel();/用于打印重修成绩单JPanel jp8=new JPanel();/用于打印优秀学生名单JTable jt1;JScrollPane js1;Object obj=new Object165;JTable jt2;JScrollPane js2;Object obj2=new Object164;JTable jt3;JScrollPane js3;Object obj3=new Object164;JScrollPane js_score;Button bt1=new Button(保存);Button bt2=new Button(保存);Button bt3=new Button(保存);String driver=com.mysql.jdbc.Driver;/连接数据库private MyCanvas drawArea=new MyCanvas();/用于显示打印的画布private MyCanvas2 drawArea2=new MyCanvas2();private MyCanvas3 drawArea3=new MyCanvas3();private MyCanvas4 drawArea4=new MyCanvas4();private MyCanvas5 drawArea5=new MyCanvas5();private MyCanvas6 drawArea6=new MyCanvas6();int Style;JDialog jd1=new JDialog();/对话框JDialog jd2=new JDialog();public static void main(String args) throws Exception(new TeachingManageSystem().log();/(new TeachingManageSystem().frame();void initial() throws Exceptionexit.add(exit_system);exit_system.addActionListener(new ItemListener();s_rg.add(exam_rg);/成绩登记菜单添加菜单项s_rg.add(makeup_rg);s_rg.add(renovate_rg);exam_rg.addActionListener(new ItemListener();/菜单项添加监听器makeup_rg.addActionListener(new ItemListener();renovate_rg.addActionListener(new ItemListener();print.add(final_score);/信息查询菜单添加菜单项print.add(makeup_notice);print.add(makeup_score);print.add(renovate_notice);print.add(renovate_score);print.add(excellent_student);final_score.addActionListener(new ItemListener();/绑定监听器makeup_notice.addActionListener(new ItemListener();makeup_score.addActionListener(new ItemListener();renovate_notice.addActionListener(new ItemListener();renovate_score.addActionListener(new ItemListener();excellent_student.addActionListener(new ItemListener();mb.add(s_rg);/菜单栏添加菜单mb.add(print);mb.add(exit);fm.setJMenuBar(mb);/窗口添加菜单栏bt1.addActionListener(new ButtonListener();/按钮绑定监听器bt2.addActionListener(new ButtonListener();bt3.addActionListener(new ButtonListener();getTable();/成绩登记表js1.setBounds(20,20,450,200);jp1.setLayout(null);jp1.add(js1);bt1.setBounds(410,240,50,20);jp1.add(bt1);jp1.setVisible(true);fm1.add(jp1);fm1.setSize(500,320);getTable2();/补考成绩表js2.setBounds(20,20,450,200);/jp2.setBorder(new TitledBorder(补考考试成绩登记表);jp2.setLayout(null);jp2.add(js2);bt2.setBounds(410,240,50,20);jp2.add(bt2);jp2.setVisible(true);fm2.add(jp2);fm2.setSize(500,320);getTable3();/重修成绩表js3.setBounds(20,20,450,200);/jp3.setBorder(new TitledBorder(重修考试成绩登记表);jp3.setLayout(null);jp3.add(js3);bt3.setBounds(410,240,50,20);jp3.add(bt3);jp3.setVisible(true);fm3.add(jp3);fm3.setSize(500,320);/jp3.show(false);drawArea.setPreferredSize(new Dimension(200,250);/补考通知单drawArea.setBackground(Color.WHITE);drawArea.setBounds(0,0,200,250);jp4.add(drawArea);jp4.setLayout(null);fm4.add(jp4);jp4.setBackground(Color.WHITE);fm4.setSize(300,300);fm4.setVisible(false);drawArea2.setPreferredSize(new Dimension(200,250);/补考成绩单drawArea2.setBackground(Color.WHITE);drawArea2.setBounds(0,0,250,250);jp5.add(drawArea2);jp5.setLayout(null);fm5.add(jp5);jp5.setBackground(Color.WHITE);fm5.setSize(300,300);fm5.setVisible(false);drawArea3.setPreferredSize(new Dimension(200,250);/重修通知单drawArea3.setBackground(Color.WHITE);drawArea3.setBounds(0,0,200,250);jp6.add(drawArea3);jp6.setLayout(null);fm6.add(jp6);jp6.setBackground(Color.WHITE);fm6.setSize(300,300);fm6.setVisible(false);drawArea4.setPreferredSize(new Dimension(200,250);/重修成绩单drawArea4.setBackground(Color.WHITE);drawArea4.setBounds(0,0,250,250);jp7.add(drawArea4);jp7.setLayout(null);fm7.add(jp7);jp7.setBackground(Color.WHITE);fm7.setSize(300,300);fm7.setVisible(false);drawArea5.setPreferredSize(new Dimension(200,250);/优秀学生名单drawArea5.setBackground(Color.WHITE);drawArea5.setBounds(0,0,250,250);jp8.add(drawArea5);jp8.setLayout(null);fm8.add(jp8);jp8.setBackground(Color.WHITE);fm8.setSize(300,300);fm8.setVisible(false);drawArea6.setPreferredSize(new Dimension(200,250);/成绩单drawArea6.setBackground(Color.WHITE);drawArea6.setBounds(0,0,250,400);jp_score.add(drawArea6);jp_score.setLayout(null);fm_score.add(jp_score);jp_score.setBackground(Color.WHITE);fm_score.setSize(300,500);fm_score.setVisible(false);jd1.setTitle(保存成功);jd1.setSize(20,0);fm.setBounds(450,180,500,350);fm.setSize(500,350);fm.setVisible(true);public void frame() throws Exceptioninitial();fm.addWindowListener(this);fm.setVisible(true);public void windowClosing(WindowEvent e) /退出 if(JFrame)e.getSource()=fm)/点击fm的x按钮触发的事件 System.exit(0);class ItemListener implements ActionListenerOverridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubJMenuItem jmi=(JMenuItem)e.getSource();if(jmi=exam_rg)fm1.setVisible(true);else if(jmi=makeup_rg)tryClass.forName(driver);Connection conn=DriverManager.getConnection(jdbc:mysql:/127.0.01:3306/grade_management,root,root);/设置账号密码Statement stmt=conn.createStatement();Statement stmt1=conn.createStatement();/以下为查询要登记的补考成绩单ResultSet rs=stmt.executeQuery(select student.s_no,student.s_name,score.c_name from student,score where student.s_no=score.s_no and final_score60);/ResultSet rs1=stmt1.executeQuery(select makeup_score from score where final_score60);ResultSet rs1=stmt1.executeQuery(select makeup_score from score where final_score60);int i=0,j=0;while(rs.next()/获取内容if(rs.getString(1)!=null)for(j=0;j3;j+)obj2ij=rs.getString(j+1);i+;i=0;while(rs1.next()if(rs1.getObject(1)!=null)obj2i3=rs1.getInt(1);/成绩读入i+;catch(Exception e1)e1.printStackTrace();fm2.setVisible(true);else if(jmi=renovate_rg)tryClass.forName(driver);Connection conn=DriverManager.getConnection(jdbc:mysql:/127.0.01:3306/grade_management,root,root);/设置账号密码Statement stmt=conn.createStatement();Statement stmt1=conn.createStatement();/以下为查询要登记的重修成绩单ResultSet rs=stmt.executeQuery(select student.s_no,student.s_name,score.c_name from student,score where student.s_no=score.s_no and makeup_score60);ResultSet rs1=stmt1.executeQuery(select renovate_score from score where makeup_score60);int i=0,j=0;while(rs.next()/获取内容if(rs.getString(1)!=null)for(j=0;j3;j+)obj3ij=rs.getString(j+1);i+;i=0;while(rs1.next()if(rs1.getObject(1)!=null)obj3i3=rs1.getInt(1);/成绩读入i+;catch(Exception e1)e1.printStackTrace();fm3.setVisible(true);else if(jmi=makeup_notice)/fm4.setVisible(false);Style=1;drawArea.repaint();fm4.setVisible(true);else if(jmi=makeup_score)/fm4.setVisible(false);/Style=2;drawArea2.repaint();fm5.setVisible(true);else if(jmi=renovate_notice)drawArea3.repaint();fm6.setVisible(true);else if(jmi=final_score)drawArea6.repaint();fm_score.setVisible(true);else if(jmi=renovate_score)drawArea4.repaint();fm7.setVisible(true);else if(jmi=excellent_student)drawArea5.repaint();fm8.setVisible(true);else if(jmi=exit_system)System.exit(0);class JMenuListener implements ActionListenerOverridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubJMenu jm=(JMenu)e.getSource();if(jm=exit)System.exit(0);class ButtonListener implements ActionListenerOverridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubButton btn=(Button)e.getSource();if(btn=bt1) jt1.setModel(jt1.getModel();tryClass.forName(driver);Connection conn=DriverManager.getConnection(jdbc:mysql:/127.0.01:3306/grade_management,root,root);/设置账号密码Statement stmt=conn.createStatement();for(int i=0;i16;i+)/将成绩单写会数据库if(obji3!=null&obji4!=null)stmt.executeUpdate(Update score set ord_score=+obji3+, exam_score=+obji4+ where s_no=+obji0+ and c_name=+obji2+);else if(obji3!=null&obji4=null)/*stmt.executeUpdate(Update score set ord_score=+obji3+, exam_score=+null+ where s_no=+obji0+ and c_name=+obji2+);*/stmt.executeUpdate(update score set exam_score=null where s_no=10000 and c_no=200);else if(obji3=null&obji4!=null)stmt.executeUpdate(Update score set ord_score=+null+, exam_score=+obji4+ where s_no=+obji0+ and c_name=+obji2+);else if(obji3=null&obji4=null)stmt.executeUpdate(Update score set ord_score=+null+, exam_score=+null+ where s_no=+obji0+ and c_name=+obji2+);Point p=new Point();SwingUtilities.convertPointToScreen(p,fm1);jd1.setBounds(int)p.getX()+170,(int)p.getY()+130,20,0);jd1.setModal(true);jd1.setVisible(true);/*stmt.executeUpdate(Update score set ord_score=+obj03+, exam_score=+obj04+/这句别删,保持测试 where s_no=+obj00+ and c_name=+obj02+);*/catch(Exception ee)ee.printStackTrace();try Class.forName(driver);Connection conn=DriverManager.getConnection(jdbc:mysql:/127.0.01:3306/grade_management,root,root);Statem

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论