收藏 分销(赏)

学生档案管理系统课程设计实验报告.doc

上传人:快乐****生活 文档编号:2474273 上传时间:2024-05-30 格式:DOC 页数:19 大小:242.54KB 下载积分:8 金币
下载 相关 举报
学生档案管理系统课程设计实验报告.doc_第1页
第1页 / 共19页
学生档案管理系统课程设计实验报告.doc_第2页
第2页 / 共19页


点击查看更多>>
资源描述
学生档案管理系统课程设计实验报告 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 19 个人收集整理 勿做商业用途 课程设计评分表 学生姓名: 班级: 学号: 课程设计题目: 项目内容 满分 实 评 选 题 能结合所学课程知识、有一定的能力训练.符合选题要求 (5人一题) 10 工作量适中,难易度合理 10 能 力 水 平 能熟练应用所学知识,有一定查阅文献及运用文献资料能力 10 理论依据充分,数据准确,公式推导正确 10 能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等 10 能体现创造性思维,或有独特见解 10 成 果 质 量 总体设计正确、合理,各项技术指标符合要求. 10 说明书综述简练完整,概念清楚、立论正确、技术用语准确、结论严谨合理;分析处理科学、条理分明、语言流畅、结构严谨、版面清晰 10 设计说明书栏目齐全、合理,符号统一、编号齐全。 格式、绘图、表格、插图等规范准确,符合国家标准 10 有一定篇幅,字符数不少于5000 10 总 分 100 指导教师评语: 指导教师签名: 年 月 日 · 实验题目:学生档案管理系统 · 实验时间、地点:2010—11—21——2010/11/24.软件楼206机房 · 实验目的:通过本次课程设计让学生能够综合运用所学的关系数据库原理知识解决并能设计一个实际问题,进一步掌握数据库原理的相关理论和数据库的设计实现过程,进一步提高分析问题和解决问题的能力以及动手能力 · 实现过程和思路 1系统需求分析 (1) 通过对调查用户的信息要求。处理要求.完整性与安全性要求根据具体的数据库管理系统开发令用户满意的档案管理系统。 当用户进入该系统后要实现某某学生档案信息的查询,更新和修改。 “档案管理系统”主要研究通用的档案管理信息化解决方案,研究各单位各行业档案系统的普遍特征,研发适合各类型层次单位的档案信息管理系统软件。通过通用性的研究,将该系统的可应用拓展到其他单位或者行业的档案信息系统建设,以期提高档案工作信息化水平. (2)系统需求分析阶段结果 用户登录 档案管理 个人成绩管理 个人信息管理 个人所在系管理 查看信息 修改信息 删除信息 查看成绩 添加成绩 删除成绩 查看系别 添加系别 删除系别 2 概念模型设计 (1)概念设计是整个数据库设计的关键,它通过对用户需求进行综合,归纳与抽象,形成一个独立于具体DBMS的概念模型,是各种数据库的共同基础。 (2)将各实体画出E-R图 学号 政治面貌 出生日期 家庭住址 电话号码 就读学校 学生基本信息 姓名 性别 年龄 系编号 专业 班级 图2—1 学生基本信息实体的E—R图 学生成绩 学号 语文 数学 物理 英语 图2—2 学生成绩实体E—R图 学生所属系别专业 系编号 学号 系人数 专业 图2—3 学生所属系专业实体E—R图 学生基本信息 学生成绩 学生所属系别 拥有 属于 图2—4各实体之间的联系E—R图 3 逻辑结构设计 将E—R 图转换为一个关系模式 (1)把每一个实体转换为关系 学生基本信息(学号 ,姓名,系别年龄,班级,出生日期,政治面貌,专业,家庭住址,电话号码 ,系编号,就读学校) 学生成绩(学号,语文,数学,英语,物理) 学生所属系别(系编号,学号,专业,系人数) (2)把每一个联系转换为关系模式 属于(学号,系编号) 拥有(成绩学号,学生信息学号) 4物理结构设计 (1)确定数据库的物理结构,主要是存取方法和存取结构 为数据库各表建立索引如下: create unique index [学生信息索引] on [学生基本信息表]([学号]) create unique index [学生成绩索引] on [学生成绩表]([学号]) create unique index [学生专业索引] on [学生所属系专业表]([系编号]) 5数据库实施阶段 二 数据库实施阶段 建立数据库.数据表.视图。索引.触发器及存储过程。 1.建立学生档案数据库 create database [学生档案数据库] 2.建立数据表 (1)学生基本信息表 create table [学生基本信息表] ( [学号] char(10) , [姓名]char(7), [性别]char(2) check([性别]in('男’,'女’)) , [年龄]int, [班级] char(10), [出生日期] datetime, [政治面貌] char(6), [专业] char(10), [家庭住址] char(25), [电话号码] char(11), [系编号] char(10), [就读学校] char(20), ) (2)学生成绩表 create table [学生成绩表] ( [学号] char(10), [语文] char(6), [数学] char(6), [英语] char(6), [物理]char(6), ) (3)学生所属系专业表 create table [学生所属系专业表] ( [系编号] char(10), [学号] char(10), [系名]char(10), [系人数] int, ) 3.建立视图 (1) 查询学生基本信息的视图定义如下。 create view [学生信息视图](学号,姓名,性别,年龄,班级,出生日期,政治面貌,专业,家庭住址,电话号码 ,系编号) as select * from [学生基本信息表] (2)显示学生成绩的视图定义如下。 create view [学生成绩视图](学号,语文,数学,英语,物理) as select * from [学生成绩表] (3)显示学生所属系专业的视图定义如下。 create view [学生专业视图](系编号,学号,系名) as select *from [学生所属系专业表] 4。建立索引 create unique index [学生信息索引] on [学生基本信息表]([学号]) create unique index [学生成绩索引] on [学生成绩表]([学号]) create unique index [学生专业索引] on [学生所属系专业表]([系编号]) 5.建立触发器 (1)插入触发器 当插入[学生基本信息表]中某一基本信息时,触发[学生所属系专业表]和[学生成绩表],插入相应的记录。 触发[学生基本信息表] drop trigger 触发学生基本信息1 go create trigger 触发学生基本信息1 on [学生基本信息表] for insert as select * from [学生基本信息表] go 举例: 当在[学生基本信息表]中插入某一字段,将触发insert事件,例如: 在[学生基本信息表]插入该学生所一个部分新记录,并将结果显示到查询分析器上。 insert into [学生基本信息表](学号,姓名,性别,年龄,专业) values (’09111603’,'李红','女',18,’软件工程') -—插入触发器 在[学生基本信息表]插入一个触发器,并保证结在[学生基本信息表]添加的【学号】和【系编号】部分信息要在[学生所属系专业表] 中相应添加并将结果显示到查询分析器上。 drop trigger 触发学生基本信息2 go create trigger 触发学生基本信息2 on [学生基本信息表] for insert as declare @系编号 varchar(10) declare @学号 varchar(10) begin select @系编号=系编号 ,@学号=学号 from inserted insert into [学生所属系专业表](系编号,学号) values (@系编号,@学号) end go 举例:当向[学生基本信息表]中再增加一列【学号】和【系编号】 insert into [学生基本信息表](系编号,学号 ) values (’002’,’09111629’) (2)更新触发器 创建一个触发器,它实现当[学生基本信息表]中[学号]字段的更改,将同步实现[学生成绩表]和[学生所属系专业表]的学号的改变。 drop trigger 更新学生成绩表 go Create Trigger 更新学生成绩表 On [学生基本信息表] -—在[学生基本信息表]中创建触发器 for Update --触发什么事件 As ——事件触发后所要做的事情 if Update([学号]) --—判断是否更新了学号 begin Update [学生成绩表] Set [学生成绩表]。[学号]=i.[学号] From [学生成绩表]as br , Deleted as d ,Inserted as i --Deleted和Inserted临时表 Where br。[学号]=d。[学号] end go drop trigger 更新学生成绩表1 go Create Trigger 更新学生成绩表1 On [学生基本信息表] -—在[学生基本信息表]中创建触发器 for Update -—触发什么事件 As -—事件触发后所要做的事情 if Update(学号) —--判断是否更新了学号 begin Update [学生所属系专业表] Set [学生所属系专业表]。[学号]=i.[学号] From [学生所属系专业表] as bt, Deleted as d ,Inserted as i —-Deleted和Inserted临时表 Where bt.[学号]=d。[学号] end go 举例: 当把[学生基本信息表]中学号09111603改为09111604时,将触发 “触发学生成绩表1”的触发器 select * from [学生基本信息表] select * from [学生成绩表] select * from [学生所属系专业表] update [学生基本信息表] set [学号]=’09111604’ where [学号]=’09111603’ delete from [学生基本信息表] where [学号]='09111629' 更新触发器 在[学生基本信息表]创建限制学生年龄在18到30岁之间的触发器 drop trigger [限制学生年龄在18到30岁] go create trigger [限制学生年龄在18到30岁] on [学生基本信息表] for update,insert as if exists(select * from inserted where [年龄]<18 or [年龄]>30) begin print ’请输入学生年龄在18到30 岁之间的数' rollback transaction end go 举例: 当向[学生基本信息表]中插入年龄小于18岁的记录 select* from [学生基本信息表] insert into [学生基本信息表]( 学号,姓名,年龄) values (’09111605’,’张',17) (3)删除触发器 当删除[学生基本信息表]中[学号]基本信息时,将同步实现[学生所属系专业表]和[学生成绩表]相应的记录整行的删除. 触发[学生所属系专业表] drop trigger 删除学生所属系专业表 go create trigger 删除学生所属系专业表 on [学生基本信息表] for delete as begin delete [学生所属系专业表] from deleted as d ,[学生所属系专业表] as br where d。[学号]=br.[学号] end go drop trigger 删除学生成绩表 go create trigger 删除学生成绩表 on [学生基本信息表] for delete as begin delete [学生成绩表] from deleted as d1 ,[学生成绩表] as br1 where d1.[学号]=br1。[学号] end go 举例: 当删除[学生基本信息表]中学号为’09111603‘的记录,将同步实现[学生所属系专业表]和[学生成绩表]相应的学号记录的整行删除。 select * from [学生基本信息表] select * from [学生成绩表] select * from [学生所属系专业表] delete from [学生基本信息表] where [学号]='09111603’ 删除触发器 在[学生基本信息表]创建一个触发器,并保证结在[学生基本信息表]删除的【学号】和【系编号】部分信息要在[学生所属系专业表] 中相应删除并将结果显示到查询分析器上。 drop trigger 触发学生基本信息3 go create trigger 触发学生基本信息3 on [学生基本信息表] for delete as begin delete [学生所属系专业表] from deleted as d join [学生所属系专业表] on [学生所属系专业表].[学号]=d.[学号] and [学生所属系专业表].[系编号]=d.[系编号] end go 举例:当向[学生基本信息表]中再删除一列【学号】和【系编号】 select * from [学生所属系专业表] delete from [学生基本信息表] where [学号]=’09111629' and [系编号]=’002' (4)综合触发器举例 在学生所属系专业表中增加一个学生人数字段([系人数])表示该系当前最新的学生人数,该字段的值随着学生信息表中的记录数发生改变, 即:当学生基本信息表中新增学生记录,并且分配了具体的所属系别后,该系的学生人数自动加1;当学生表中删除某记录并且删除的记录 原有所属系别时,该系的学生人数自动减1;当学生信息表中的所属系别值发生改变时,原来系别的学生人数自动减1,新的系别的学生人数自动加1. 以上处理要求分别用insert、delete、update触发器实现其处理功能. insert触发器: DROP TRIGGER 增加系人数 GO CREATE TRIGGER 增加系人数 ON [学生基本信息表] AFTER INSERT —-—插入数据成功以后触发 AS select * from [学生所属系专业表] DECLARE @插入的系编号 varchar(11) SELECT @插入的系编号 = [系编号] FROM inserted —--将插入数据的所属系别取出保存变量 UPDATE [学生所属系专业表] SET [系人数] = ISNULL([系人数],0)+1 WHERE [系编号] = @插入的系编号 ——-将所属系别的学生人数加1 GO 举例: 在[学生基本信息表]中插入系编号为 ’002‘的记录,将会触发 【增加系人数】触发器 则在[学生所属系专业表]中系编号为002的系人数将增加1个。 insert into [学生基本信息表](学号,姓名 ,系编号) values(’09111604',’王明','002’) delete触发器: DROP TRIGGER 减少系人数 GO CREATE TRIGGER 减少系人数 ON [学生基本信息表] AFTER DELETE-——删除数据成功以后触发 AS select * from [学生基本信息表] select * from [学生所属系专业表] DECLARE @删除前系编号 varchar(10) SELECT @删除前系编号 = [系编号] FROM deleted ---将删除数据的所属系别取出保存变量 UPDATE [学生所属系专业表] SET [系人数] = isNULL([系人数],0)—1 WHERE [系编号] =@删除前系编号 ——-将所属系别的学生人减少1 GO 举例: 在[学生基本信息表]中删除系编号为 '002‘的记录,将会触发 【减少系人数】触发器 则在[学生所属系专业表]中系编号为002的系人数将减少1个。 delete from [学生基本信息表] where [系编号]='002' update触发器: 解决的是转系的问题 DROP TRIGGER 转系触发器 GO CREATE TRIGGER 转系触发器 ON [学生基本信息表] AFTER UPDATE -—-修改数据成功以后触发 AS select * from [学生基本信息表] select * from [学生所属系专业表] DECLARE @删除前系编号 varchar(10), @插入的系编号 varchar(10) IF UPDATE([系编号]) ---判断是否修改了所属系别列 BEGIN SELECT @删除前系编号 = [系编号] FROM deleted-—-存储修改之前的系别数据 SELECT @插入的系编号 =[系编号] FROM inserted--—存储修改之后的系别数据 UPDATE [学生所属系专业表] SET [系人数] = ISNULL([系人数],0)—1 WHERE [系编号] = @删除前系编号---将原所属系别的学生人数减1 UPDATE [学生所属系专业表] SET[系人数] = ISNULL([系人数],0)+1 WHERE [系编号]= @插入的系编号---将新所属系别的学生人数加1 END GO 举例: 当更把在[学生基本信息表]中系编号为 '002‘的记录改为'001‘时,将会触发 【减少系人数】触发器和【增加系人数】触发器, 将相应地在[学生所属系专业表]中系编号为002的系人数将减少1个,而系编号为’001‘的将相应增加系人数1个。 select * from [学生基本信息表] begin update [学生基本信息表] set [系编号]=’001’ where [系编号]=’002' end 7.数据入库 采用事先在Excel中录入数据,然后使用SQL2000数据导入/导出功能,将数据导入到相应基本表中。 8.创建各个功能的存储过程。 (1)创建带参数的存储过程,他的功能是向在[学生基本信息表]中插入一元组,新元组的值由参数提供。 drop procedure [学生信息存储过程] GO create procedure [学生信息存储过程] ( @学号 char(10), @姓名 char (6), @性别 char (2) =’女' , @年龄 int, @班级 char(10), @出生日期 datetime=’1989/04/05', @政治面貌 char(6), @专业 char(10), @家庭住址 char(25), @电话号码 char(11), @系编号 char(10), @就读学校 char(20)='东华理工大学’ ) as insert into [学生基本信息表] values(@学号, @姓名, @性别, @年龄, @班级 , @出生日期,@政治面貌, @专业, @家庭住址,@电话号码, @系编号,@就读学校) GO 举例: 执行数据库学生档案数据库带参数的存储过程 “学生信息存储过程” begin exec [学生信息存储过程] @学号='09111629’, @姓名=’泉水叮咚', @性别=’男', @年龄=21, @班级='16' , @出生日期='1989/04/05', @政治面貌=’打酱油的', @专业='软件工程’, @家庭住址='湖南怀化',@电话号码='15270992345’, @系编号=’003',@就读学校=’东华理工大学' select * from [学生基本信息表] end begin exec [学生信息存储过程] @学号='09111630’, @姓名='在水一方', @年龄=18, @班级='16' , @出生日期=’1991-04-05', @政治面貌='打酱油的’, @专业=’软件工程’, @家庭住址='江西上饶',@电话号码='15270994698', @系编号=’004’ select * from [学生基本信息表] end (2)创建能够返回值的存储过程,他的功能是从数据表 [学生基本信息表]中根据学号查询某一同学的姓名和系别,查询结果由参数 @姓名,@系编号和@就读学校返回. drop procedure [创建能够返回值的存储过程] GO create procedure [创建能够返回值的存储过程] ( @学号 char(10), @姓名 char(6)output, @系编号 char(8)output, @就读学校 char(13) output ) as select @姓名=姓名, @系编号=系编号,@就读学校=就读学校 from [学生基本信息表] where 学号=@学号 GO 举例: 当执行数据库学生档案数据库中带参数的存储过程[创建能够返回值的存储过程],其结果将保存在参数 @姓名,@系编号和@就读学校中. begin declare @姓名 char(6) declare @系编号 char(8) declare @就读学校 char(13) exec [创建能够返回值的存储过程] '09111602',@姓名 output,@系编号 output, @就读学校 output select '姓名'= @姓名 ,’系编号'= @系编号,’就读学校'= @就读学校 end 6数据库运行和维护 软件测试 当在[学生基本信息表]中插入某一字段,将触发insert事件,例如: 在[学生基本信息表]插入该学生所一个部分新记录,并将结果显示到查询分析器上. 当更把在[学生基本信息表]中系编号为 ’002‘的记录改为’001‘时,将会触发 【减少系人数】触发器和【增加系人数】触发器, 将相应地在[学生所属系专业表]中系编号为002的系人数将减少1个,而系编号为’001‘的将相应增加系人数1个. select * from [学生基本信息表] begin update [学生基本信息表] set [系编号]=’001’ where [系编号]='002’ end 结果如下: 其他功能留给用户自己验证。 7实验总结 档案管理系统是一个非常典型的数据库管理系统,它主要进行档案管理及一些基本的数据管理.本系统包括:档案管理、档案的更新、档案的删除、档案的修改、报表输出。本系统在以上这些传统功能的基础上增加了功能强大的各种统计分析及人性化的操作功能。智能方便的操作极大地提高档案管理的效率、避免人为操作的种种弊端,为管理提供及时、准确的信息。在Window平台下运用软件工程、数据库原理等实现档案信息管理系统的开发。 档案管理系统是数据库应用的一个典型实例。因为档案管理系统数据处理量大、日常操作频繁.在手工操作方式下,存在着工作效率低,数据整理麻烦,同时也容易产生一些人为的操作错误。不仅浪费了大量的人力、物力及时间,而且使货物资源不能有效地利用,同时也不利于管理.为了解决大量的数据处理及手工操作所带来的种种弊端,方便管理及对档案的查阅情况进行各种统计分析.该系统针对档案管理的现有资源进行设计,投入使用后能大大地提高档案管理的效率,充分地利用信息资源,避免人为操作错误,节省大量的人力、物力及时间,为管理者提供及时、准确的信息. 课程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而数据库语言又是最常见,功能最强大的一种高级语言,因此做好数据库语言课程设计是十分必要的。 8心得体会 回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整半个月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍.
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服