ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:314.48KB ,
资源ID:10825137      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10825137.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据库课程设计基于VC的学生成绩管理系统.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据库课程设计基于VC的学生成绩管理系统.docx

1、数据库课程设计基于VC的学生成绩管理系统 学生成绩管理系统 -数据库原理课程设计姓 名: _何祖祥_班 级: _计算0611_学 号: _2006810028_指导老师: _林颖贤_成 绩: _ 评 语 计算机工程学院 2008年1月16日 基于VC的学生成绩管理系统摘要 学生成绩管理工作是学校管理工作的重要组成部分,随着学校规模的扩大、学生人数的增加,利用计算机技术和数据库技术设计开发学生成绩管理系统、实现学生成绩理工作的自动化成为学生管理部门的迫切需要。本系统提供了学生的基本信息的查询、学生成绩的管理程教师的基本信息的管理等,主要包据了成绩的查询、录入、修改、删除和数据库的备份等功能。好的

2、学生成绩管理系统为管理学生成绩提供了方便,有效提高了对学生的成绩的管理。本文介绍此次课程设计的选题背景和意义,相关的研究和设计的过程,以及设计思路和实现细节的考虑,为便于说明,文中绘制了程序结框图、数据流程图和部分界面图。最后给出了我在本次课程设过中的体会。关键词 VC+ SQL语言 ODBC 数据库 存储过程 触发器 视图第一章引言1.1课题研究背景与意义 学生成绩管理工作是学校管理工作的重要组成部分,利用计算机技术和数据库技术设计开发学生学籍管理系统、实现学生学籍管理工作的自动化成为学生管理部门的迫切需要。学生的成绩管理系统能大幅度地提高对成绩管理的效率,方便教师及教务处对学生成绩的管理.

3、本系统主要完成对学生和教师的基本信息的录入、查询和删除;对学生的成绩的管理(包括成绩的查询、录入、修改、删除);以及数据库的备份等操作。由于刚开始数据库设计的不是很好以及对VC运用的不熟练,所以有些功能想加上去,迫于水平和时间的有限,只能粗略地实现这些功能。1.2本课题研究内容与目标本课题研究对学生成绩管理系统要实现哪些功能才能为广大师提供方便,应用对数据据原理的理论学习,通过上机实践的方式将理论知识与实践更好的给合起来,巩固所学的知识。实践和巩固在课堂教学中学习的关于数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个学生成绩管理系统,必须得经过系统调研、需求分

4、析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。1. 开发环境硬件:PC,CPU:AMD Core Processor 4000+,内存:1.00GB,硬盘:160GB;操作系统:Microsoft WindowsXP;软件:Visual C+ 6.0 Server 20001.4体系结构设计第二章 需求分析2.1 信息要求(1)学生成绩管理系统包含学生和教师的基本信息的处理,学生成绩的管理,数据库的管理,登陆用户的管理。(2)学生信息包括学号、姓名、性别、年龄、电话、系名、班级;通过学号可查找相应学生的各科成绩。(3)课程表包括课程号、课程名称、学

5、时、学分、任课老师号。(4)系包括系名、系主任、系人数。(5)班级包括班级名、班主任、班级人数、系名。(6)教师表包括教师号、教师名、学历、联系方式。0层数据流图:1层数据流图:2.2 处理要求能对学生和教师的信息进行查询、录入、修改、删除;能够查询学生的各科成绩、平均分,并能对其进行修改、删除等操作。2.3 安全性与完整性要求安全性:(1) 管理员能够方便的对信息进行添加、修改、删除、查询、汇总、统计等操作。(2)教师可以在自己的权限内,对学生的成绩进行录入、修改、删除操作。(3) 学生可以在自己的权限内对信息进行访问,查询相关信息。完整性:(1) 能够防止合法用户使用数据库向数据库中添加不

