1、目录 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课程设计目 编写这个再就业服务中心管理信息系统,第一是为了学以致用,将学到知识运用到实际中去
2、第二也是为了学到更多东西,加深自己对C#和SQL理解。 1.2 开发背景 随着国内市场经济迅速发展和信息化水平不断提高和网络运用不断普及,如何运用先进管理手段,提高高校管理水平,是当今社会所面临一种课题。各种各样网上管理系统应运而生。 1.3 需求分析 1.4 开发环境 Visual Studio 是微软公司推出开发环境。是当前最流行 Windows 平台应用程序开发环境。 Visual Studio 可以用来创立 Windows 平台下 Windows 应用程序和网络应用程序,也可以用来创立网络服务、智能设备应用程序和 Office 插件。 2.1系
3、统功能描述 学生档案管理系统涉及顾客管理模块、档案管理模块、成绩管理模块,奖惩管理模块、基本信息管理模块、协助模块。 顾客管理模块:对系统顾客进行管理,涉及添加新顾客,对已有顾客查询修改,顾客密码采用md5加密办法进行加密,以提高顾客帐号安全性。 档案管理模块:对学生档案信息进行管理,涉及档案录入,档案查询,档案修改,以便管理者进行管理,无需老式手填表式管理,减少了出错也许性。 成绩管理模块:对学生成绩进行管理,涉及成绩录入,成绩修改,成绩查询,以便管理人员适时对学生成绩进行操作,同步也以便了管理人员对学生成绩理解。 奖惩管理模块:对学生奖惩信息进行记录,修改,查询,
4、让每个人信息可以及时体当前档案上,以便后来查询。 基本信息管理模块:对学生某些基本信息进行管理,及时修改学生基本信息,可做到及时性,精确性。 协助模块:对学生档案管理系统进行简介,对某些基本信息和用法向顾客做初步简介,以便顾客使用和减少顾客摸索时间,提高顾客工作效率。 2.2功能模块图 2.3关系模式图 3.1 E-R图 3.2 关系图 班级表—Class ClassID char(8) 不容许空 主键 className char(20) 不容许空 DeptID char(8) 容许空 学
5、院表--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
6、 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) 不容许空
7、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) 不容许空
8、 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
9、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) 不容许空
10、 违纪表--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=Stud
11、entRecordDB_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 C
12、HAR(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 Hu
13、oJiang( 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、
14、宿舍表: 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
15、) 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) NUL
16、L, 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)
17、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.
18、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.Dep
19、tID 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_
20、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 cr
21、eate 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
22、 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) cre
23、ate 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 --cou
24、rse表约束 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
25、 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 Ro
26、om 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
27、 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)
28、 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
29、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 F
30、K_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)
31、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,PunishI
32、D) 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
33、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 --
34、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 constrai
35、nt 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 a
36、lter 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) REF
37、ERENCES 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)
38、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存储过程 --通过姓名
39、和课程名查询该生该课程成绩 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 Cou
40、rse.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
41、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
42、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 decla
43、re @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='
44、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 --建立一种触发
45、器,保证选课表中记录和相应课程记录一致。 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 Cn
46、o=@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_
47、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 TY
48、PE='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
49、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 o
50、n 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 --建立一种触发器,保证






