资源描述
目录 2
1系统需求分析 2
1.1课程设计目 2
1.2 开发背景 3
1.3需求分析 3
1.4 开发环境 3
2系统总体设计 3
2.1系统功能描述 4
2.2功能模块图 4
2.3关系模式图 4
3 数据库设计 5
3.1 E-R图 5
3.2关系图 5
3.3创立表、视图、索引脚本 9
3.4完整性约束、自定义约束 9
3.5存储过程 5
3.6触发器 5
4总结 36
1.1课程设计目
编写这个再就业服务中心管理信息系统,第一是为了学以致用,将学到知识运用到实际中去,第二也是为了学到更多东西,加深自己对C#和SQL理解。
1.2 开发背景
随着国内市场经济迅速发展和信息化水平不断提高和网络运用不断普及,如何运用先进管理手段,提高高校管理水平,是当今社会所面临一种课题。各种各样网上管理系统应运而生。
1.3 需求分析
1.4 开发环境
Visual Studio 是微软公司推出开发环境。是当前最流行 Windows 平台应用程序开发环境。
Visual Studio 可以用来创立 Windows 平台下 Windows 应用程序和网络应用程序,也可以用来创立网络服务、智能设备应用程序和 Office 插件。
2.1系统功能描述
学生档案管理系统涉及顾客管理模块、档案管理模块、成绩管理模块,奖惩管理模块、基本信息管理模块、协助模块。
顾客管理模块:对系统顾客进行管理,涉及添加新顾客,对已有顾客查询修改,顾客密码采用md5加密办法进行加密,以提高顾客帐号安全性。
档案管理模块:对学生档案信息进行管理,涉及档案录入,档案查询,档案修改,以便管理者进行管理,无需老式手填表式管理,减少了出错也许性。
成绩管理模块:对学生成绩进行管理,涉及成绩录入,成绩修改,成绩查询,以便管理人员适时对学生成绩进行操作,同步也以便了管理人员对学生成绩理解。
奖惩管理模块:对学生奖惩信息进行记录,修改,查询,让每个人信息可以及时体当前档案上,以便后来查询。
基本信息管理模块:对学生某些基本信息进行管理,及时修改学生基本信息,可做到及时性,精确性。
协助模块:对学生档案管理系统进行简介,对某些基本信息和用法向顾客做初步简介,以便顾客使用和减少顾客摸索时间,提高顾客工作效率。
2.2功能模块图
2.3关系模式图
3.1 E-R图
3.2 关系图
班级表—Class
ClassID
char(8)
不容许空
主键
className
char(20)
不容许空
DeptID
char(8)
容许空
学院表--College
CollegeID
char(8)
不容许空
主键
CollegeName
char(20)
不容许空
CollegeSummary
nchar(10)
容许空
课程表—Course
Cno
char(10)
不容许空
主键
Cname
char(10)
不容许空
keshi
int
不容许空
xuefen
int
不容许空
ksxs
char(8)
不容许空
院系表--Dept
DeptID
char(8)
不容许空
主键
DeptName
char(30)
不容许空
CollegeID
char(8)
容许空
获奖表--HuoJiang
Sno
char(10)
不容许空
主键
RewardID
char(8)
不容许空
主键
Time
datetime
容许空
惩罚表--Punish
PunishID
char(8)
不容许空
主键
PunishName
char(10)
容许空
奖励表--Reward
RewardID
char(8)
不容许空
主键
RewardName
char(10)
不容许空
RewardLevel
char(10)
不容许空
住宿表--Room
RoomID
char(8)
不容许空
主键
RoomAdd
char(20)
不容许空
RoomNum
int
不容许空
成绩表--SC
Sno
char(10)
不容许空
主键
Cno
char(10)
不容许空
主键
Score
int
容许空
学生表--Student
Sno
char(10)
不容许空
主键
S_name
char(8)
不容许空
S_xmpy
char(20)
不容许空
S_cym
char(8)
容许空
S_sex
char(2)
不容许空
S_age
int
不容许空
S_mz
char(10)
不容许空
S_jg
char(100)
不容许空
S_csrq
datetime
不容许空
RoomID
char(8)
容许空
ClassID
char(8)
容许空
S_sfzh
char(20)
不容许空
S_image
image
容许空
S_zzmm
char(4)
不容许空
S_csd
char(100)
容许空
S_syd
char(100)
不容许空
S_rxnf
datetime
不容许空
S_byxx
char(20)
不容许空
S_pycc
char(10)
不容许空
S_jtzz
char(100)
不容许空
S_jtlxdh
char(15)
容许空
S_sj
char(11)
容许空
顾客表--Users
Uid
int
不容许空
主键
Uname
char(20)
不容许空
PassWord
char(20)
不容许空
违纪表--WeiJi
Sno
char(10)
不容许空
主键
PunishID
char(8)
不容许空
主键
Time
datetime
不容许空
chulijieguo
text
容许空
3.3创立表、视图、索引脚本
一、数据库创立:
CREATE DATABASE StudentRecordDB
ON
(NAME=StudentRecordDB_data,FILENAME='f:\studentrecorddb\StudentRecordDB _data.mdf')
LOG ON
(NAME=StudentRecordDB_log,FILENAME='f:\studentrecorddb\StudentRecordDB_log.ldf')
GO
2、班级表:
CREATE TABLE Class(
ClassID CHAR(8) NOT NULL,
ClassName CHAR(20) NOT NULL,
DeptID CHAR(8) NULL,)
3、院系表
CREATE TABLE College(
CollegeID CHAR(8) NOT NULL,
CollegeName CHAR(20) NOT NULL,
CollegeSummary CHAR(10) NULL,)
4、课程表
CREATE TABLE Course(
Cno CHAR(10) NOT NULL,
Cname CHAR(10) NOT NULL,
keshi int NOT NULL,
xuefen int NOT NULL,
ksxs char(8) NOT NULL)
5、系表:
CREATE TABLE Dept(
DeptID CHAR(8) NOT NULL,
DeptName CHAR(30) NOT NULL,
CollegeID CHAR(8) NULL)
6、获奖表:
CREATE TABLE HuoJiang(
Sno CHAR(10) NOT NULL,
RewardID CHAR(8) NOT NULL,
Time datetime NULL)
7、惩罚表:
CREATE TABLE Punish(
PunishID char(8) NOT NULL,
PunishName char(10) NULL)
8、奖励表:
CREATE TABLE Reward(
RewardID char(8) NOT NULL,
RewardName char(10) NOT NULL,
RewardLevel char(10) NOT NULL)
9、宿舍表:
CREATE TABLE Room(
RoomID char(8) NOT NULL,
RoomAdd char(20) NOT NULL,
RoomNum int NOT NULL)
10、选课表:
CREATE TABLE SC(
Sno char(10) NOT NULL,
Cno char(10) NOT NULL,
Score int NULL)
11、学生表:
CREATE TABLE Student(
Sno char(10) NOT NULL,
S_name char(8) NOT NULL,
S_xmpy char(20) NOT NULL,
S_cym char(8) NULL,
S_sex char(2) NOT NULL,
S_age int NOT NULL,
S_mz char(10) NOT NULL,
S_jg char(100) NOT NULL,
S_csrq datetime NOT NULL,
RommID int NULL,
ClassID int NULL,
S_sfzh char(15) NOT NULL,
S_image image NULL,
S_zzmm char(4) NOT NULL,
S_csd char(100) NULL,
S_syd char(100) NOT NULL,
S_rxnf datetime NOT NULL,
S_byxx char(20) NOT NULL,
S_pycc char(10) NOT NULL,
S_jtzz char(100) NOT NULL,
S_jtlxdh char(15) NULL,
S_sj char(11) NULL)
12、顾客表:
CREATE TABLE Users(
Uid int NOT NULL,
Uname char(20) NOT NULL,
PassWord char(20) NOT NULL)
13、违纪登记表:
CREATE TABLE WeiJi(
Sno char(10) NOT NULL,
PunishID char(8) NOT NULL,
Time datetime NOT NULL,
chulijieguo text NULL)
GO
二、视图
--查询成绩
USE StudentRecordDB
GO
CREATE VIEW SCORE_VIEW
AS SELECT Student.Sno,S_name,Cname,Score
FROM Student,Course,SC
WHERE Student.Sno=sc.Sno AND SC.Cno=Course.Cno
GO
--查询基本信息
USE StudentRecordDB
GO
CREATE VIEW jbxx_VIEW
AS SELECT Student.Sno,S_name,S_sex,S_age,S_jg,S_zzmm,S_rxnf,
S_jtzz,S_sj,Class.ClassID,Dept.DeptID,Room.RoomID
FROM Student,Class,Dept,Room
WHERE Student.ClassID=Class.ClassID AND Class.DeptID=Dept.DeptID AND Student.RoomID=Room.RoomID
GO
--查询获奖状况
USE StudentRecordDB
GO
CREATE VIEW HJ_VIEW
AS SELECT Student.Sno,S_name,RewardName
FROM Student,HuoJiang,Reward
WHERE Student.Sno=HuoJiang.Sno AND HuoJiang.RewardID=Reward.RewardID
GO
--查询违纪状况
USE StudentRecordDB
GO
CREATE VIEW CF_VIEW
AS SELECT Student.Sno,S_name,PunishName,chulijieguo
FROM Student,WeiJi,Punish
WHERE Student.Sno=WeiJi.Sno AND WeiJi.PunishID=Punish.PunishID
GO
--通过姓名和课程名查询该生该课程成绩
IF EXISTS (SELECT NAME FROM sysobjects WHERE NAME='Pro_S_name' AND TYPE='p')
DROP PROCEDURE Pro_S_name
GO
create procedure Pro_QScore
@S_name_in char(8),@Cname_in char(10),@Score_out int output
As select @Score_out=Score from student,course,sc
where student.Sno=sc.Sno and course.Cno=sc.Cno
and S_name=@S_name_in and Cname=@Cname_in
三、索引
--创立索引
use StudentRecordDB
go
create index ind_ClassID on Class(ClassID)
create index ind_Cno on Course(Cno)
create index ind_DeptID on Dept(DeptID)
create index ind_huojiang on HuoJiang(Sno,RewardID)
create index ind_PunishID on Punish(PunishID)
create index ind_RewardID on Reward(RewardID)
create index ind_RoomID on Room(RoomID)
create index ind_sc on SC(Sno,Cno)
create index ind_Sno on Student(Sno)
create index ind_Uid on Users(Uid)
create index ind_weiji on WeiJi(Sno,PunishID)
go
3.4完整性约束、自定义约束
--class表约束
use StudentRecordDB
go
alter table Class
add constraint pk_ClassID primary key(ClassID)
go
--course表约束
use StudentRecordDB
go
alter table Course
add constraint pk_Cno primary key(Cno)
go
--dept表约束
use StudentRecordDB
go
alter table Dept
add constraint pk_DeptID primary key(DeptID)
go
--huojiang表约束
use StudentRecordDB
go
alter table HuoJiang
add constraint pk_huojiang primary key(Sno,RewardID)
go
--punish表约束
use StudentRecordDB
go
alter table Punish
add constraint pk_PunishID primary key(PunishID)
go
--reward表约束
use StudentRecordDB
go
alter table Reward
add constraint pk_RewardID primary key(RewardID)
go
--room表约束
use StudentRecordDB
go
alter table Room
add constraint pk_RoomID primary key(RoomID)
go
--sc表约束
use StudentRecordDB
go
alter table SC
add constraint pk_sc primary key(Sno,Cno)
go
--student表约束
use StudentRecordDB
go
alter table Student
add constraint pk_Sno primary key(Sno)
go
--Users表约束
use StudentRecordDB
go
alter table Users
add constraint pk_Uid primary key(Uid)
go
--weiji表约束
use StudentRecordDB
go
alter table WeiJi
add constraint pk_weiji primary key(Sno)
go
--参照完整性
use StudentRecordDB
go
ALTER TABLE SC WITH NOCHECK
ADD CONSTRAINT FK_student_sc FOREIGN KEY(Sno) REFERENCES Student(Sno)
ON DELETE CASCADE
ALTER TABLE SC WITH NOCHECK
ADD CONSTRAINT FK_course_sc FOREIGN KEY(Cno) REFERENCES Course(Cno)
ON DELETE CASCADE
ALTER TABLE HuoJiang WITH NOCHECK
ADD CONSTRAINT FK_student_huojiang FOREIGN KEY(Sno) REFERENCES Student(Sno)
ON DELETE CASCADE
ALTER TABLE HuoJiang WITH NOCHECK
ADD CONSTRAINT FK_reward_huojiang FOREIGN KEY(RewardID) REFERENCES Reward(RewardID)
ON DELETE CASCADE
ALTER TABLE WeiJi WITH NOCHECK
ADD CONSTRAINT FK_student_weiji FOREIGN KEY(Sno) REFERENCES Student(Sno)
ON DELETE CASCADE
ALTER TABLE WeiJi WITH NOCHECK
ADD CONSTRAINT FK_punish_weiji FOREIGN KEY(PunishID) REFERENCES Punish(PunishID)
ON DELETE CASCADE
use StudentRecordDB
go
create index ind_ClassID on Class(ClassID)
create index ind_Cno on Course(Cno)
create index ind_DeptID on Dept(DeptID)
create index ind_huojiang on HuoJiang(Sno,RewardID)
create index ind_PunishID on Punish(PunishID)
create index ind_RewardID on Reward(RewardID)
create index ind_RoomID on Room(RoomID)
create index ind_sc on SC(Sno,Cno)
create index ind_Sno on Student(Sno)
create index ind_Uid on Users(Uid)
create index ind_weiji on WeiJi(Sno,PunishID)
go
--class表约束(实体完整性)
use StudentRecordDB
go
alter table Class
add constraint pk_ClassID primary key(ClassID)
go
--course表约束(实体完整性)
use StudentRecordDB
go
alter table Course
add constraint pk_Cno primary key(Cno)
go
--dept表约束(实体完整性)
use StudentRecordDB
go
alter table Dept
add constraint pk_DeptID primary key(DeptID)
go
--huojiang表约束(实体完整性)
use StudentRecordDB
go
alter table HuoJiang
add constraint pk_huojiang primary key(Sno,RewardID)
go
--punish表约束(实体完整性)
use StudentRecordDB
go
alter table Punish
add constraint pk_PunishID primary key(PunishID)
go
--reward表约束(实体完整性)
use StudentRecordDB
go
alter table Reward
add constraint pk_RewardID primary key(RewardID)
go
--room表约束(实体完整性)
use StudentRecordDB
go
alter table Room
add constraint pk_RoomID primary key(RoomID)
go
--sc表约束(实体完整性)
use StudentRecordDB
go
alter table SC
add constraint pk_sc primary key(Sno,Cno)
go
--student表约束(实体完整性)
use StudentRecordDB
go
alter table Student
add constraint pk_Sno primary key(Sno)
go
--Users表约束(实体完整性)
use StudentRecordDB
go
alter table Users
add constraint pk_Uid primary key(Uid)
go
--weiji表约束(实体完整性)
use StudentRecordDB
go
alter table WeiJi
add constraint pk_weiji primary key(Sno)
go
--参照完整性
use StudentRecordDB
go
ALTER TABLE SC WITH NOCHECK
ADD CONSTRAINT FK_student_sc FOREIGN KEY(Sno) REFERENCES Student(Sno)
ON DELETE CASCADE
ALTER TABLE SC WITH NOCHECK
ADD CONSTRAINT FK_course_sc FOREIGN KEY(Cno) REFERENCES Course(Cno)
ON DELETE CASCADE
ALTER TABLE HuoJiang WITH NOCHECK
ADD CONSTRAINT FK_student_huojiang FOREIGN KEY(Sno) REFERENCES Student(Sno)
ON DELETE CASCADE
ALTER TABLE HuoJiang WITH NOCHECK
ADD CONSTRAINT FK_reward_huojiang FOREIGN KEY(RewardID) REFERENCES Reward(RewardID)
ON DELETE CASCADE
ALTER TABLE WeiJi WITH NOCHECK
ADD CONSTRAINT FK_student_weiji FOREIGN KEY(Sno) REFERENCES Student(Sno)
ON DELETE CASCADE
ALTER TABLE WeiJi WITH NOCHECK
ADD CONSTRAINT FK_punish_weiji FOREIGN KEY(PunishID) REFERENCES Punish(PunishID)
ON DELETE CASCADE
3.5存储过程
--通过姓名和课程名查询该生该课程成绩
IF EXISTS (SELECT NAME FROM sysobjects WHERE NAME='Pro_S_name' AND TYPE='p')
DROP PROCEDURE Pro_S_name
GO
create procedure Pro_QScore
@S_name_in char(8),@Cname_in char(10),@Score_out int output
As select @Score_out=Score from Student,Course,SC
where Student.Sno=SC.Sno and Course.Cno=SC.Cno
and S_name=@S_name_in and Cname=@Cname_in
3.6触发器
--建立一种触发器,如果修改Student中学号,则SC、HouJiang、WeiJi中学号自动修改。
USE StudentRecordDB
GO
IF EXISTS (SELECT NAME FROM sysobjects WHERE NAME='Sno_student_tri' AND TYPE='tr')
DROP TRIGGER Sno_student_tri
GO
create trigger Sno_student_tri
on Student for update as if update(Sno)
begin
declare @Sno_new char(10),@Sno_old char(10)
select @Sno_new=Sno from inserted
select @Sno_old=Sno from deleted
update SC set Sno=@Sno_new where Sno=@Sno_old
update HuoJiang set Sno=@Sno_new where Sno=@Sno_old
update WeiJi set Sno=@Sno_new where Sno=@Sno_old
end
go
--建立一种触发器,修改SC中一种学号,如果Stdent中存在该学号,则不许修改,如不存在,则可以修改。
USE StudentRecordDB
GO
IF EXISTS (SELECT NAME FROM sysobjects WHERE NAME='Sno_sc_tri' AND TYPE='tr')
DROP TRIGGER Sno_sc_tri
GO
create trigger Sno_sc_tri
on SC for update as if update(Sno)
begin
declare @Sno_new char(10),@Sno_old char(10),@Sno_cnt int
select @Sno_old=Sno from deleted
select @Sno_cnt=count(*) from Student where Sno=@Sno_old
if @Sno_cnt<>0
rollback transaction
end
go
--建立一种触发器,保证成绩在—之间。
USE StudentRecordDB
GO
IF EXISTS (SELECT NAME FROM sysobjects WHERE NAME='Score_sc_tri' AND TYPE='tr')
DROP TRIGGER Score_sc_tri
GO
CREATE TRIGGER Score_sc_tri
ON SC FOR INSERT,UPDATE
AS
DECLARE @Score_read int
SELECT @Score_read=Score FROM INSERTED
IF @Score_read < 0 OR @Score_read > 100
BEGIN
PRINT '成绩超过~100!请重新输入。'
Rollback Transaction
END
GO
--建立一种触发器,保证选课表中记录和相应课程记录一致。
USE StudentRecordDB
GO
IF EXISTS (SELECT NAME FROM sysobjects WHERE NAME='Dc_course_tri' AND TYPE='tr')
DROP TRIGGER Dc_course_tri
GO
create trigger Dc_course_tri
on Course for delete as declare @Cno_del char(10)
select @Cno_del=Cno from deleted
delete from SC where Cno=@Cno_del
go
--建立一种触发器,保证系号保持一致。
USE StudentRecordDB
GO
IF EXISTS (SELECT NAME FROM sysobjects WHERE NAME='DeptID_dept_tri' AND TYPE='tr')
DROP TRIGGER DeptID_dept_tri
GO
create trigger DeptID_dept_tri
on Dept for update as if update(DeptID)
begin
declare @DeptID_new char(8),@DeptID_old char(8)
select @DeptID_new=DeptID from inserted
select @DeptID_old=DeptID from deleted
update Class set DeptID=@DeptID_new where DeptID=@DeptID_old
end
go
--建立一种触发器,保证学院号保持一致。
USE StudentRecordDB
GO
IF EXISTS (SELECT NAME FROM sysobjects WHERE NAME='CollegeID_college_tri' AND TYPE='tr')
DROP TRIGGER CollegeID_college_tri
GO
create trigger CollegeID_college_tri
on College for update as if update(CollegeID)
begin
declare @CollegeID_new char(8),@CollegeID_old char(8)
select @CollegeID_new=CollegeID from inserted
select @CollegeID_old=CollegeID from deleted
update Dept set CollegeID=@CollegeID_new where CollegeID=@CollegeID_old
end
go
--建立一种触发器,保证RewardID保持一致。
USE StudentRecordDB
GO
IF EXISTS (SELECT NAME FROM sysobjects WHERE NAME='RewardID_reward_tri' AND TYPE='tr')
DROP TRIGGER RewardID_reward_tri
GO
create trigger RewardID_reward_tri
on Reward for update as if update(RewardID)
begin
declare @RewardID_new char(8),@RewardID_old char(8)
select @RewardID_new=RewardID from inserted
select @RewardID_old=RewardID from deleted
update HuoJiang set RewardID=@RewardID_new where RewardID=@RewardID_old
end
go
--建立一种触发器,保证
展开阅读全文