数据库课程设计 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++的都可以。

python+vue高校教务选课管理系统django

计算机课程设计SSH高校学生选课系统代码讲解+安装调试+文档指导

数据库系统原理之数据库应用设计与开发实例

JavaEE项目《高校学生在线选课系统》开发教程(附源码资料)

计算机毕业设计django基于python的学生选课系统-高校教务管理系统