# 基于Java和Sql Server 2000实现的学生选课管理系统
# 一、课程设计任务
完成学生选课管理系统的开发。
# 二、需求描述
本系统是一个单机版的小型的学生选课管理系统,在本系统中,开发了一个面向管理员、学生和教师这三个对象的教务平台,对学生提供的服务有登录、选课、、修改登录密码、和查询成绩这几个服务,所选课程总数不能超过3门;对教师提供的服务有登录、修改登录密码和登录成绩;对管理员提供的服务有登录开设学生和教师帐号、删除学生和教师帐号的服务。
# 三、系统总体设计
## 3.1 系统架构设计
- 架构
- 单机
- 运行软件环境
- windows XP SP3
- jdk1.6
- 开发环境
- 硬件平台
- CPU:P41.8GHz
- 内存:256MB以上
- 软件平台:windows XP SP3 、jdk1.6
- 操作系统:WindowsXP
- 数据库:SQL Server 2000、SQLServer SP4补丁
- 开发工具:Eclipse 3.3
- 分辨率:1024\*768
## 3.2 功能模块设计
![](http://www.writebug.com/myres/static/uploads/2021/10/19/229657200d269521c9b03c274c230617.writebug)
各模块功能:
- 登录界面:登录界面是有帐号,密码两个JTextField,管理员帐号一字母A开头,教师帐号一字母T开头,学生帐号以字母S开头,登录帐号或密码输入错误会弹出相应的提示对话框
- 学生信息管理模块:管理员用于添加和删除学生信息的模块
- 教师信息管理模块:管理员用于添加和删除教师信息的模块
- 教师密码修改模块和学生密码修改模块:管理员添加的用户帐号的初始密码与用户的帐号相同,用户通过密码修改模块可以自己需改密码
- 教师录入成绩模块:教师可以浏览选修自己课程的学生的信息并且录入该学生的成绩
- 学生选择选修课模块:该模块通过表格的形式将所有课程列出来,学生可以根据个人兴趣选择不同的课程,每个学生选择的课程数目不能超过3门,而且不能重复选课,否则会弹出对话框,提示用户查看已经选择了的课程
- 学生查询成绩模块:通过表格的形式将该学生选择了的课程列出来,如果教师有录入成绩,则可以看到自己的课程成绩
## 3.3 数据库设计
**E-R图**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/f91fd5f698cac5757da34375b2ed8670.writebug)
**关系模式**
- 学生(学生学号,学生姓名,教师性别,教师生日,所在班级)
- 教师(教师编号,教师姓名,教师性别,教师生日,教师职称,所在院系)
- 课程(课程号,课程名,学分,选课人数)
- 选课(课程号,学生学号,成绩)
- 授课(课程号,教师编号,上课地点)
**数据库管理系统**
Microsoft SQL Server 2000
**数据库命名**
StudentManager
**数据库表**
Logon(登录帐号密码),主要用来保存用户登录信息。
| 字段名 | 数据类型 | 长度 | 是否为空 | 是否主键 |
| --------- | ----- | ---- | ---- | ---- |
| UserID | char | 10 | 不为空 | 主键 |
| Passwordr | charr | 10 | | |
StudentTable1(学生信息表),主要用来保存学生信息。
| 字段名 | 数据类型 | 长度 | 主键否 | 是否为空 | 描述 |
| --------------- | -------- | ---- | ---- | ---- | ---- |
| StudentID | Char | 10 | 主键 | 不为空 | 学生学号 |
| StudentName | Char | 10 | | 不为空 | 学生姓名 |
| StudentSex | Char | 2 | | 不为空 | 学生性别 |
| StudentBirthday | Datetime | 8 | | | 学生生日 |
| Class | char | 16 | | | 所在班级 |
TeacherTable1(教师信息表),用来储存教师的基本信息。
| 字段名 | 数据类型 | 长度 | 主键否 | 是否为空 | 描述 |
| --------------- | -------- | ---- | ---- | ---- | ---- |
| TeacherID | Char | 10 | 主键 | 不为空 | 教师编号 |
| TeacherName | Char | 10 | | 不为空 | 教师姓名 |
| TeacherSex | Char | 2 | | 不为空 | 教师性别 |
| TeacherBirthday | Datetime | 8 | | | 教师生日 |
| Post | char | 10 | | | 教师职称 |
| Department | char | 20 | | | 所在院系 |
CourseTable(课程信息表)
| 字段名 | 数据类型 | 长度 | 主键否 | 是否为空 | 描述 |
| ---------- | -------- | ---- | ---- | ---- | ---- |
| CourseID | Char | 16 | 主键 | 不为空 | 课程编号 |
| CourseName | Char | 16 | | 不为空 | 课程名 |
| Point | Char | 8 | | 不为空 | 学分 |
| StuNumber | Datetime | 4 | | 不为空 | 选课人数 |
ScoreTable(学生成绩表),用于存储学生成绩。
| 字段名 | 数据类型 | 长度 | 是否为空 | 是否主键 |
| --------- | ---- | ---- | ---- | ---- |
| CourseID | char | 16 | 不为空 | 主键 |
| StudentID | char | 10 | 不为空 | 主键 |
| Score | int | 4 | | |
TeachTable(j教师授课表)
| 字段名 | 数据类型 | 长度 | 是否为空 | 是否主键 |
| --------- | ---- | ---- | ---- | ---- |
| CourseID | char | 16 | 不为空 | 主键 |
| TeacherID | char | 10 | 不为空 | 主键 |
| Location | int | 10 | | |
**数据库账户及权限 (截图)**
学生账户表
![](http://www.writebug.com/myres/static/uploads/2021/10/19/1b71c536a3d542c616108727bac26711.writebug)
教师账户表
![](http://www.writebug.com/myres/static/uploads/2021/10/19/79be348f4579360c17ad830e8080b8e2.writebug)
用户登录表
![](http://www.writebug.com/myres/static/uploads/2021/10/19/368e7b74ef1e1ce167e713e6c7139e5d.writebug)
**数据库存储过程**
AllCourse
```sql
create proc AllCourse
as
begin
select x.CourseID,x.CourseName,x.Point ,y.TeacherName,y.Post,z.Location,x.StuNumber
from Course x,TeacherTable1 y,TeachTable z
where x.CourseID=z.CourseID and y.TeacherID=z.TeacherID
end
```
DeleteLogon
```sql
create proc DeleteLogon(@id char(10))
as
begin
delete from Logon
where UserID=@id
end
```
DeleteStudent
```sql
create proc DeleteStudent(@id char(10))
as
begin
delete from StudentTable1
where StudentID=@id
end
```
DeleteTeacher
```sql
create proc DeleteTeacher(@id char(10))
as
begin
delete from TeacherTable1
where TeacherID=@id
end
```
InsertLogon
```sql
create proc InsertLogon(@id char(10))
as
begin
insert into Logon
values(@id,@id)
end
```
InsertStudent
```sql
create proc InsertStudent(@userid char(10),@username char(10),@sex char(2),@birth datetime,@class char(10))
as
begin
insert into StudentTable1 values(@userid ,@username,@sex,@birth,@class)
end
return
```
InsertTeacher
```sql
create proc InsertTeacher(@userid char(10),@username char(10),@sex char(2),@birth datetime,@post char(10),@department char(10))
as
begin
insert into TeacherTable1 values(@userid ,@username,@sex,@birth,@post,@department)
end
return
```
IsExistsStu
```sql
create proc IsExistsStu(@id char(10))
as
begin
select * from StudentTable1
where StudentID=@id
end
```
IsExistsTea
```sql
create proc IsExistsTea(@id char(10))
as
begin
select * from Teachertable1
where TeacherID=@id
end
```
ProcAllStu
```sql
create proc ProcAllStu
as
begin
select * from StudentTable1
end
```
ProcAllTea
```sql
create proc ProcAllTea
as
begin
select * from TeacherTable1
end
```
ProcLogon
```sql
create proc ProcLogon(@userid char(16),@password char(10))
as
begin
select *
from Logon
where UserID=@userid and Password=@password
end
return
```
ProcModify
```sql
create proc ProcModify(@id char(10),@password char(16))
as
begin
update Logon
set Password=@password
where UserID=@id
e