《数据库概论》课程设计实验报告书_第1页
《数据库概论》课程设计实验报告书_第2页
《数据库概论》课程设计实验报告书_第3页
《数据库概论》课程设计实验报告书_第4页
《数据库概论》课程设计实验报告书_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、数据库系统概论学生成绩管理系统课程设计实验报告书安徽工业大学计算机学院姓 名专 业班 级学 号指导教师戴小平分 数2016年 6月 1 日数据库系统概论课程设计实验报告书 安徽工业大学计算机科学与技术学院 PAGE I摘 要摘要内容:本实验报告采用了oracle数据库工具,使用java窗体可视化编程来执行操作。实现了不同身份的人员对教师信息、学生信息以及学生成绩的不同操作。关键词:oracle数据库,java编程,sql语句,学生成绩管理系统。 PAGE i目录 TOC o 1-3 h z u HYPERLINK l _Toc452921018 摘要内容: PAGEREF _Toc452921

2、018 h I HYPERLINK l _Toc452921019 关键词: PAGEREF _Toc452921019 h I HYPERLINK l _Toc452921020 1 绪 论 PAGEREF _Toc452921020 h 1 HYPERLINK l _Toc452921021 1.1 概述 PAGEREF _Toc452921021 h 1 HYPERLINK l _Toc452921022 1.1.1 问题的提出 PAGEREF _Toc452921022 h 1 HYPERLINK l _Toc452921023 1.1.2 本课题的意义 PAGEREF _Toc452

3、921023 h 1 HYPERLINK l _Toc452921024 1.2 开发环境与工具介绍 PAGEREF _Toc452921024 h 1 HYPERLINK l _Toc452921025 2 系统需求分析与设计 PAGEREF _Toc452921025 h 2 HYPERLINK l _Toc452921026 2.1 用户需求分析 PAGEREF _Toc452921026 h 2 HYPERLINK l _Toc452921027 2.1.1 用户需求 PAGEREF _Toc452921027 h 2 HYPERLINK l _Toc452921028 2.1.2 系

4、统功能需求 PAGEREF _Toc452921028 h 2 HYPERLINK l _Toc452921029 2.2 功能模块图及分模块功能描述 PAGEREF _Toc452921029 h 2 HYPERLINK l _Toc452921030 2.2.1 系统的功能模块图 PAGEREF _Toc452921030 h 2 HYPERLINK l _Toc452921031 2.2.2 系统功能模块简介 PAGEREF _Toc452921031 h 2 HYPERLINK l _Toc452921032 2.3 数据库设计 PAGEREF _Toc452921032 h 3 HY

5、PERLINK l _Toc452921033 2.3.1 系统E-R图 PAGEREF _Toc452921033 h 3 HYPERLINK l _Toc452921034 2.3.2 数据库逻辑结构设计 PAGEREF _Toc452921034 h 4 HYPERLINK l _Toc452921035 管理员表 PAGEREF _Toc452921035 h 5 HYPERLINK l _Toc452921036 班级表 PAGEREF _Toc452921036 h 6 HYPERLINK l _Toc452921037 3 系统实施 PAGEREF _Toc452921037 h

6、 7 HYPERLINK l _Toc452921038 3.1 建立数据库 PAGEREF _Toc452921038 h 7 HYPERLINK l _Toc452921039 3.2 数据库连接 PAGEREF _Toc452921039 h 10 HYPERLINK l _Toc452921040 3.3 主要模块实施 PAGEREF _Toc452921040 h 10 HYPERLINK l _Toc452921041 3.3.1 登录模块的开发 PAGEREF _Toc452921041 h 11 HYPERLINK l _Toc452921042 3.3.2 管理员工具模块 P

7、AGEREF _Toc452921042 h 11 HYPERLINK l _Toc452921043 3.3.3 教师工具模块 PAGEREF _Toc452921043 h 12 HYPERLINK l _Toc452921044 3.3.4 学生工具模块 PAGEREF _Toc452921044 h 12 HYPERLINK l _Toc452921045 3.4 系统测试 PAGEREF _Toc452921045 h 12 HYPERLINK l _Toc452921046 3.4.1 软件测试的对象 PAGEREF _Toc452921046 h 12 HYPERLINK l _

