使用SQL server实现教务处管理系统功能

设计目的 :

数据库原理的应用; 概念结构设计(ER图); 逻辑结构设计与物理结构设计; 数据库DDL基本操作; 数据的增、删、改、查; 数据库数据集合函数查询与复杂的数据查询方式; 创建与使用索引; 创建与使用视图; 创建与使用数据库完整性约束; 创建与使用存储过程; 创建与使用触发器; 创建数据库用户及用户权限控制技术;

运行代码:

--创建学生表
CREATE TABLE student (
    id INT PRIMARY KEY NOT NULL,
    name VARCHAR(50) NOT NULL,
    age INT NOT NULL,
    gender VARCHAR(10) NOT NULL,
    major VARCHAR(50) NOT NULL,
    grade INT NOT NULL,
    avg_score FLOAT
);

--为学生表中的age字段创建检查约束
ALTER TABLE student ADD CONSTRAINT chk_student_age CHECK (age >= 18 and age <= 70);

--创建教师表
CREATE TABLE teacher (
    id INT PRIMARY KEY NOT NULL,
    name VARCHAR(50) NOT NULL,
    age INT NOT NULL,
    gender VARCHAR(10) NOT NULL,
    department VARCHAR(50) NOT NULL,
    title VARCHAR(50) NOT NULL
);

--创建课程表
CREATE TABLE course (
    id INT PRIMARY KEY NOT NULL,
    course_name VARCHAR(50) NOT NULL,
    credit INT NOT NULL,
    teacher_id INT NOT NULL,
    CONSTRAINT fk_teacher FOREIGN KEY (teacher_id) REFERENCES teacher(id)
);

--创建选课表
CREATE TABLE enrollment (
    id INT PRIMARY KEY NOT NULL,
    course_id INT NOT NULL,
    student_id INT NOT NULL,
    score INT NOT NULL,
    CONSTRAINT fk_course FOREIGN KEY (course_id) REFERENCES course(id),
    CONSTRAINT fk_student FOREIGN KEY (student_id) REFERENCES student(id)
);

--为选课表中的score字段创建非空约束
--为选课表中的score字段创建非空约束
--为选课表中的score字段创建非空约束
ALTER TABLE enrollment ALTER COLUMN score INT NOT NULL;

--数据插入
INSERT INTO student (id, name, age, gender, major, grade) VALUES (1, '张三', 20, '男', '计算机科学', 2019);
INSERT INTO student (id, name, age, gender, major, grade) VALUES (2, '李四', 21, '女', '信息工程', 2018);

INSERT INTO teacher (id, name, age, gender, department, title) VALUES (1, '王老师', 35, '男', '计算机系', '副教授');
INSERT INTO teacher (id, name, age, gender, department, title) VALUES (2, '赵老师', 40, '女', '信息工程系', '教授');

INSERT INTO course (id, course_name, credit, teacher_id) VALUES (1, '数据结构', 4, 1);
INSERT INTO course (id, course_name, credit, teacher_id) VALUES (2, '编译原理', 4, 2);

INSERT INTO enrollment (id, course_id, student_id, score) VALUES (1, 1, 1, 80);
INSERT INTO enrollment (id, course_id, student_id, score) VALUES (2, 2, 2, 85);
----------------查询表记录----------------
SELECT * FROM student;
SELECT * FROM teacher;
SELECT * FROM course;
SELECT * FROM enrollment;
--数据删除
DELETE FROM enrollment WHERE id = 1;

--数据更新
UPDATE student SET grade = 2020 WHERE id = 1;

--数据查询
SELECT * FROM student WHERE id = 2;

--查询选课表中总分数
SELECT SUM(score) FROM enrollment;

--查询选课表中最高分数
SELECT MAX(score) FROM enrollment;

--查询选课表中每门课程的选课人数和平均成绩
SELECT course.course_name, COUNT(enrollment.student_id), AVG(enrollment.score)
FROM enrollment
JOIN course ON enrollment.course_id = course.id
GROUP BY course.course_name;

--查询选课表中选修了所有课程的学生
SELECT student.id, student.name
FROM student
WHERE NOT EXISTS (
    SELECT course.id
    FROM course
    WHERE NOT EXISTS (
        SELECT enrollment.course_id
        FROM enrollment
        WHERE enrollment.student_id = student.id AND enrollment.course_id = course.id
    )
);

--为学生表的id字段创建索引
CREATE INDEX idx_student_id ON student (id);

--查询语句中使用索引
SELECT * FROM student WHERE id = 1;

--创建选课汇总视图
GO
CREATE VIEW enrollment_summary AS
SELECT course.course_name, COUNT(enrollment.student_id) AS num_students, AVG(enrollment.score) AS avg_score
FROM enrollment
JOIN course ON enrollment.course_id = course.id
GROUP BY course.course_name;
GO
--查询选课汇总视图
SELECT * FROM enrollment_summary;
-- 创建计算学生选修课总学分的存储过程
GO
CREATE PROCEDURE calculate_credit (@student_id INT, @total_credit INT OUTPUT)
AS
BEGIN
    SELECT @total_credit = SUM(course.credit) FROM course JOIN enrollment ON course.id = enrollment.course_id WHERE enrollment.student_id = @student_id;
END;
GO

-- 调用存储过程
DECLARE @total_credit INT;
EXEC calculate_credit 1, @total_credit OUTPUT;
SELECT @total_credit;
------------创建触发器-----------
GO
CREATE TRIGGER update_avg_score
ON enrollment
AFTER INSERT
AS
BEGIN
    UPDATE student
    SET avg_score = (SELECT AVG(score) FROM enrollment WHERE student_id = inserted.student_id)
    FROM student JOIN inserted ON student.id = inserted.student_id;
