设计说明书
学院计算机与信息学院 专业软件工程
1
目录
一、需求分析
1. 目标用户 -------------------------------------------------------------------------------------------- 03 2. 主要功能 -------------------------------------------------------------------------------------------- 03 3. 问题描述 -------------------------------------------------------------------------------------------- 03 4. 问题分析 -------------------------------------------------------------------------------------------- 03
二、概要设计
1. 方案确定 -------------------------------------------------------------------------------------------- 03 2. 软件结构 -------------------------------------------------------------------------------------------- 03 3. 模块功能说明 -------------------------------------------------------------------------------------- 03
三、详细结构设计
1. 数据设计 -------------------------------------------------------------------------------------------- 04 2. 流程图 ----------------------------------------------------------------------------------------------- 04
四、T-SOL源程序
1. 存储过程 -------------------------------------------------------------------------------------------- 09 2. 触发器 ----------------------------------------------------------------------------------------------- 09
五、调试分析和测试结果
调试分析和测试结果 --------------------------------------------------------------------------------------- 11
六个人体会
2
利用
详细程序设计书
一、需求分析
1. 目标用户
管理人员班级辅导员(或班主任) 教师学生等
2. 主要功能 序号 1 2 3 4 5` 6
功能名称 学生管理 课程管理 教师管理 成绩管理 授课管理 编码维护 功能说明 登记学生的基本信息(性别,姓名,班级等),并提供查询功能 登记课程基本情况(课程名称,开课学期,课程类型,学分等),提供查询功能 登记教师基本情况(姓名,年龄,性别,学历等),提供统计查询 登记学生各门课程的考试成绩,提供查询 统计功能 登记教师讲授课程,授课地点和授课学期,提供查询功能 维护系统中使用的编码(如职称编码等) 3. 问题描述
管理人员需要建立学生的学籍,汇总每学期没有拿到规定学分的学生以及这些学生的详细情况;学生完成一门课程的学习以后,教师需要录入学生的考试成绩,计算平均成绩,汇总各个分数段的人数;学生需要查询已结业的各门课的成绩;班主任需要查询本班学习情况,包括各门课程的平均成绩和每个学生的开始通过情况。为此,设计一套实用的学籍管理系统可以大大简化管理人员,班主任和任课教师的工作,方便学生查询自己的学习情况。
4. 问题分析
1 确定系统的源点和汇点 2 确定系统所需的存储文 3 确定顶层加工 4 确定数据流
二、概要设计
1) 根据系统的初步需求,分析设计顶层数据流图 2)根据顶层数据流图,细化出一层数据流图 3)继续细化数据流图 4)制定整理数据字典
3
三、详细设计
1顶层数据流图
管理人员表报总汇况情本基生学学生考试成绩汇总报表学生基本信息编码各类编码对应关系教学计划信息课程基本信息教师基本信息编码 学生基本信息息信生学教师学生考试成绩考试成绩表0教师信息教师信息班主任件计条统查询过情况通考试学籍管理件课程信息教学计课程信息划考试考试成绩成绩条询查成绩教学计划考试成绩学生顶层数据流图
4
2第一层数据流图
5教学计划信息管理人员各类编计划授课管理码对应关系6教学编码维护汇成绩考试学生教师基本信息教学计划息信息报表本总信基汇本生情况基学本程基生课学2教师编码考试成绩表学生考试成绩总报编码13表学生管理课程管理教师管理4学生信息课程信息息信教师教师信息班主任学生基本信息成绩管理条件况计情统查询通过绩成试考试考成绩查询考试成条件学生绩考试成绩课程信息学籍管理1层数据流图
5
3 第二层数据流图
教师管理人员4.14.2成绩录入成绩查询统计条件查询考试成绩成绩考绩成试统查考询试条通件过况情学考试考试成绩成绩计生考试成条件 班主任
试考成绩考试成绩表绩汇总报表学生成绩管理2层数据流图
6
4 细化后的成绩录入3层数据流图
4.1.1班级学生名单查询4.1.6班级学生名单显示学生基本信息 学生名单学生信息学生班级4.1.2要求绩成添加教师增加成绩新增的绩成删变动成绩要求4.1.5除成原成绩成绩查询考试成绩绩要求4.1.4绩成除删号要学需的修改的成绩4.1.3删除成绩修改成绩细化后的成绩录入3层数据流图
四、部分T-SQL源程序
1.存储过程
--Creditconvert(功能:学分转换)
CREATE FUNCTION CreditConvert( @成绩 NUMERIC(3,1),@学分 NUMERIC(3,1)) --@成绩:考试成绩 --@学分:课程规定学分
RETURNS NUMERIC(5,2)--应得学分 AS
7
BEGIN RETURN
CASE SIGN(@成绩-60) WHEN 1 THEN @学分 WHEN 0 THEN @学分 WHEN -1 THEN 0 END END
--termConvert(功能:学期转换)
CREATE FUNCTION termConvert(@term CHAR(11),@CLno CHAR(6)) --@term 学年,格式如:2006-2007/2
--@CLno 班级编号,格式如:020001,前2位代表入学年份 RETURNS INT --在校第几学期 AS BEGIN
RETURN(CONVERT(NUMERIC,SUBSTRING(@term,1,4))-CONVERT(NUMERIC,'20'+SUBSTRING(@CLno,1,2)))*2+CONVERT(NUMERIC ,SUBSTRING(@TERM,11,1)) END
统计不同分数段人数存储过程设计
--按照课程编号统计最高分、最低分,不同分数段的人数,平均成绩 CREATE PROCEDURE p_SatSore
@cno CHAR(5) ,--人口参数:班级编号 @clno CHAR(6) --人口参数:课程编号 AS BEGIN
DECLARE @socre1 INT --待统计分数段上限 DECLARE @socre2 INT --待统计分数段下限 DECLARE @num INT --待统计分数段人数 DECLARE @CLName VARCHAR(30) --班级名称 DECLARE @CName VARCHAR(50) --课程名称
--查询课程名称和班级名称
SET @CLName=(SELECT CLName FROM class WHERE CLno=@clno)
SET @CName=(SELECT 课程名称 FROM course WHERE 课程编号=@cno) PRINT @CLName+' <'+@CName+'>'+'考试成绩 按照分数段统计情况'
--设置被统计分数段的初值
8
SET @socre1=100 SET @socre2=90
WHILE (@socre1>=60) BEGIN
SET @num=(SELECT count(*) FROM 选课 a,classb,classmate c WHERE b.CLno=c.CLno AND a.no=c.no
AND b.CLno=@clno AND a.no=@cno AND 成绩 BETWEEN @socre2 AND @socre1) PRINT STR(@socre2)+' 至'+STR(@socre1)+'分 人数为'+STR(@num)
--调整统计分数段 SET @socre1=@socre2 IF @socre1>60
SET @socre2=@socre2-10 ELSE
SET @socre2=0 END END
汇总平均成绩存储过程设计
CREATE Procedure p_AverageScore @term VARCHAR(11)--人口参数:学期 --学期的格式为:****-****/*
--前9位表示学年,最后一位表示本学年的第几期。例如,2005-2006/2表示2005-2006学年的第二学期。 as
BEGIN
DECLARE @课程编号 VARCHAR(5) --变量:课程编号
DECLARE @CLname VARCHAR(30) --变量:班级名称
DECLARE @CLno VARCHAR(6) --变量:班级编号
DECLARE @avgscore NUMERIC(10,2) --变量:平均成绩
DECLARE @Cterm INT --变量:学期 --定义班级游标 DECLARE class_cursor CURSOR FOR SELECT CLname,CLno,dbo.termConvert(@term,CLno)
FROM class WHERE dbo.termConvert(@term,CLno)<=8 --过滤掉已经毕业的班级 OPEN class_cursor
FETCH NEXT FROM class_cursor INTO @CLname,@CLno,@Cterm
9
WHILE @@FETCH_STATUS=0 BEGIN
SET @avgscore=(SELECT ISNULL(avg(成绩),0) FROM 选课a,classmateb,classc,course d WHERE a.no=b.no AND b.CLno=c.CLno AND b.CLno=@CLno AND a.课程编号=d.课程编号 AND d.学期=@Cterm)
--根据班级平均成绩判断该班的成绩是否登记,如果平均成绩>0,则计算每名学生的平均成绩
IF @avgscore>0 BEGIN
PRINT @term+'学期 '+@CLname+'各门课总平均成绩为'+STR(@avgscore,5,1) --每个学生的平均成绩和获得的学分 PRINT ' 该班每个学生的平均成绩如下:' SELECT e.SName,d.avgscore,totalCredit FROM
(SELECT a.no,AVG(成绩) avgscore,SUM(dbo.CreditConvert(score,学分)) totalCredit
FROM Student a,选课b,course c
WHERE a.no=b.no AND b.课程编号=c.课程编号 AND c.学期=@Cterm GROUP BY a.SNo) d,classmatee,class f
WHERE e.no=d.no AND e.CLno=f.CLno AND f.CLno=@CLno END ELSE
PRINT @term+'学期'+ @CLname+@CLno+'班'+' 成绩没有登记' FETCH NEXT FROM class_cursor INTO @CLname,@CLno,@Cterm END
CLOSE class_cursor
DEALLOCATE class_cursor END
2.触发器 修改学分触发器
CREATE TRIGGER t_tcredits ON 选课 FOR INSERT,UPDATE,DELETE AS
DECLARE @tcredits NUMERIC(4,0) --总学分 DECLARE @no CHAR(5) --学号
DECLARE insert_cursor CURSOR FOR SELECT no FROM INSERTED DECLARE delete_cursor CURSOR FOR SELECT no FROM DELETED BEGIN
--处理删除的记录 OPEN delete_cursor
FETCH NEXT FROM delete_cursor INTO @no WHILE @@FETCH_STATUS=0 BEGIN
SET @tcredits=(SELECT SUM(学分) FROM ourse a,选课 b WHERE a.课程编号=b.课程编号
10
AND
b.成绩>60
AND b.no=@no)
UPDATE Student SET SCredits=@tcredits WHERE no=@no FETCH NEXT FROM delete_cursor INTO @no END
CLOSE delete_cursor
DEALLOCATE delete_cursor --处理修改和增加的记录 IF UPDATE (成绩) BEGIN
OPEN insert_coursor
FETCH NEXT FROM insert_cursor INTO @no WHILE @@FETCH_STATUS=0 BEGIN
SET @tcredits=(SELECT SUM(学分) FROM course a, 选课 b WHERE a.课程编号=b.课程编号 AND b.成绩>60 AND b.no=@no)
PRINT STR(@tcredits)+'delete'+'mmm'+@no
UPDATE Student SET SCredits=@tcredits WHERE no=@no FETCH NEXT FROM insert_cursorINTo @no END
CLOSE insert_cursor
DEALLOCATE insert_cursor END END
五、调试分析和测试结果
学分转换测试结果
11
学期转换测试结果
12
汇总平均成绩测试结果
13
不同分数段统计人数测试结果
14
15
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务