6、合语义的数据。(2) 通过各个表之间的联系来实现数据完整性约束。第三章 概念结构设计3.1 分图登陆表E-R图 主键:用户名,用户类型学生信息表E-R图 主键:学号 外键:系名,班级系表E-R图 主键:系名成绩表E-R图 主键:学号,课程号 外键:学号,课程号班级表E-R图 主键:班级 外键:系名课程表E-R图 主键:课程号 外键:任课老师教师表E-R图 主键:教师号3.2 总图 合并E-R图第四章逻辑结构设计4.1 关系模型将总体概念结构E-R图转化成关系模型登陆(用户类型,用户名,密码)学生信息(学号,姓名,性别,年龄,电话,系名,班级)系(系名,系主任,系人数)成绩(学号,课程号,学年学

7、期,成绩)班级(班级,班主任,班人数,系名)课程表(课程号,课程名称,学时,学分,任课老师)教师(教师号,教师名,学历,联系方式)4.2 数据模型优化将转化的关系模型进行优化,最终达到第三范式(1) 确定数据依赖登陆(用户类型,用户名,密码)(用户类型,用户名)-密码学生信息(学号,姓名,性别,年龄,电话,系名,班级)学号-姓名,学号-性别,学号-年龄,学号-电话,学号-系名,学号-班级,(学号,姓名)-性别,班级-系名,系(系名,系主任,系人数)系名-系主任,系名-系人数成绩(学号,课程号,学年学期,成绩)(学号,课程号)-学年学期,(学号,课程号)-成绩,班级(班级,班主任,班人数,系名)

8、班级-班主任,班级-班人数,班级-系名,(班级,班主任)-班人数课程表(课程号,课程名称,学时,学分,任课老师)课程号-课程名称,课程号-学时,课程号-学分,课程号-任课老师教师(教师号,教师名,学历,联系方式)教师号-教师名,教师号-学历,教师号-联系方式(2) 这些关系都符合要求,属于第三范式,所以不用再对这些模式进行分解了.4.3数据字典 表1:学生信息表字段名称数据类型长度约束课程号varchar20不为空课程名称varchar20不为空学时float8不为空学分float8不为空任课老师varchar10不为空 表2系表字段名称数据类型长度约束系名varchar20不为空系主任var

9、char10不为空系人数int 4 表3登陆表字段名称数据类型长度约束用户类型varchar10不为空用户名varchar10不为空密码varchar10不为空 表4班级表字段名称数据类型长度约束班级varchar20不为空班主任varchar10班人数int 4系名varchar20不为空 表5教师字段名称数据类型长度约束教师号varchar10不为空教师名char10不为空学历varchar20联系方式varchar20 表6成绩字段名称数据类型长度约束学号char10不为空课程号varchar20不为空学年学期varchar20不为空成绩float80150 表7学生信息字段名称数据类型

10、长度约束学号char10不为空姓名varchar10不为空性别char2不为空年龄int 4不为空电话varchar20系名varchar20不为空班级varchar20不为空4.4视图设计(1)打印成绩60分的学生create view V_gradeasselect A.学号,A.姓名,A.性别,B.课程号,C.课程名称,B.成绩from 学生信息 A,成绩 B,课程表 Cwhere A.学号=B.学号 and B.课程号=C.课程号 and 成绩60执行:select * from V_grade(2) 查看计算机工程学院的考试情况create view V_computerassele

11、ct B.学年学期,A.学号,A.姓名,A.班级,C.课程名称,B.成绩from 学生信息 A,成绩 B,课程表 Cwhere A.学号=B.学号 and B.课程号=C.课程号 and A.系名=计算机工程学院执行: select * from V_computer第五章 数据库的实施和维护5.1约束关系:(1)为成绩表添加约束 成绩只能在0150之内alter table 成绩add constraint CK_成绩 check (成绩 between 0 and 150)(2)为成绩表创建索引create index IX_成绩 on 成绩(学年学期 ASC)5.2 储存过程设计(1)根

12、据输入的参数删除学生信息create proc DeleteNum_procnumber char(10)as delete 学生信息 from 学生信息where 学号=number(2) 根据参数添加教师信息create proc AddTeacher_procteanumber varchar(10),teaname char(10),teasc varchar(20),teaphone varchar(20)asinsert into 教师values(teanumber,teaname,teasc,teaphone)(3) 根据传入的参数删除相应的教师信息create proc De

