已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库课程设计报告1. 需求分析 用户的需求具体体现在选课信息和用户信息的提供、保存、更新和查询的方面。这就要求数据库的设计必须合理,使之能够充分满足各种信息的输入和输出,保证数据存储的可靠性,并且能够快速取出和存入。而前台显示部分,应具有人性化的界面,方便用户操作。因各个学校的实际情况不同,系统应该具有兼容性。例如:一些学校学生人数较多,同时登陆系统,系统承载的负荷就很大。系统需要同时处理很大的数据量,这时系统不会因此崩溃。此外,系统还应该具有较强的安全性,保证身份不同的用户,不能越权操作。非合法用户不能对数据进行操作。 通过系统功能的分析,结合需求分析员在各大高校实地考查,调查的对象涵盖了,学校的教职工、在校师生。特别是对已经运行了与本系统同类产品的学校的师生使用选课管理系统心得体会进行了分析,总结出如下的需求信息:(1)学生的需求:能进行选课,查看管理员发布的选课信息,自己的选课情况,本人的基本信息,课程的成绩;(2)教师的需求:能查看自己的个人信息,及所授课的班级的所有学生的本门课程的成绩信息,并能进行增加和修改;(3)管理员的需求:对学生选课情况进行管理,包括发布选课信息,对学生的选课情况进行查看。管理员还可以对授课老师的信息进行管理。2. 概念设计 1.一个学生可以选多门课程,一门课可以被多个学生选择 2.一个老师最多教一门课程,一门课程可以被多个老师教 3.每个教师可以管理自己所教的课程3. 逻辑设计 (1)学生选课联系概念模型向关系模型的转化 学生表(学号,姓名,密码)教师表(教师号,姓名,密码)课程表(课程号,课程名,上课时间,教师号)选课表(学号,课程号,成绩) (2)教师课程联系概念模型向关系模型的转化 教师表(教师号,教师名,密码)课程表(课程号,课程名,上课时间,教师号) 4. 主要算法描述注释:数据库中的数据类型都是VARCHAR类型算法一:判断用户名是否存在首先读取textfield中的内容并保存在一个字符串变量s1中,然后用select查询语句在学生表(教师表)查询,若查到该登录号,则将该登录好对应的密码保存在字符串s1中,否则提示用户名不存在。然后,将调用字符串类的方法equal()判断用户输入的密码是否正确,若密码正确则登录相关的界面,否则提示密码错误。public void actionPerformed(ActionEvent e)/String s1 = textField1.getText();String s2 = textField2.getText();String s = null;JDBCUtil getConn = new JDBCUtil();java.sql.Connection conn = getConn.getConnection();String str1 = select * from student;PreparedStatement prepare = null;ResultSet rs = null;tryprepare = conn.prepareStatement(str1);rs = prepare.executeQuery();while(rs.next()rs.getString(2);if(s1.equals(rs.getString(2)s = rs.getString(3);break;catch(SQLException e1)e1.printStackTrace();finallygetConn.closeConnection(conn);if(s = null)JOptionPane.showMessageDialog(null, 登录名不存在);else if(s.equals(s2)studentTable st = new studentTable(s1);setVisible(false);elseJOptionPane.showMessageDialog(null, 登录密码错误);算法二:选课冲突根据所选的课程号,分别将各个课程对应的上课时间保存在数组b中,然后在调用方法equals()判断时间有没有冲突public void actionPerformed(ActionEvent e)/textField11aUpdateselectCourseString str = textField1.getText() + n ;String s = null;char c;String a = new String 10;String b = new String 10;int i = 0,j = 0,t = 0;while(c = str.charAt(i) != n)if(c = , | c = )at = str.substring(j,i);j = i + 1;t = t + 1;i = i + 1;/System.out.println(c);at = str.substring(j,i);System.out.println(a0);/tryprepare = conn.prepareStatement(str1);rs = prepare.executeQuery();while(rs.next()/System.out.println(99);for(i = 0; i = t; i = i + 1)if(ai.equals(rs.getString(2)bi = rs.getString(3);break;catch(SQLException e1)e1.printStackTrace();boolean k = true;for(i = 0; i t & k; i = i + 1 )for(j = i + 1; j = t;)if(bi.equals(bj)k = false;break;elsej = j + 1;if(k)String sql = insert into selectcourse (Cnumber, Snumber) + values(?,?);try prepare = conn.prepareStatement(sql);for(i = 0; i = t; i = i + 1)prepare.setString(1,ai );prepare.setString(2,number );prepare.executeUpdate(); catch (SQLException e1) / TODO Auto-generated catch blocke1.printStackTrace();elseJOptionPane.showMessageDialog(null, 选课时间冲突);算法三:选课学生选课时,没有采用checkbox控件,而是采用手输入所选的课程号,故首先读出textfield的字符窜,然后根据空格或逗号为标识符调用方法substring()将textfield里的字符串分离到数组a然后根据数组a做选课冲突判断。若上课时间没有冲突则就将他们都写入表selectcourse。算法四:教师管理学生成绩当老师登录后,教师可以给学生添加成绩,根据老师输入的成绩的顺序(若没有成绩则输入0)找到学生号,然后写入到表selectcoursepublic void actionPerformed(ActionEvent e)String str = textField1.getText() + n ;String s = null;char c;String a = new String 10;/String b = new String 10;/int i = 0,j = 0,t = 0;while(c = str.charAt(i) != n)if(c = , | c = )at = str.substring(j,i);j = i + 1;t = t + 1;i = i + 1;/System.out.println(c);at = str.substring(j,i);PreparedStatement prepare = null;ResultSet rs = null;String s4, s5;/s4s5i = 0;j = 0;try for(i = 0; i = t;i = i + 1 )String sql = update selectcourse set Grade = + ai + where Cnumber = +s1;prepare = conn.prepareStatement(sql);prepare.executeUpdate(); catch (SQLException e1) / TODO Auto-generated catch blocke1.printStackTrace();5. 程序流程图6. 数据流程图 (1)用户登陆管理。用户在登陆时,系统会进行判断。用户一共有三种类型,分别是学生,教师和管理员。其中,一部分教师是管理员。在登陆的只有学生和教师两种类型,管理员的身份由系统自行判断。在判定时需要查询用户信息库。用户信息库,包括学生注册信息,教师注册信息,管理员信息等。学生选课管理系统一层分解图登陆管理,如下图所示:注:F2.1:学生登陆信息F2.2:教师登陆信息F2.3:管理员登陆信息F7.1:用户身份信息F7.2:修改密码的错误信息(2) 用户操作管理。在登陆管理进行判断后,发送学生登陆信息,教师登陆信息,管理员登陆信息的其中一种。根据用户身份信息的不同,进入不同的管理界面,相应的操作的功能,权限都有所不同。如下图所示: 注:F3.1:原始学生信息F5.1:学生更新后的选课信F6.1:学生查询的选课信息F8.1:学生操作后返回的信息注:F3.2:原始教师信息5.2:教师更新后的选课信息F6.2:教师查询的选课信息F8.1:教师操作后返回的信息注:F3.3:原始管理员信息F9.1更新后的用户信息F6.3:管理员查询的选课信息F8.1:管理员操作后返回的信息F5.3:管理员更新后的选课信息7. 数据库表结构根据选修课的一系列操作,在数据库中需要建立学生表student(包含学号、姓名、登陆密码),教师表teacher(包含教师姓名、教师号、登陆密码),课程表course(包含课程名、课程号、上课时间),以及可供查成绩的选课表selectCourse(课程号、课程名、学生号、教师名、成绩)。其中教师表teacher通过教和课程表course连接,学生表student通过选修和课程表course连接,教师表teacher通过教学和student表连接,从选课表selectCourse中得到学生查分的信息。8. E-R图9. 源代码1:分三个界面类和一个连接数据库类:登录界面代码(程序入口)注释:studentSouse类import javax.swing.*;import java.awt.TextArea;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;import com.mysql.jdbc.Connection;public class studentSource extends JFrame private JPanel con;studentSource()this.setTitle(学生成绩管理);this.setBounds(100, 100, 400, 400);this.setVisible(true);this.setResizable(false);con = new JPanel();setContentPane(con);con.setLayout(null);con.setVisible(true);JLabel label1 = new JLabel(登陆名:);label1.setBounds(50, 50, 50, 30);con.add(label1); final TextField textField1 = new TextField();textField1 .setBounds(150, 50, 150, 30);con.add(textField1);JLabel label2 = new JLabel(登陆密码:);label2.setBounds(50, 150, 100, 50);con.add(label2);final TextField textField2 = new TextField();textField2.setBounds(150, 160, 150, 30);con.add(textField2);JButton button1 = new JButton(学生登录);button1.setBounds(80, 250, 90, 30);con.add(button1);button1.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)String s1 = textField1.getText();String s2 = textField2.getText();String s = null;JDBCUtil getConn = new JDBCUtil();java.sql.Connection conn = getConn.getConnection();String str1 = select * from student;PreparedStatement prepare = null;ResultSet rs = null;tryprepare = conn.prepareStatement(str1);rs = prepare.executeQuery();while(rs.next()rs.getString(2);if(s1.equals(rs.getString(2)s = rs.getString(3);break;catch(SQLException e1)e1.printStackTrace();finallygetConn.closeConnection(conn);if(s = null)JOptionPane.showMessageDialog(null, 登录名不存在);else if(s.equals(s2)studentTable st = new studentTable(s1);setVisible(false);elseJOptionPane.showMessageDialog(null, 登录密码错误););textField1.setText(11150131);JButton button2 = new JButton(教师登录);button2.setBounds(200, 250, 90, 30);con.add(button2);button2.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)String s1 = textField1.getText();String s2 = textField2.getText();String s = null;JDBCUtil getConn = new JDBCUtil();java.sql.Connection conn = getConn.getConnection();String str1 = select * from teacher;PreparedStatement prepare = null;ResultSet rs = null;tryprepare = conn.prepareStatement(str1);rs = prepare.executeQuery();while(rs.next()rs.getString(2);if(s1.equals(rs.getString(2)s = rs.getString(3);break;catch(SQLException e1)e1.printStackTrace();finallygetConn.closeConnection(conn);if(s = null)JOptionPane.showMessageDialog(null, 登陆名不存在);else if(s.equals(s2)teacherSource studnet = new teacherSource(s1);setVisible(false);elseJOptionPane.showMessageDialog(null, 登陆密码错误););setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public static void main(String args)studentSource a = new studentSource();2:数据库连接类(JDBCUtil类)import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class JDBCUtil private Connection connection = null;public Connection getConnection()tryClass.forName(com.mysql.jdbc.Driver);String url = jdbc:mysql:/localhost:3306/coursemanager;String ur = root;String us = 123456;connection = DriverManager.getConnection(url,ur, us);catch(ClassNotFoundException e)System.out.println(jdbc driver error); catch (SQLException e) e.printStackTrace();return connection;public void closeConnection(Connection conn)tryconn.close();catch(SQLException e)System.out.println(jdbc close error!); 3:学生选课类(studentTable类)import java.awt.Color;import java.awt.HeadlessException;import java.awt.TextArea;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.UnsupportedEncodingException;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;public class studentTable extends JFrame private String number;JPanel con = null; studentTable(String s) number = s; final String t = s; this.setTitle(学生选课管理); this.setBounds(100, 100, 500, 550); this.setVisible(true); this.setResizable(false); con = new JPanel(); setContentPane(con); con.setLayout(null); con.setVisible(true); final JDBCUtil getConn = new JDBCUtil();final Connection conn = getConn.getConnection();final TextArea textarea = new TextArea(); textarea.setBounds(0, 30,500, 380); con.add(textarea); JButton JButton1; JButton1=new JButton(课程); JButton1.setBounds(0, 0,100, 30); con.add(JButton1); JButton1.addActionListener(new ActionListener() String str1 = select * from course;PreparedStatement prepare = null;ResultSet rs = null;public void actionPerformed(ActionEvent e) /CourseString str = ;tryprepare = conn.prepareStatement(str1);rs = prepare.executeQuery();while(rs.next()String sth=rs.getString(1);try sth=new String(sth.getBytes(8859_1),GBK); catch (UnsupportedEncodingException e1) / TODO Auto-generated catch blocke1.printStackTrace();str = str+ sth+ + rs.getString(2)+ + rs.getString(3)+ n + ;textarea.setText(str);catch(SQLException e1)e1.printStackTrace();final TextField textField1 = new TextField();textField1.setBounds(0, 420, 500, 50);con.add(textField1);JButton JButton11 = new JButton(确定);JButton11.setBounds(300, 470,100,50);con.add(JButton11);JButton11.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)String str = textField1.getText() + n ;String s = null;char c;String a = new String 10;String b = new String 10;int i = 0,j = 0,t = 0;while(c = str.charAt(i) != n)if(c = , | c = )at = str.substring(j,i);j = i + 1;t = t + 1;i = i + 1;at = str.substring(j,i);System.out.println(a0);tryprepare = conn.prepareStatement(str1);rs = prepare.executeQuery();while(rs.next()/System.out.println(99);for(i = 0; i = t; i = i + 1)if(ai.equals(rs.getString(2)bi = rs.getString(3);break;catch(SQLException e1)e1.printStackTrace();boolean k = true;for(i = 0; i t & k; i = i + 1 )for(j = i + 1; j = t;)if(bi.equals(bj)k = false;break;elsej = j + 1;if(k)String sql = insert into selectcourse (Cnumber, Snumber) + values(?,?);try prepare = conn.prepareStatement(sql);for(i = 0; i = t; i = i + 1)prepare.setString(1,ai );prepare.setString(2,number );prepare.executeUpdate(); catch (SQLException e1) / TODO Auto-generated catch blocke1.printStackTrace();elseJOptionPane.showMessageDialog(null, 选课时间冲突););JButton JButton12 = new JButton(取消);JButton12.setBounds(400, 470,100,50);con.add(JButton12);JButton12.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)textField1.setText(););); JButton JButton2 = new JButton(已选课程); JButton2.setBounds(100, 0,100, 30); con.add(JButton2); JButton2.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)String str1 = select * from course ;PreparedStatement prepare = null;ResultSet rs = null;String str = ;tryprepare = conn.prepareStatement(str1);rs = prepare.executeQuery();while(rs.next()try String str2 = select * from selectcourse ;PreparedStatement prepare1 = null;ResultSet rs1 = null;prepare1 = conn.prepareStatement(str2);rs1 = prepare1.executeQuery();while(rs1.next()if(number.equals(rs1.getString(2)if(rs.getString(2).equals(rs1.getString(1)String sth=rs.getString(1);sth=new String(sth.getBytes(8859_1),GBK);str = str + sth + n ;textarea.setText(str); catch (UnsupportedEncodingException e1) / TODO Auto-generated catch blocke1.printStackTrace();catch(SQLException e1)e1.printStackTrace();if(str.equals( )JOptionPane.showMessageDialog(null, 还没选课);); JButton JButton3 = new JButton(选课成绩); JButton3.setBounds(200, 0,100, 30); con.add(JButton3); JButton3.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)String str2 = select * from selectcourse ;PreparedStatement prepare1 = null;ResultSet rs1 = null;try prepare1 = conn.prepareStatement(str2);rs1 = prepare1.executeQuery();String str = ;while(rs1.next()if(number.equals(rs1.getString(2)if(number.equals(rs1.getString(2)str = str + rs1.getString(1) + + rs1.getString(3)+ n + ;textarea.setText(str); catch (SQLException e1) / TODO Auto-generated catch blocke1.printStackTrace();); JButton JButton4 = new JButton(我的信息); JButton4.setBounds(300, 0,100, 30); con.add(JButton4); JButton4.ad
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 神经内镜腹侧颅底手术颅底重建技术专家共识总结2026
- 2026 甘肃省临泽县制冷与空调设备安装修理作业证考试参考题库-含答案
- 2026 福建煤矿井下安管员理论考试参考题库-含答案
- 教师资格《中学英语语法》培训试卷(附答案)
- 生理基础期末试题及答案
- 尿路感染常见试题及答案解析
- 2026年亚东县事业单位人员招聘考试备考题库及答案解析
- 2026年新和县网格员招聘笔试备考题库及答案解析
- 2026年江苏兴化市昭阳街道基层公益性岗位招聘8人(二)笔试备考题库及答案详解
- 2026新疆生产建设兵团第八师石河子市“千名硕博·智汇石城”事业单位人才引进51人考试备考题库及答案详解
- 2026年广州市海珠区教育系统引进教育管理急需人才6人考前冲刺密卷及参考答案详解【满分必刷】
- 2026秋小学人音版音乐二年级上册(新教材)教学计划
- 电子设备手工装接工岗中实操水平考核试卷含答案
- 群体塔吊安全管理培训
- 人工智能技术基础与应用课件 第8章 提示词工程
- 高职高专教育英语课程教学基本要求(试行)A级-附表四(词汇表)
- 普通高中英语课程标准(2017年版 2020年修订)词汇表
- 陕西省公路工程通用表格
- 辽宁众辉生物科技有限公司年产8500吨农药原药、8000吨医药农药中间体及副产生产项目环境影响报告书
- GB/T 10824-2022充气轮胎轮辋实心轮胎技术规范
- GB/T 7631.13-2012润滑剂、工业用油和有关产品(L类)的分类第13部分:A组(全损耗系统)
评论
0/150
提交评论