8、Toc452921047 3.4.2 软件测试的结果 PAGEREF _Toc452921047 h 13 HYPERLINK l _Toc452921048 4 系统说明 PAGEREF _Toc452921048 h 18 HYPERLINK l _Toc452921049 4.1 开发环境 PAGEREF _Toc452921049 h 18 HYPERLINK l _Toc452921050 总 结 PAGEREF _Toc452921050 h 19 HYPERLINK l _Toc452921051 参考文献 PAGEREF _Toc452921051 h 20 HYPERLINK

9、 l _Toc452921052 附录:部分源代码 PAGEREF _Toc452921052 h 21 PAGE 291 绪 论1.1 概述1.1.1 问题的提出 在学生成绩管理中,管理员、教师、学生对成绩要有不同的管理权限,如何构建数据库、如何解决数据库之间的关系、如何通过软件来实现不同身份给予不同的权限是本课程设计的主要问题。1.1.2 本课题的意义 通过这次课程设计,管理员能够实现对学生信息、教师信息的管理,教师能够对学生的成绩,学生选课信息进行操作和管理,同时学生能够对成绩进行查询,对课程进行选择等功能。1.2 开发环境与工具介绍 数据库使用oralce数据库,编程工具使用java窗

10、体可视化编程。2 系统需求分析与设计2.1 用户需求分析2.1.1 用户需求不同的用户,根据身份的不同,可对不同的信息进行操作。2.1.2 系统功能需求管理员:对学生信息,教师信息的增、删、改、查功能,以及对课程的增、删、改、查,对学生选课信息的管理,但是对于学生成绩不能够进行操作教师:对学生成绩的增、删、改、查功能。学生:对成绩的查询、对课程的选择功能。2.2 功能模块图及分模块功能描述2.2.1 系统的功能模块图2.2.2 系统功能模块简介该系统是对不同的身份登陆,给予不同的功能权限,以实现对数据库信息的管理。2.3 数据库设计2.3.1 系统E-R图 2.3.2 数据库逻辑结构设计 学生

11、信息表数据库表/视图ID:stu_table 数据库表/视图名称:学生信息表 序号字段 ID字段名称类 型长 度PK / FK取值范围说 明1Stuid学号Varchar2()10Pk记录学生的学号 2Stuname姓名Varchar2()10记录学生名称3Stusex 性别Varchar2()2男 女记录学生性别4Stukey密码Varchar2()16长度在6-16记录学生登陆密码5Clid老师编号Varchar2()10Fk班级编号 外键教师信息表数据库表/视图ID:tea_table 数据库表/视图名称:教师信息表 序号字段 ID字 段 名 称类 型长 度PK / FK取值范围说 明1

12、Teaid教师编号Varchar2()10Pk记录教师编号 主键2Teaname教师姓名Varchar2()10记录教师姓名3Teasex性别Varchar2()2男 或 女记录教师性别4Teakey教师登陆密码Varchar2()16长度在6-16记录老师登陆密码课程表数据库表/视图ID:co_table 数据库表/视图名称:课程表 序号字段 ID字 段 名 称类 型长 度PK / FK取值范围说 明1Coid课程编号Varchar210Pk记录课程编号2Coname课程名称Varchar210记录课程名称3Cotype课程类型Varchar216必修课 公共选修课 专业选修课记录课程类型4

13、Cocredit课程学分Number记录课程学分5Teaid教师编号Varchar210Fk记录该课程的教师信息管理员表数据库表/视图ID: ad_table 数据库表/视图名称:管理员表 序号字段 ID字 段 名 称类 型长 度PK / FK取值范围说 明1Adid管理员编号Varchar210Pk记录管理员编号 主键2Adname管理员姓名Varchar210记录姓名3Adkey管理员密码Varchar216长度在6-16记录管理员密码成绩表数据库表/视图ID:gra_table 数据库表/视图名称:成绩表 序号字段 ID字 段 名 称类 型长 度PK / FK取值范围说 明1Stuid学

14、号Varchar210 Pk学号 主键 外键2Coid课程号Varcahr210Pk课程号 主键 外键3Gra成绩Number学生成绩4Pass是否通过Varchar25Yes 或 no 记录该课程是否通过班级表数据库表/视图ID:cl_table 数据库表/视图名称:班级表 序号字段 ID字 段 名 称类 型长 度PK / FK取值范围说 明1Clid班级编号Varcahr210Pk班级的唯一编号 2Clname班级名称Varchar210班级名称3Teaid教师编号Varchar210Fk班主任,管理班级 3 系统实施3.1 建立数据库 创建数据库表的SQL语句管理员表学生表班级表教师表课

