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学生成绩管理系统