mysql数据库学生成绩管理系统

Posted 佳美不ERROR

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据库学生成绩管理系统相关的知识,希望对你有一定的参考价值。

学生成绩管理系统课程设计

需求分析

1 信息需求
对学校而言,学生成绩管理是管理工作中重要的一环,但是高校学生的成绩管理工作量大、繁杂,人工处理非常困难。因此,借助于强大计算机的处理能力,能够把人从繁重的成绩管理工作中解脱出来,并且更加准确、安全、清晰的管理环境。

2 功能需求
能够进行数据库的数据定义、数据操纵、数据控制等处理功能。具体功能应包括:可提供课程安排、课程成绩数据的添加、插入、删除、更新、查询,学生及教职工基本信息查询的功能。

3 安全性与完整性要求
对于学生成绩管理系统数据库来讲,由于其主要数据是学生成绩,只能由本人以及所教老师及教务处知道,因此做好数据安全性是重中之重。另外,要求所有在校学生的信息都要录入其中,并且要设计好个别情况。

E-R图

一位学生会被多位老师教导,一位老师会教导多位学生,所有学生与教师之间是多对多(m:n)的关系;
一位学生可能会选修多门课程,一门课程会被多位学生选修,所以学生与课程之间是多对多(m:n)的关系;
一位学生会有多项成绩(具体指某学生一门课程的分数),一项成绩仅被一位学生拥有,所以学生与成绩是一对多(1:n)的关系;
一位教师会讲授多门课程,一门课程会被一位教师讲授,所以教师与课程的关系是一对多(1:n)的关系;
一门课程拥有多项成绩,一项成绩仅被一门课程拥有,所以课程与成绩的关系是一对多(1:n)的关系;
学生(学号、姓名、班级、性别、专业、出生日期、学分);
老师(教师编号、姓名、学院);
课程(课程编号、教师编号、课程名称、课程学分);
成绩(学号、课程编号、分数);

逻辑关系

根据题目要求可以简化成三个表:

1.student 表:学号(sno)、姓名(sname)、性别(ssex)、专业(sdept),此为联系“student表”所对应的关系模式,学号为该关系的候选码,满足第三范式。

2.course表:课程编号(cno)、教师(cteacher)、课程名称(cname)、先修课课程号(cpno)、学分(ccredit),此为联系“course表”所对应的关系模式,课程编号和教师编号为该关系的候选码,满足第三范式。

3.sc表:学号(sno)、课程编号(cno)、分数(grade),此为联系“sc表”所对应的关系模式,学号和课程编号为该关系的候选码,满足第三范式。

物理设计和实施

创建course表
属性依次为:课程号、课程名、先修课课程号、学分、教师
主键为课程号

创建student表
属性依次为:学号、姓名、性别、年龄、所在系系名
主键为学号

sdept char(15) null勾选

注意学号不要写重复,会报错

创建sc表,表示选课关系
属性依次为学号、课程号、分数
主键为学号、课程号


数据库链接到idea

idea没有database的下载:
File+settings+editor+plugins+database navigator+apply+ok
出现感叹号:进connection+properties+serverTimezone+Asia/Shanghai+test connection

创建包、Add、Del、Update、Sel

主代码再最后面

AddC

/*
AddC
*/
package sc;
import java.awt.*;
import javax.swing.*;
import java.sql.*;
import java.awt.event.*;

