基于C#的数据库管理系统,数据库使用的是sql server,开发环境是vs2017,科研管理平台,两种用户角色登录,管理员和教工,实现对教师的管理以及对项目的管理,申请,验收,
√ 实现学院、职务、职称等基本信息的管理;
√ 实现教师信息的管理;
√ 实现科研项目的申报、审批管理;
√ 实现科研项目的验收管理;
√ 创建默认,并绑定到科研项目的验收标志,使其默认值为“未验收”;
√ 创建触发器,新增项目时自动修改学院总项目数;
√ 创建存储过程统计个院系科研项目的申报和完成数量;
√ 建立数据库相关表之间的参照完整性约束。
界面如下:
下面是数据库代码
项目状态 申请中 进行中 验收中 验收通过 申请终止 已终止
ManagmentDB包含 ManagmentId
ManagmentCode
ManagmentName
userDB包含 姓名
教工号
密码
学院id
职务
职称
项目数
projectDB包含 教工号
项目号
项目名称
项目简介
项目进展
academyDB包含 学院名
学院id
create table academyDB
(
AcademyId INT PRIMARY KEY,
AcademyName VARCHAR(20),
AcademyProNum INT,
)
create table userDB
(
UserName VARCHAR(20),
UserId INT PRIMARY KEY,
PassWord CHAR(20),
AcademyId INT,
Job VARCHAR(20),
Positional VARCHAR(20),
ProjectNum INT,
FOREIGN KEY(AcademyId) REFERENCES academyDB(AcademyId),
)
create table projectDB
(
UserId INT,
ProjectId INT PRIMARY KEY,
ProjectName VARCHAR(20),
ProjectNews VARCHAR(50),
ProjectState VARCHAR(20) DEFAULT ('申请中'),
FOREIGN KEY(UserId) REFERENCES userDB(UserId),
)
INSERT INTO projectDB VALUES(1609050130, 1,'图书管理系统','一款图书管理系统','申请中');
INSERT INTO projectDB(UserId,ProjectId,ProjectName,ProjectNews) VALUES(1609050130, 2,'大学生选课系统','一款大学生选课系统');
create table managmentDB
(
ManagmentName VARCHAR(20),
ManagmentId INT PRIMARY KEY,
ManagmentCode CHAR(20),
)
INSERT INTO managmentDB VALUES('liuzt', 1609050130, '123456');
INSERT INTO academyDB VALUES(1, '计算机科学与技术学院',0);
INSERT INTO academyDB VALUES(2, '石油工程学院',0);
INSERT INTO academyDB VALUES(3, '理学院',0);
INSERT INTO academyDB VALUES(4, '文学院',0);
INSERT INTO academyDB VALUES(5, '控制学院',0);
INSERT INTO academyDB VALUES(6, '机电学院',0);
INSERT INTO userDB VALUES('喊喊' , 1609050130, '123456', 1, '教务处主任', '教授', 0);
//存储过程,统计各学院项目数
CREATE OR ALTER PROCEDURE Select_Count_Project
@id int
AS
BEGIN
declare @academyNum int ,@acaId int;
set @acaId = 1;
SELECT @academyNum =(SELECT count(*) FROM projectDB WHERE UserID IN(SELECT UserId FROM userDB WHERE AcademyId = @id))
UPDATE academyDB SET AcademyProNum = @academyNum WHERE AcademyId = @id
END
GO
执行 EXEC Select_Count_Project 2
//触发器
USE test
GO
CREATE TRIGGER selectProjectNum ON projectDB
AFTER INSERT
AS
DECLARE @a int,@num int
SET @a = 1;
SELECT @num = (SELECT count(*) FROM academyDB)
WHILE @a <= @num
BEGIN
EXEC Select_Count_Project @a
SET @a=@a+1
END
GO