13、leteTea_procteanumber varchar(10)asdelete 教师from 教师where 教师号=teanumber(4)添加学生的信息create proc AddStu_procstunum char(10),stuname varchar(10),stusex char(2),stuyear int,stuphone varchar(20),stuxi varchar(20),stuclass varchar(20)asinsert into 学生信息values(stunum,stuname,stusex,stuyear,stuphone,stuxi,stucl

14、ass)5.3 触发器设计(1) 为学生信息表创建触发器,当删除学生信息时,删除相应的成绩表中的内容。create trigger tri_学生信息on 学生信息 for delete asdelete 成绩 from 成绩 A,deleted Bwhere A.学号=B.学号(2)当教师退休后,删除其资料,并将其从课程表中删除,所以创建一个触发器create trigger tri_教师on 教师 for delete asdelete 课程表 from 课程表 as A,deleted as Bwhere B.教师号=A.任课老师(3) 添加学生信息时,就为其添加登入信息create tr

15、igger tri_login on 学生信息 for insertasdeclare name varchar(2)declare password varchar(10)select name=姓名 from inserted select password from insertedinsert into 登陆values(学生,name,password)(4)删除学生信息时,也删除登陆表中的信息create trigger tri_destuon 学生信息 for deleteasdeclare name varchar(2)declare password varchar(10)s

16、elect name=姓名 from deletedselect password=学号 from deleteddelete 登陆 from 登陆where 用户名=name and 密码=password5.4模块设计(1)模块一:基本信息该模块主要完成对学生及教师的查询、添加、以及删除等功能,在添加学生信息时,自动将其添加到登陆列表中,为其添加登陆的权限.先在SQL分析器中创建一个触发器,在向学生信息表中添加信息时,就会触发.建四个对话框,两个对话框用来显示学生信息和教师信息,另外两个对话框用来实现对学生和教师信息的管理.在显示基本信息对话框中,为其添加CLIST CONTRL控件,弄成

17、报表的形式,在程序中调用建立的几个记录集.利用滚动记录的几个函数,实现向报表控件中添加数据,这样就可以把学生和老师的信息给显示出来.而在对学生和教师信息管理的对话框中,设立几个变量与对话框中的EDIT编辑框相关联.调用UpateData(),可以把输入的值传给变量,这样就可以实现所想要的功能.(2)成绩查询模块. 该模块主要用于查询学生的成绩,实现学生成绩的查询.按学号查询该学生的全部考试信息.按班级查询,可以获得该班级学生的考试信息,不分学期.按系查询,可以获得某系的全部考试信息.另外两个对话框实现查询个人平均分和班级成绩情况的查询.前两个对话框就不再叙述了,原理与前面的一样,在求平均分时,

18、根据输入的学年学期和学号,可以查询该学生在这个学年的考试平均分,考试门数程不及格的门数.在实现求平均分过程中,本想用存储过程进行实现的,但由于在MFC中不知道如何调用有返回值的存储过程,所以用一个个比较过去,记录总和和考试课程数.这样就可以求出相应的平均分.不及格数也呼之欲出.求班级成绩也同理可得。(3) 成绩管理模块 该模块实现对成绩的录入、修改、删除功能。三个模块的功能是类似的,所以只要实现一个,其他的两个就相当容易了,在这里,我是调用SQL语句进行添加、修改和删除的。首先把几个编辑框与几个变量进行关联,其实不用关联也是可以的,可以利用GetDlgItem(ID号)-GetWindowTe

19、xt(字符串变量),这样也可以把值传送给变量。建立一个数据类对象CDatabase m_db,用这个对象打开相对应的数据库,用str.Format(“SQL语名”),对字符串进行格式化成SQL语句,这样就可以用m_db.ExecuteSQL(str),执行SQL语句,这样相写一个函数进行查询,省了很多的代码,比较简洁。也可以调用存储过程进行实现,因为获取返回值的存储过程不会,所以这里有调用的存储过程是没有返回值的。(4) 系统管理模块和数据库管理模块这两个模块,一个用于修改用户的密码,一个用于数据库的备份与删除。在修改密码这个对话框中,把用户登陆名给显示出来,旧密码保存在全局变量中,用来检验用