15、程表成绩表3.2 数据库连接 Connection conn=null;PreparedStatement pstmt=null;ResultSet rs=null;try/第一步,加载数据库驱动,不同的数据库驱动程序是不一样的Class.forName(oracle.jdbc.driver.OracleDriver);/第二步:得到数据库连接String dbUrl1=jdbc:oracle:thin:127.0.0.1:1521:whe;/设置包连接路径String username=scott;/设置数据库用户名称String password=tiger;/废黜数据库用户密码/通过连接

16、字段进行连接conn=DriverManager.getConnection(dbUrl1,username,password);catch(Exception e)finallytry /关闭各连接字段if(null!=conn)conn.close();if(null!=pstmt)pstmt.close();if(null!=rs)rs.close(); catch (SQLException e2) / TODO: handle exception 3.3 主要模块实施3.3.1 登录模块的开发 登陆界面:登陆界面可以选择不同的身份进行登陆,用户名为每个实体的主键,默认密码与用户名相同

17、。当选择不同的身份时,会从不同的表中查询密码,如果不符合,会报错,正确则进入相应的工具界面。3.3.2 管理员工具模块 管理员的操作主要是对学生与教师的信息的增、删、改、查,以及对课程信息的管理。但不能够对学生成绩进行干预,也不能对学生成绩进行查询。3.3.3 教师工具模块教师工具主要是对学生成绩进行录入、查询、修改和删除。3.3.4 学生工具模块学生工具只要是去学生成绩进行查询和对课程的选择。3.4 系统测试3.4.1 软件测试的对象根据不同的登陆身份,来对各个表格的数据进行增、删、改、查等操作3.4.2 软件测试的结果学生模块学生成绩查询所有成绩查询查询未通过成绩学生选课模块选课时会将课程

18、列在下述的列表中,选择时可根据表格内的课程号来进行选择。教师模块录入成绩成绩的录入是通过学号以及课程号来进行定位,成绩可以为空,可以后期修改。查询成绩成绩查询可以通过学号,课程号,班级来定位信息查询。不同的查询方式只需要输入不同的信息即可 删除成绩成绩的删除也需要通过学号与课程号来进行定位删除,同时,如果成绩不存在,会报错。修改成绩成绩修改需要学号以及课程号来进行定位。此处有一个bug ,在更新的时候,如果成绩小于60的话,那么pass 不会更改,有待修正。管理员模块学生教师信息管理通过学号或者工号来对学生和教师的信息进行增、删、改、查。课程信息管理通过信息的写入,来进行课程信息的增、删、改、

19、查。4 系统说明4.1 开发环境本系统是在java语言进行开发,使用oracle数据库来进行数据管理,因此电脑要预装jdk 来运行java程序,同时也要安装oracle 来管理数据库中的数据。总 结该课程设计前后共耗时四周时间,包括对java界面设计的学习,java连接数据库和对oracle的复习。全部工作均自主完成,参考文献见附录。自我认为工作进展不是很顺利,由于对于java界面设计的不熟悉,很多插件都不是很熟悉的使用,因此界面方面做的很单调。同时,对界面设计的过程中,没有整体的把握,往往设计到一半,另一个想法出来,又要推翻重新来过,因此消耗了很多的时间。对数据库的设计起初做的很不全面,做到

20、后期还要回来修改数据库,因此耽误了更多的时间。同时,对用户需求的分析也没做的很好,对用户的功能方面做了很多没必要的功能,后期又进行了一部分修改。通过这次课程设计,我学会了很多。最大的收获就是使我全面的接触了项目设计的总体步骤,让我认识到了每一个步骤的重要性。无论是前期的需求分析还是后期的测试程序,都是相互关联的,需求分析没有做好,程序编写时就会没有目标,没有明确的功能需求。测试程序没有做好,就会存在很多bug,对需求的实现也有很大的影响。这次课程设计中,对于用户的需求基本完善,但没有完成的问题还有很多。其中最大的问题就是该程序是单机版的,如果能够通过网络将此程序联网运行,那就更好了。最后,我要

21、感谢戴老师对我课程设计的指导,修正。参考文献1数据库系统及应用 主编:戴小平2Java大学实用教程 电子工业大学出版社附录:部分源代码登陆界面源码:import java.awt.BorderLayout;import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.colorchooser.ColorChooserComponentFactory;import javax.swing.