public class AddC extends JPanel implements ActionListener
    JTextField 课程号,课程名,先修课课程号,学分;
    JButton 录入;

    public AddC()
        try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        catch(Exception e)System.err.println("不能设置外观:   "+e);

        课程号=new JTextField(12);
        课程名=new JTextField(12);
        先修课课程号=new JTextField(12);
        学分=new JTextField(12);
        录入=new JButton("录入");
        录入.addActionListener(this);

        Box box1=Box.createHorizontalBox();//横放box
        Box box2=Box.createHorizontalBox();
        Box box3=Box.createHorizontalBox();
        Box box4=Box.createHorizontalBox();
        Box box5=Box.createHorizontalBox();
        Box box6=Box.createHorizontalBox();
        box1.add(new JLabel("课程号:"));
        box1.add(课程号);
        box2.add(new JLabel("课程名:"));
        box2.add(课程名);
        box3.add(new JLabel("先修课课程号:"));
        box3.add(先修课课程号);
        box4.add(new JLabel("学分:"));
        box4.add(学分);
        box6.add(录入);
        Box boxH=Box.createVerticalBox();//竖放box
        boxH.add(box1);
        boxH.add(box2);
        boxH.add(box3);
        boxH.add(box4);
        boxH.add(box5);
        boxH.add(box6);
        boxH.add(Box.createVerticalGlue());
        JPanel messPanel=new JPanel();
        messPanel.add(boxH);
        setLayout(new BorderLayout());
        add(messPanel,BorderLayout.CENTER);
        validate();
    
    public void actionPerformed(ActionEvent c)
        Object obj=c.getSource();
        if(obj==录入)
            if(课程号.getText().equals("")||课程名.getText().equals("")||先修课课程号.getText().equals("")||学分.getText().equals(""))
                JOptionPane.showMessageDialog(this,"学生信息请填满再录入!" );
            
            Statement stmt=null;
            ResultSet rs=null,rs1=null;
            String sql,sql1;
            sql1="select * from Course where Cno='"+课程号.getText()+"'";
            sql="insert into Course values('"+课程号.getText()+"','"+课程名.getText()+"','"+先修课课程号.getText()+"','"+学分.getText()+"')";
            try
                Connection dbConn1=CONN();
                stmt=(Statement)dbConn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
                rs1=stmt.executeQuery(sql1);
                if(rs1.next())JOptionPane.showMessageDialog(this,"该课号以存在,无法添加");
                else
                    stmt.executeUpdate(sql);
                    JOptionPane.showMessageDialog(this,"添加成功");
                
                rs1.close();

                stmt.close();
            
            catch(SQLException e)
                System.out.print("SQL Exception occur.Message is:"+e.getMessage());
            
        
    
    public static Connection CONN()
        String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";   //加载JDBC驱动
        String dbURL = "jdbc:sqlserver://主机名:1433; DatabaseName=数据库名";   //连接服务器和数据库test
        String userName = "sa";   //默认用户名
        String userPwd = "密码";   //密码
        Connection dbConn=null;

        try 
            Class.forName(driverName);
            dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
            System.out.println("Connection Successful!");   //如果连接成功 控制台输出Connection Successful!
         catch (Exception e) 
            e.printStackTrace();
        
        return dbConn;
    




AddS

/*
AddS
*/
package sc;
import java.awt.*;
import javax.swing.*;
import java.sql.*;
import java.awt.event.*;


public  class AddS extends JPanel implements ActionListener
    JTextField 学号,姓名,性别,年龄,所在系系名;
    JButton 录入;

    public AddS()
        try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        catch(Exception e)System.err.println("不能设置外观:   "+e);

        学号=new JTextField(12);
        姓名=new JTextField(12);
        性别=new JTextField(12);
        年龄=new JTextField(12);
        所在系系名=new JTextField(12);
        录入=new JButton("录入");
        录入.addActionListener(this);

        Box box1=Box.createHorizontalBox();//横放box
        Box box2=Box.createHorizontalBox();
        Box box3=Box.createHorizontalBox();
        Box box4=Box.createHorizontalBox();
        Box box5=Box.createHorizontalBox();
        Box box6=Box.createHorizontalBox();
        box1.add(new JLabel("学号:"/*,JLabel.CENTER*/));
        box1.add(学号);
        box2.add(new JLabel("姓名:"/*,JLabel.CENTER*/));
        box2.add(姓名);
        box3.add(new JLabel("性别:"/*,JLabel.CENTER*/));
        box3.add(性别);
        box4.add(new JLabel("年龄:"/*,JLabel.CENTER*/));
        box4.add(年龄);
        box5.add(new JLabel("所在系系名:"/*,JLabel.CENTER*/));
        box5.add(所在系系名);
        box6.add(录入);
        Box boxH=Box.createVerticalBox();//竖放box
        boxH.add(box1);
        boxH.add(box2);
        boxH.add(box3);
        boxH.add(box4);
        boxH.add(box5);
        boxH.add(box6);
        boxH.add(Box.createVerticalGlue());
        JPanel messPanel=new JPanel();
        messPanel.add(boxH);
        setLayout(new BorderLayout());
        add(messPanel,BorderLayout.CENTER);
        validate();
    
    public void actionPerformed(ActionEvent c)
        Object obj=c.getSource();
        if(obj==录入)
            if(学号.getText().equals("")||姓名.getText().equals("")||性别.getText().equals("")||年龄.getText().equals("")||所在系系名.getText().equals(""))
                JOptionPane.showMessageDialog(this,"学生信息请填满再录入!" );
            
            Statement stmt=null;
            ResultSet rs1=null;
            String sql,sql1;
            sql1="select * from Student where Sno='"+学号.getText()+"'";
            sql="insert into Student values('"+学号.getText()+"','"+姓名.getText()+"','"+性别.getText()+"','"+年龄.getText()+"','"+所在系系名.getText()+"')";
            try
                Connection dbConn1=CONN();
                stmt=(Statement)dbConn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
                rs1=stmt.executeQuery(sql1);
                if(rs1.next())JOptionPane.showMessageDialog(this,"该学号已经存在,无法添加");
                else
                    stmt.executeUpdate(sql);
                    JOptionPane.showMessageDialog(this,"添加成功");
                
                rs1.close();
                stmt.close();
            
            catch(SQLException e)
                System.out.print("SQL Exception occur.Message is:"+e.getMessage());
            
        
    
    public static Connection CONN()
        String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";   //加载JDBC驱动
        String dbURL = "jdbc:sqlserver://主机名:1433; DatabaseName=数据库名";   //连接服务器和数据库test
        String userName = "sa";   //默认用户名
        String userPwd = "密码";   //密码
        Connection dbConn=null;

        try 
            Class.forName(driverName);
            dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
            System.out.println("Connection Successful!");   //如果连接成功 控制台输出Connection Successful!
         catch (Exception e) 
            e.printStackTrace();
        
        return dbConn;
    