20、户输入的旧密码是否正确,如果正确的话,调用SQL语句的Update对数据库中的相应元组进行修改。数据库备份这个模块,用了一个CCOMBOX控件,用来让用户选择进行哪种数据操作,有数据库完全备份,差异备份和移除设备。这三个都是调用数据库的相应命令进行操作。如完作备份,刚调用如下语句:sql.Format(backup database student to disk=%s,m_getpathname);此处是利用CFileDlg进行相应的操作。不过这段内容有点缺陷,就是在退出程序后,原来保存的那个路径名会清空,所以还得再选择路径进行备份。结论 在本次课程设计过程中,学到了很多知识,由于课程设计起

21、草的比较晚,所以功能比较差些,功能也未能进行更深入的思考,自己也对VC涉足不深,所以在运用方面有所欠缺,数据库方面,整体考虑也不周到。在课设的前一周有对课设考虑了一下,本来有考虑了好几个模块,像成绩录入模块、班级统计模块、年级统计模块。在成绩录入模块中再分别进行录入、修改、增加、删除、查询、打印等功能。班级统计模块又分别有学生总成绩、平均成绩、班级排名、统计班级某分数段内的学生成绩人数、各学生该科成绩、班级排名等功能(只相对于某个学期)。还有年级统计模块,分为各年级各专业学生总成绩还有排名、各学生各科成绩年级排名,各班各分数段人数等功能。不过在考完试之后再开始真正做课程设计,时间有些伧促,所以

22、只是实现其中的一部分功能。在用VC与SERVER 2000进行学生成绩管理系统的设计时,开始对用ODBC连接数据库时,经过了一天的时间,本打算用ADO进行连接,不过对我来说有点眼高手低,对ADO与ODBC都是一点都不懂,最后还是决定用ODBC进行连接,相对比较容易上手。通过本次课程设计,对在VC+中如何编写基本的ODBC数据库等有了初步的认识,还有也提高了Windows编程技术,进一步提高了Visual C+的操作能力,虽然在之前看过孙鑫的一些视频,由于很少进行操作,忘了差不多了,只记得些基本的操作。就比如在求平均分时,就花了我一个下午的时间进行实现这个功能,主要是对属性表单的创建不知道,所以

23、要查找资料,翻出孙鑫的视频,进行摸索,在程序中把属性表单的类建成基于对话框的类,在改过来的过程中经历了不少挫折,最后通过对比基于对话框的类和基于属性页的类,把程序给改了过来,总算是完成了这项功能,进一步回顾了这部分的知识.而对于SQL语句如何在MFC中实现,则完全不懂,所以刚开始建的那些查找之类的功能,都是用CRecordset提供的几个成员函数进行滚动查找,操作有些繁琐,代码有些冗余.在快把课程设计给初步做完时,才弄懂如何把SQL语句在MFC中运行,虽然知道的有些晚,但还是学会了如何运用,所以把之前的有些代码,弄成运用存储过程或查询、更新的那几个SQL语句进行执行.进行测试后,可以运行.在弄

24、登陆框时,也出现了一些麻烦,比如点右上角的那个X,程序会进入主页面,通过这条路径不用输入密码,这是一大漏洞,本来以为点X时,会跟点退出是响应同一个函数的,百思不得其解,最终通过一个网友的解答,说是用DOModal()时应该加一句判断,这样就可以解决那个问题了.现在讲讲数据库设计方向的一些感言,经过几天的不眠不休的备斗,不过数据库还是设计的不好.像数据库的对象命名,我就没按标准来对对象进行命名,用了汉字,这样在程序中建立数据集时,就出现了一大堆m_column的字样,这些表示属性,给写程序带来了不便,不过相信以后我不会再犯这个错误了.建表时,那些主外键也未考虑周到,导致在添加数据过程中老是出现些问题,像触发器的建立,由于主外键没设计好,导致内部错误,这样花费了我很多时间查找错误原,都是由于前期工作没做好,正所谓”磨刀不误砍柴工”,这下我完全体会到了这句话的深义.在做好数据库设计之前,首先得对数据库中各种概念有所理解,然后在实施过程中,对数据库管理软件创建的各个部分有个整体的认识.通过本次课程设计,学到了很多知识,不仅是数据库方面的,还有对软件设计过程中应该注意哪些问题也有了初步的认识,相信在以后的设计过程中,我会做得更好.参考文献

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1