22、JLabel;import javax.swing.JOptionPane;import javax.swing.SwingConstants;import javax.swing.JTextField;import javax.swing.JPasswordField;import javax.swing.JComboBox;import javax.swing.DefaultComboBoxModel;import javax.swing.JButton;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;

23、import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.text.Normalizer.Form;import java.awt.Font;public class Login_Frame extends JFrame private JPanel contentPane;private JTextField userNameText;p

24、rivate JPasswordField userPasswordField;private int choose = 1;/* * Launch the application. */public static void main(String args) EventQueue.invokeLater(new Runnable() public void run() try Login_Frame frame = new Login_Frame();frame.setVisible(true); catch (Exception e) e.printStackTrace(););/* *

25、Create the frame. */public Login_Frame() setTitle(u767Bu9646);try setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 450, 300);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5);setContentPane(contentPane);contentPane.setLayout(null);JLabel userNameLabel = n

26、ew JLabel(u7528u6237uFF1A);userNameLabel.setHorizontalAlignment(SwingConstants.CENTER);userNameLabel.setBounds(10, 34, 54, 23);contentPane.add(userNameLabel);JLabel userKeyLabel = new JLabel(u5BC6u7801uFF1A);userKeyLabel.setHorizontalAlignment(SwingConstants.CENTER);userKeyLabel.setBounds(10, 91, 54

27、, 23);contentPane.add(userKeyLabel);userNameText = new JTextField();userNameText.setBounds(87, 35, 207, 21);contentPane.add(userNameText);userNameText.setColumns(10);userPasswordField = new JPasswordField();userPasswordField.setToolTipText();userPasswordField.setHorizontalAlignment(SwingConstants.LE

28、FT);userPasswordField.setBounds(87, 92, 207, 21);contentPane.add(userPasswordField);JComboBox userTypeBox = new JComboBox();userTypeBox.setModel(new DefaultComboBoxModel(new String u7BA1u7406u5458, u6559u5E08, u5B66u751F );userTypeBox.setBounds(87, 149, 139, 21);contentPane.add(userTypeBox);JLabel u

29、serTypeLabel = new JLabel(u7528u6237u7C7Bu578BuFF1A);userTypeLabel.setHorizontalAlignment(SwingConstants.CENTER);userTypeLabel.setBounds(10, 148, 75, 23);contentPane.add(userTypeLabel);JButton loginButton = new JButton(u767Bu9646);loginButton.addMouseListener(new MouseAdapter() Overridepublic void m

30、ouseClicked(MouseEvent e) setChoose(userTypeBox.getSelectedIndex();if (userTypeBox.getSelectedIndex() = 0) / 所选 的是管理 员账户 /虽然每一种选择都要连一次数据库,但是也是为了避免因为标签的位置不同,而出现数据库运行错误问题try Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;Class.forName(oracle.jdbc.driver.OracleDriver);String

31、dbUrl1 = jdbc:oracle:thin:localhost:1521:whe;String username = scott;String password = tiger;conn = DriverManager.getConnection(dbUrl1, username, password);String userName = userNameText.getText();String sql = select adkey from ad_table where adid = + userName;boolean bl = false;try pstmt = conn.pre

32、pareStatement(sql);rs = pstmt.executeQuery();while (rs.next() String key = rs.getString(adkey);/如果把三种情况在这个地方判断的话,最好的是用index来索引,但是很容易出错String keyin = String.valueOf(userPasswordField.getPassword();/密码获取错误if(key.equals(keyin)bl = true;if(bl)ad_Tool_Frame frame = new ad_Tool_Frame();frame.setVisible(tr

33、ue);Login_Frame.this.dispose();elseString str = 用户名或密码输入错误,请核对后重新输入!;JOptionPane.showMessageDialog(null, str, 登陆失败, JOptionPane.ERROR_MESSAGE); catch (SQLException e1) / TODO 自动生成的 catch 块 catch (Exception e2) JOptionPane.showMessageDialog(null, 连接登陆失败, 连接登陆失败, JOptionPane.ERROR_MESSAGE);/所选的是教师账户el

34、se if(userTypeBox.getSelectedIndex() = 1)try Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;Class.forName(oracle.jdbc.driver.OracleDriver);String dbUrl1 = jdbc:oracle:thin:localhost:1521:whe;String username = scott;String password = tiger;conn = DriverManager.getConnection

35、(dbUrl1, username, password);String userName = userNameText.getText();String sql = select teakey from tea_table where teaid = + userName;boolean bl = false;try pstmt = conn.prepareStatement(sql);rs = pstmt.executeQuery();while (rs.next() String key = rs.getString(teakey);String keyin = String.valueO

36、f(userPasswordField.getPassword();/密码获取错误if(key.equals(keyin)bl = true;if(bl)tea_Frame frame = new tea_Frame();frame.setVisible(true);Login_Frame.this.dispose();elseString str = 用户名或密码输入错误,请核对后重新输入!;JOptionPane.showMessageDialog(null, str, 登陆失败, JOptionPane.ERROR_MESSAGE); catch (SQLException e1) /

37、TODO 自动生成的 catch 块 catch (Exception e2) JOptionPane.showMessageDialog(null, 连接登陆失败, 连接登陆失败, JOptionPane.ERROR_MESSAGE);else/所选的是学生账户try Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;Class.forName(oracle.jdbc.driver.OracleDriver);String dbUrl1 = jdbc:oracle:thin:localhost:

38、1521:whe;String username = scott;String password = tiger;conn = DriverManager.getConnection(dbUrl1, username, password);String userName = userNameText.getText();String sql = select stukey from stu_table where stuid = + userName;boolean bl = false;try pstmt = conn.prepareStatement(sql);rs = pstmt.exe

39、cuteQuery();while (rs.next() String key = rs.getString(stukey);String keyin = String.valueOf(userPasswordField.getPassword();/密码获取错误if(key.equals(keyin)bl = true;break;if(bl)stu_Tools_Frame frame = new stu_Tools_Frame();frame.setVisible(true);Login_Frame.this.dispose();elseString str = 用户名或密码输入错误,请核

40、对后重新输入!;JOptionPane.showMessageDialog(null, str, 登陆失败, JOptionPane.ERROR_MESSAGE); catch (SQLException e1) / TODO 自动生成的 catch 块 catch (Exception e2) JOptionPane.showMessageDialog(null, 连接登陆失败, 连接登陆失败, JOptionPane.ERROR_MESSAGE););loginButton.setBounds(69, 204, 93, 23);contentPane.add(loginButton);JB

41、utton cancleButton = new JButton(u53D6u6D88);cancleButton.addMouseListener(new MouseAdapter() Overridepublic void mouseClicked(MouseEvent arg0) Login_Frame.this.dispose(););cancleButton.setBounds(259, 204, 93, 23);contentPane.add(cancleButton);JLabel meLable = new JLabel(u5B66u751Fu548Cu6559u5E08u76

42、84u9ED8u8BA4u5BC6u7801u4E3Au5B66u5DE5u53F7);meLable.setFont(new Font(宋体, Font.PLAIN, 11);meLable.setBounds(87, 123, 207, 15);contentPane.add(meLable); catch (Exception e) e.printStackTrace();public int getChoose() return choose;public void setChoose(int x) choose = x;信息添加源码:public void mouseClicked(

43、MouseEvent e) if (typeBox.getSelectedIndex() = 1) /添加的学生信息String id = stuIdTextField.getText();String name = nameTextField.getText();String sex = sexBox.getSelectedItem().toString();String cl = clTextField.getText();if (id.equals() | name.equals() | cl.equals() JOptionPane.showMessageDialog(null, 你所

44、输入的信息不完整,请输入完整信息后添加!, 信息缺失,JOptionPane.ERROR_MESSAGE); else try Connection conn = null;PreparedStatement pstmt = null, pstmt2 = null;ResultSet rs = null;Class.forName(oracle.jdbc.driver.OracleDriver);String dbUrl1 = jdbc:oracle:thin:localhost:1521:whe;String username = scott;String password = tiger;

45、conn = DriverManager.getConnection(dbUrl1, username, password);String sql = select stuid from stu_table;pstmt = conn.prepareStatement(sql);rs = pstmt.executeQuery();boolean bl = false;while (rs.next() String oldid = rs.getString(stuid);if (oldid.equals(id) bl = true;if (bl) JOptionPane.showMessageDialog(null, 你所输入的学号已存在,请重新输入, 学号重复,JOptionPane.ERROR_MESSAGE); else sql = insert into stu_table values (?, ?, ?, ?, ?);pstmt2 = conn.prepareStatement(sql);pst

温馨提示

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

评论

0/150

提交评论