数据库课程设计 java实现高校学生选课管理系统论文+源程序+数据库
Posted CSDN专家-小兔子编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库课程设计 java实现高校学生选课管理系统论文+源程序+数据库相关的知识,希望对你有一定的参考价值。
一、java实现高校学生选课管理系统
包含完整的论文(近5000字数)+源程序+数据库,可作为数据库、软件开发等相关课程的课程设计或者大作业。
二、目录
1. 背景及意义
2. 需求分析
2.1 需求概述
2.2 功能需求
2.3 数据流图
2.4 数据字典
3. 概念结构设计
3.1 局部E-R图
3.2 全局E-R图
4. 逻辑结构设计
4.1 E-R图对应的关系模式
5. 物理结构设计
5.1 描述
5.2 创建索引
6.数据库实施
6.1 各个表结构
7.关键程序代码及截图
8.系统运行情况及用户界面
9.总结
—————————————————————————————————
此处省略几千字
—————————————————————————————————
三、需求分析
高校学生选课系统以为高校的用户提供课程管理相关服务为目的,基本实现用户对课程的选择、成绩录入、信息的查询等功能,目前该系统主要包含学生、教师两个实体。
在高校学生选课管理系统中,学生要提供自己的学号、姓名、性别、系名、电话号码等信息;教师要提供自己的教师号、教师名、性别、电话号码、部门名、职称等信息。在登录该系统后,学生可以根据自己的意愿去选择课程,同时也可退选某课程,还可以根据学号查询个人信息以及查询课程成绩;老师则可以通过登入高校学生选课系统执行查看个人信息,录入学生信息,开设课程,录入学生成绩的操作。
1、功能需求
(1)教师:查看个人信息(教师号、教师名、性别、电话号码、部门名、职称);录入学生信息;开设课程(课程号,教师号,学时);录入学生所选课程成绩。
(2)学生:查看个人信息(学号、姓名、性别、专业名、电话号码);选择课程;退选课程;查询课程成绩。
根据以上分析可以得到如下的模块图
2、数据流图
顶层图
0层图
四、概念设计
1、全局ER图
在我们的数据库系统中共有5个实体:学生、教师、课程、部门、系别。
(1)学生的属性:学号、姓名、密码、性别、年龄、电话号码、系名
(2)教师的属性:教师号、教师名、密码、性别、职称、电话号码,部门名
(3)课程的属性:课程号、课程名、学分、开课学期、课程性质
(4)部门的属性:部门名、教师人数。
(5)系别的属性:系名、学生人数。
2、全局ER图
在全局E-R图中,发现“系别”和“部门”实体代表的含义基本相同,因此可以将这两个实体合并为一个实体。合并发现两个实体存在如下问题:
①命名冲突:“系别”实体中有一个属性是“系名”,而“部门”实体中将这个含义相同的属性命名为“部门名”,即存在异名同义属性。合并后可统一为“系名”。
②结构冲突:“系别” 实体包含的属性是系名、学生人数,而“部门”实体包含的属性是部门名、教师人数。因此,合并后的实体“系别”中应包含这两个实体的全部属性。
我们将合并后的实体命名为“系别”。
优化后的全局E-R图如下:
2、局部E-R图(部分)
学生和课程的局部E-R图
一名学生可同时选修多门课程,一门课程也可同时被多名学生选修;对学生选课需要记录考试成绩信息。对每名学生需要记录学号、姓名、密码、性别、年龄、电话号码、系名,对课程需要记录课程号、课程名、学分、课程性质。
教师和课程的局部E-R图
一门课程可由多名教师讲授,一名教师可讲授多门课程;对每个教师讲授的每门课程,需要记录开课时长。对每名教师,需要记录教师号、教师名、密码、性别、职称、电话号码、部门名;对每门课程要记录课程号、课程名、学分、开课学期。
五、逻辑结构设计
1、E-R图对应的关系模式
(1)实体所对应的关系模式
学生(学号,姓名,密码,性别,年龄,电话号码)
课程(课程号,课程名,学分,开课学期,课程性质)
教师(教师号,教师名,密码,性别,职称,电话号码)
系别(系名,学生人数,教师人数,办公地点,办公电话)
(2)联系所对应的关系模式
①系别和学生之间是一对多联系,可在学生模式中加入“系名”
学生(学号,姓名,密码,性别,年龄,电话号码,系名),“系名”为外键。
②系别和教师之间是一对多联系,可在教师模式中加入“系名”
教师(教师号,教师名,密码,性别,职称,电话号码,系名),“系名”为外键。
③学生和课程之间是多对多联系,生成一个新的关系模式
选课(学号,课程号,成绩),其中(学号,课程号)为主键,同时“学号”和“课程号”均为外键。
④课程和教师之间是多对多联系,生成一个新的关系模式
开课(课程号,教师号,开课时长),其中(课程号,教师号)为主键,同时“课程号”和“教师号”均为外键。
2、优化关系模式
(1)判断关系模式的范式
学生(学号,姓名,密码,性别,年龄,电话号码,系名)3NF
教师(教师号,教师名,密码,性别,职称,电话号码,系名)3NF
课程(课程号,课程名,学分,开课学期,课程性质)3NF
系别(系名,学生人数,教师人数,办公地点,办公电话)3NF
选课(学号,课程号,成绩)3NF
开课(课程号,教师号,开课时长)3NF
(2)对关系模式进行分解,以提高数据的操作效率和存储空间的利用率。
①将“学生”关系模式垂直分解为以下两个关系模式:
学生(学号,姓名,性别,年龄,电话号码,系名)
学生登陆(学号,密码)
②将“教师”关系模式垂直分解为以下两个关系模式:
教师(教师号,教师名,性别,职称,电话号码,系名)
教师登陆(教师号,密码)
六、数据库设计(部分)
1、student表
CREATETABLE[dbo].[student](
[学号][char](10)NOTNULL,
[姓名][char](8)NOTNULL,
[密码][char](20)NOTNULL,
[性别][char](2)NOTNULL,
[年龄][char](3)NOTNULL,
[电话号码][char](11)NOTNULL,
[系名][char](10)NOTNULL,
CONSTRAINT[PK_Student]PRIMARYKEYCLUSTERED
( [学号]ASC
)WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
2、teacher表
CREATETABLE[dbo].[teacher](
[教师号][char](10)NOTNULL,
[教师名][char](8)NOTNULL,
[密码][char](20)NOTNULL,
[性别][char](2)NOTNULL,
[职称][varchar](20)NOTNULL,
[电话号码][char](11)NOTNULL,
[部门名][char](10)NOTNULL,
CONSTRAINT[PK_Teacher]PRIMARYKEYCLUSTERED
(
[教师号]ASC
)WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
3、course表
CREATETABLE[dbo].[course](
[课程号][char](10)NOTNULL,
[课程名][nvarchar](20)NOTNULL,
[学分][float]NOTNULL,
[开课学期][char](6)NOTNULL,
[课程性质][text]NOTNULL,
CONSTRAINT[PK_Course]PRIMARYKEYCLUSTERED
(
[课程号]ASC
)WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]
七、代码实现(部分)
1、连接数据库代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class yanzheng {
//加载JDBC驱动
public static String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
//连接服务器和数据库sample
public static String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=college sc";
public static String userName = "sa"; //默认用户名
public static String userPwd = "123"; //密码
public static Connection dbConn = null;
public static Statement stmt=null;
//public static Statement adds=null;
static{
try{Class.forName(driverName);
dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
stmt=dbConn.createStatement();
//adds=dbConn.createStatement();
System.out.println("Connection Successful!"); //如果连接成功控制台输出
} catch (Exception e) {
e.printStackTrace();
}
}
}
2、用户登录代码
if(e.getSource()==Enter)
{
String username,password;
username=name.getText();
password=new String(pwd.getPassword());
if(stu.isSelected())
{
try
{
ResultSet rs=yanzheng.stmt.executeQuery("select * from student where 姓名 = '"+username+"' and 密码 = '"+password+"'");
if(rs.next()) {
JOptionPane.showMessageDialog(ss, "登陆成功");
Login.this.setVisible(false);
Students s = new Students();
}else {
JOptionPane.showMessageDialog(ss, "登陆失败,信息错误");
}
rs.close();
}
catch (SQLException se)
{
JOptionPane.showMessageDialog(ss,se.getMessage());
}
}
elseif(tch.isSelected())
{
try
{
ResultSet rs=yanzheng.stmt.executeQuery("select * from 教师 where 教师名 = '"+username+"' and 密码 = '"+password+"'");
if(rs.next()) {
JOptionPane.showMessageDialog(ss, "登陆成功");
Login.this.setVisible(false);
Teacher tch = new Teacher();
}else {
JOptionPane.showMessageDialog(ss, "登陆失败");
}
rs.close();
}
catch (SQLException se)
{
JOptionPane.showMessageDialog(ss,se.getMessage());
}
}
}
3、学生选课代码
publicvoid actionPerformed(ActionEvent e) {
if (e.getSource() == fh){
Addscore.this.setVisible(false);
Students as = new Students();
}
if(e.getSource()==add)
{
try
{
String aa="insert into SC(学号,课程号,成绩)values('"+txt[0].getText()+"','"+txt[0].getText()+"','"+txt[0].getText()+"')";
System.out.println(aa);
int a=yanzheng.stmt.executeUpdate(aa);
if(a==1) {
JOptionPane.showMessageDialog(ss, "添加成功");
Addscore.this.setVisible(false);
}else {
JOptionPane.showMessageDialog(ss, "添加失败");
}
}
catch (SQLException se)
{
JOptionPane.showMessageDialog(ss,se.getMessage());
}
}
else{
for(int i=0;i<txt.length;i++) {
txt[i].setText("");
txt[0].requestFocus();
}
}
}
—————————————————————————————————
此处省略几千字
—————————————————————————————————
八、资源下载
对应完整的论文+源程序+数据库下载:数据库课程设计 java+sql实现高校学生选课管理系统【论文+源程序+数据库】https://download.csdn.net/download/frank2102/34201324
以上是关于数据库课程设计 java实现高校学生选课管理系统论文+源程序+数据库的主要内容,如果未能解决你的问题,请参考以下文章
C语言课程设计:学生学籍管理系统。有谁有代码给我做个参考吗?谢谢了,C语言和C++的都可以。
计算机课程设计SSH高校学生选课系统代码讲解+安装调试+文档指导