《二工大学籍管理系统设计说明书(共15页).docx》由会员分享,可在线阅读,更多相关《二工大学籍管理系统设计说明书(共15页).docx(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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六个人体会利用详细程序设计书一、需求分析1 目标用户管理人员班级辅导员(或班主任) 教师学生等2 主要功能序号功能名称功能说明1学生管理登记学生的基本信息(性别,姓名,班级等),并提供查询功能
2、2课程管理登记课程基本情况(课程名称,开课学期,课程类型,学分等),提供查询功能3教师管理登记教师基本情况(姓名,年龄,性别,学历等),提供统计查询4成绩管理登记学生各门课程的考试成绩,提供查询 统计功能5授课管理登记教师讲授课程,授课地点和授课学期,提供查询功能6编码维护维护系统中使用的编码(如职称编码等)3 问题描述管理人员需要建立学生的学籍,汇总每学期没有拿到规定学分的学生以及这些学生的详细情况;学生完成一门课程的学习以后,教师需要录入学生的考试成绩,计算平均成绩,汇总各个分数段的人数;学生需要查询已结业的各门课的成绩;班主任需要查询本班学习情况,包括各门课程的平均成绩和每个学生的开始通
3、过情况。为此,设计一套实用的学籍管理系统可以大大简化管理人员,班主任和任课教师的工作,方便学生查询自己的学习情况。4 问题分析1 确定系统的源点和汇点2 确定系统所需的存储文3 确定顶层加工4 确定数据流二、概要设计1) 根据系统的初步需求,分析设计顶层数据流图2)根据顶层数据流图,细化出一层数据流图3)继续细化数据流图4)制定整理数据字典三、详细设计1顶层数据流图2第一层数据流图3 第二层数据流图4 细化后的成绩录入3层数据流图四、部分T-SQL源程序1 存储过程-Creditconvert(功能:学分转换)CREATE FUNCTION CreditConvert( 成绩 NUMERIC(
4、3,1),学分 NUMERIC(3,1)-成绩:考试成绩-学分:课程规定学分RETURNS NUMERIC(5,2)-应得学分ASBEGIN RETURN CASE SIGN(成绩-60) WHEN 1 THEN 学分 WHEN 0 THEN 学分 WHEN -1 THEN 0 ENDEND-termConvert(功能:学期转换)CREATE FUNCTION termConvert(term CHAR(11),CLno CHAR(6)-term 学年,格式如:2006-2007/2-CLno 班级编号,格式如:,前2位代表入学年份RETURNS INT -在校第几学期ASBEGINRETU
5、RN(CONVERT(NUMERIC,SUBSTRING(term,1,4)-CONVERT(NUMERIC,20+SUBSTRING(CLno,1,2)*2+CONVERT(NUMERIC ,SUBSTRING(TERM,11,1)END统计不同分数段人数存储过程设计-按照课程编号统计最高分、最低分,不同分数段的人数,平均成绩CREATE PROCEDURE p_SatSorecno CHAR(5) ,-人口参数:班级编号clno CHAR(6) -人口参数:课程编号ASBEGIN DECLARE socre1 INT -待统计分数段上限 DECLARE socre2 INT -待统计分数段
6、下限 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+ +考试成绩按照分数段统计情况-设置被统计分数段的初值SET socre1=100SET socre2=90WHILE (socre1=60)BEGIN SE
7、T 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=socre2IF socre160 SET socre2=socre2-10ELSE SET socre2=0 ENDEND汇总平均成绩存储过程设计CREATE Proced
8、ure p_AverageScore term VARCHAR(11)-人口参数:学期-学期的格式为:*-*/*-前9位表示学年,最后一位表示本学年的第几期。例如,2005-2006/2表示2005-2006学年的第二学期。asBEGIN DECLARE 课程编号 VARCHAR(5) -变量:课程编号 DECLARE CLname VARCHAR(30) -变量:班级名称 DECLARE CLno VARCHAR(6) -变量:班级编号 DECLARE avgscore NUMERIC(10,2) -变量:平均成绩 DECLARE Cterm INT -变量:学期-定义班级游标 DECLAR
9、E class_cursor CURSOR FOR SELECT CLname,CLno,dbo.termConvert(term,CLno)FROM class WHERE dbo.termConvert(term,CLno)0,则计算每名学生的平均成绩IF avgscore0 BEGIN PRINT term+学期 +CLname+各门课总平均成绩为+STR(avgscore,5,1) -每个学生的平均成绩和获得的学分 PRINT 该班每个学生的平均成绩如下: SELECT e.SName,d.avgscore,totalCredit FROM (SELECT a.no,AVG(成绩) a
10、vgscore,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 CLnam
11、e,CLno,Cterm END CLOSE class_cursor DEALLOCATE class_cursorEND2 触发器修改学分触发器CREATE TRIGGER t_tcredits ON 选课 FOR INSERT,UPDATE,DELETEAS 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 DELE
12、TEDBEGIN-处理删除的记录OPEN delete_cursorFETCH NEXT FROM delete_cursor INTO noWHILE FETCH_STATUS=0BEGINSET tcredits=(SELECT SUM(学分) FROM ourse a,选课 b WHERE a.课程编号=b.课程编号 ANDb.成绩60 AND b.no=no)UPDATE Student SET SCredits=tcredits WHERE no=noFETCH NEXT FROM delete_cursor INTO noENDCLOSE delete_cursorDEALLOCA
13、TE delete_cursor-处理修改和增加的记录IF UPDATE (成绩)BEGIN OPEN insert_coursor FETCH NEXT FROM insert_cursor INTO noWHILE 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 ENDEND五、 调试分析和测试结果学分转换测试结果学期转换测试结果汇总平均成绩测试结果不同分数段统计人数测试结果专心-专注-专业