END;
-- 插入一条选课记录
INSERT INTO enrollment (id, course_id, student_id, score) VALUES (3, 1, 1, 85);

-- 查询学生表中更新后的平均分数
SELECT * FROM student WHERE id = 1;

-- 创建新用户
CREATE LOGIN newuser WITH PASSWORD = 'password';

-- 创建用户
CREATE USER newuser FOR LOGIN newuser;

-- 授权新用户访问选课表和课程表
GRANT SELECT ON enrollment TO newuser;
GRANT SELECT ON course TO newuser;

-- 查看新用户权限
SELECT * FROM sys.database_permissions WHERE grantee_principal_id = USER_ID('newuser');

-- 撤销新用户访问选课表和课程表的权限
REVOKE SELECT ON enrollment FROM newuser;
REVOKE SELECT ON course FROM newuser;

-- 删除新用户
DROP USER newuser;
DROP LOGIN newuser;

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
教务管理系统SQL数据库) 摘要 :课题目标是设计并实现一个B/S体系结构的教务信息管理系统。结合实践,理解网页开 发技术和数据库的基本知识,学习相关开发工具和应用软件,熟悉系统设计的过程,熟 练掌握网络数据库编程方法。 本系统用JSP技术来编写本系统,数据库SQL SERVER 2000来连接系统。本论文主要涉及软件,数据库与网络技术等。涵盖知识面广,可有效地 提高学生综合运用所学知识分析解决问题的能力,增强学生对事物的理解与掌握能力,培 养学生掌握科学的研究方法,正确的设计思想,独立思考,勇于进取,探索创新,为今后 进一步学习与工作奠定了良好的基础. 关键词:教务信息管理系统数据库;JSP 目 录 1 引言 1 2 系统分析 2 2。1 功能需求分析 2 2。2 本系统采用的关键技术 3 2。2。1 JSP技术 3 2.2.2 JavaBean技术 4 2。2。3 JDBC技术 5 2。3 可行性分析 6 2。4 系统运行环境 7 3 系统总体设计 8 3.1 总体功能 8 3。2 处理流程设计 9 3。2.1 系统操作流程 9 3。2.2 数据增加流程 10 3。2。3 数据修改流程 10 3。3.4 数据删除流程 11 4 系统详细设计 13 4。1 后台数据库设计 13 4。1。1 SQL SERVER 介绍 13 4.1。2 数据库表结构 14 4。3 系统模块设计 16 4。3.1 用户登陆 16 4。3。2 学生信息管理 16 4.3。2 教师信息管理 18 5 系统调试与测试 20 5。1 程序调试 20 5.2 程序的测试 20 5。2.1 测试的重要性及目的 20 5.2。2 测试的步骤 22 5.2.3 测试的主要内容 22 6 结论 24 6。1 系统评价 24 6.2 安全性问题 24 致谢 26 参考文献 27 功能需求分析 经过调研,基于B/S的教务信息管理系统的要求描述如下: 针对基于B/S的教务信息管理系统用户群情况,我们决定将本系统分为三个部分:学生用 户部分,教师用户部分和超级管理员用户部分.考虑到数据信息的隐私性问题,我们也对 各个用户的功能设置做了调整。例如成绩属于个人隐私,学生用户只允许查看自己的成绩 ,无权查看其他用户的成绩等。总体来说,学生用户只具有查看权限,而教师用户具有 比学生用户高的管理权限,但只局限于成绩部分。超级管理员用户具有最高权限,可以 修改查看学生用户教师用户乃至超级管理员用户的全部信息。 用户进入登陆页面会通过登陆框中用户所输入的信息判断用户是学生用户,教师用户,超 级管理员用户或者非法用户.并通过判断进入相对应的页面。 在学生用户界面中,用户只拥有最基本的查看权限,不具备任何的修改权限.用户可以查 看学生的基本信息,自己的各种课程信息,显示自己各门功课的成绩。 在教师用户界面中,教师对部分信息具有修改权限。例如录入学生成绩。 在超级管理员用户界面中,用户拥有最高权限。可以添加修改包括学生,教师和管理员 在内的任何信息。更新数据的过程中,所有的数据都尽最大可能的作到数据的级联。在 添加学生基本信息的同时做到对相关信息的级联添加.所有的添加操作之前都要确定数据 库中是否存在相同的记录,以确保数据的唯一性,把数据库被破坏的可能性降到最低。 所有的添加功能都在添加的同时把数据更新到数据库,并马上在界面上显示出结果以能 够让用户及时的知道更新的内容。超级管理员对所有的数据都具有添加,删除,修改,查看 等基本功能。在所有的删除操作之前,系统都级联的删除其他表中的相关信息。 以下是部分界面图,如图片不清,请直接点击图片,如需要看更详细的资料,请直接联系 客服! 图1(双击并最大化图片,可看清晰 图片) 图2(双击并最大化图片,可看清 晰图片) 图3(双击并最大化图片,可看清晰 图片) ----------------------- 教务管理系统(SQL数据库)-1401191959246956全文共4页,当前为第1页。 教务管理系统(SQL数据库)-1401191959246956全文共4页,当前为第2页。 教务管理系统(SQL数据库)-1401191959246956全文共4页,当前为第3页。 教务管理系统(SQL数据库)-1401191959246956全文共4页,当前为第4页。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值