AddSC

/*
AddSC
*/
package sc;

import java.awt.*;

import javax.swing.*;

import java.sql.*;
import java.util.*;
import javax.swing.filechooser.*;
import java.io.*;
import java.awt.event.*;

public class AddSC extends JPanel implements ActionListener
    JTextField 课程号,学号,

搭建一个简易的成绩管理系统的数据库

题目

搭建一个简易的成绩管理系统的数据库

介绍

现需要构建一个简易的成绩管理系统的数据库,来记录几门课程的学生成绩。数据库中有三张表分别用于记录学生信息、课程信息和成绩信息。

数据库表的数据如下:

学生表(student):学生 id 、学生姓名和性别

技术分享图片

课程表:课程 id 和课程名

技术分享图片

成绩表:成绩 id 、学生 id 、课程 id 和分数

技术分享图片

服务器中的 MySQL 还没有启动,请注意 MySQL 的 root 账户默认密码为空。

目标

1.MySQL 服务处于运行状态

2.新建数据库的名称为 gradesystem

3.gradesystem 包含三个表:student、course、mark;

  • student 表包含3列:sid(主键)、sname、gender;
  • course 表包含2列:cid(主键)、cname;
  • mark 表包含4列:mid(主键)、sid、cid、score ,注意与其他两个表主键之间的关系。

4.将上述表中的数据分别插入到各个表中

提示

  • 建立表时注意 id 自增和键约束
  • 每个表插入语句可通过一条语句完成

解法

启动mysql:

sudo service mysql start
mysql -u root

创建一个名为gradesystem的数据库:

create database gradesystem;
use gradesystem;

创建student表:

create table student
(
    sid int(10)primary key,
    sname char(10),
    gender char(10)
);

创建course表:

create table course
(
    cid int(10)primary key,
    sname char(10)
);

  

创建mark表:

create table mark
(
    mid int(10)primary key,
    sid int(10),foreign key (sid) references student(sid),
    cid int(10),foreign key (cid) references course(cid),
    score int(100)
);

  

student插入数据:

insert into student values(1,‘Tom‘,‘male‘);
insert into student values(2,‘Jack‘,‘male‘);
insert into student values(3,‘Rose‘,‘female‘);

course插入数据:

insert into course values(1,‘math‘);
insert into course values(2,‘physics‘);
insert into course values(3,‘chemistry‘);

  

mark插入数据:

insert into mark values(7,1,3,95);
insert into mark values(8,2,3,75);
insert into mark values(9,3,3,85);

  

最后可以查看这三张表:

select * from student;
/*
+-----+-------+--------+
| sid | sname | gender |
+-----+-------+--------+
|   1 | Tom   | male   |
|   2 | Jack  | male   |
|   3 | Rose  | female |
+-----+-------+--------+
*/
select * from course;
/*
+-----+-----------+
| cid | sname     |
+-----+-----------+
|   1 | math      |
|   2 | physics   |
|   3 | chemistry |
+-----+-----------+
*/
select * from mark;
/*
+-----+------+------+-------+
| mid | sid  | cid  | score |
+-----+------+------+-------+
|   7 |    1 |    3 |    95 |
|   8 |    2 |    3 |    75 |
|   9 |    3 |    3 |    85 |
+-----+------+------+-------+
*/

  

以上是关于mysql数据库学生成绩管理系统的主要内容,如果未能解决你的问题,请参考以下文章

搭建一个简易的成绩管理系统的数据库

IDEA+Java+SSM+Mysql+Layui实现Web学生成绩管理系统建议收藏

IDEA+Java+Servlet+JSP+Bootstrap+Mysql实现Web学生成绩管理系统

IDEA+Java+Servlet+JSP+Bootstrap+Mysql实现Web学生成绩管理系统

学生成绩管理系统数据库设计--MySQLSQL Server

IDEA+Java+JSP+Mysql+Tomcat实现Web学生成绩管理系统