数据库课程设计报告-学生成绩管理系统1.doc_第1页
数据库课程设计报告-学生成绩管理系统1.doc_第2页
数据库课程设计报告-学生成绩管理系统1.doc_第3页
数据库课程设计报告-学生成绩管理系统1.doc_第4页
数据库课程设计报告-学生成绩管理系统1.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库课程设计报告 1.功能需求本报告主要介绍学生成绩管理系统的数据库设计,从需求分析到数据库的运行与维护都进行详细的叙述。该系统是利用sql开发出来的。通过sql建立学生成绩管理系统,大大方便和简化了数据的查询和处理,管理员可以通过sql语言对表内数据进行添加,删除,修改,查询等操作,还可以建立多用户,对其使用权限进行分配和回收。报告分为4部分,第一部分是课题简介及设计的内容与目的,需求分析,此阶段是数据库设计的起点。第二部分是概念设计,逻辑结构设计,它是将需求分析的用户需求抽象为信息结构,并将概念模型转换为某个dbms所支持的数据模型。第三部分是数据库的实施与运行,它包括数据的载入及数据困的运行和数据库和数据表的创建(代码)。第四部分是课程设计的总结。1.1开发环境及开发语言本次课程设计是以学生信息管理系统为模拟模型,运用c+编程语言结合sql数据库所开发系统。开发平台为vc6.0和sql2008。1.2 设计目的随着学生数量的日益增多,学校对学生的管理要求也越来越高,为了使学生成绩的管理更加系统化,数字化,因此我们设计了该学生信息管理系统。1.3 设计内容运用基于e-r模型的数据库设计方法和关系规范化理论做指导完成从系统的分析到设计直至系统的最终实现,开发学生成绩管理系统,完成学生成绩管理系统的全部功能。首先做好需求分析,并完成数据流图,其次做概念分析,利用实体联系的方法将需求分析的用户需求抽象为信息结构,得到e-r图,然后就是逻辑结构设计,将e-r图转换为计算机系统所支持的逻辑模型。最后利用sql完成具体的实例。1.4.需求分析1、问题的提出:为了高效率的完成学生成绩的管理,决定开发学生成绩管理系统。2、 需完成的功能:(1)能提供管理员及普通用户(除删除和修改)录入、注销、显示当前用户、修改、删除、查询、输出,学生的档案信息,这些信息包括学生的成绩、课程、个人信息等。(2) 触发器,索引,存储过程的建立及使用。2. 概念设计(1)(e-r图) studentsnamesexbirthdaytelsnoaddressgradescorepoliticaculturecourcesnocnotestuserusernmuserpwusertyp(2)物理结构设计studentcolumnnamedatetypewidth空值情况snonchar10主关键字snamenchar 10不为空sexnchar10不为空birthdaynumeric10可为空addressnchar10可为空gradenchar10不为空po;iticnchar10不为空cuturenchar10不为空telnchar10不为空cource columnnamedatetypewidth空值情况snonchar10主关键字cnonchar10不为空scorenchar10可为空usercolumnnamedatetypewidth空值情况user_namenchar20主关键字user_pswdnchar20不为空user_typeint可为空(3)分析关系模式对于关系模式student(sno|sname|sex|age|address|grade|class|tel|politic|cuture )假定姓名也具有唯一性,那么student就有两个码,这两个码都由单个属性组成,彼此不相交。其它属性不存在对码的传递依赖与部分依赖,又因为student中除学号、姓名外没有其它的因素,所以student属于bcnf。对于关系模式cource(|sno|cno|score|)有两个码,这两个码都由单个属性组成,彼此不相交,其它属性不存在对码的传递依赖与部分依赖,又因为成绩中除学号、课程号外没有其它的决定因素,所以成绩属于bcnf。对于关系模式user(|username|usertype|userpswd|)中,它只有一个码,这里没有任何属性对课程号部分依赖或传递依赖,同时用户名是唯一的决定因素,所以课程属于bcnf。它和学生信息和成绩没有直接的联系,因此它是一张单独的表。3.sql语句3.1 创建表学生表create table student( sno nchar(10) primary key, sname nchar(10) not null sex nchar(10) not nullage numeric(10)address nchar(10)class nchar(10) not nullgrade nchar(10) not nulltel nchar(10) not nullpoliticnchar(10)not nullcuturenchar(10) not null)成绩表create table exam( sno nchar(10) primary key /主键约束 cno nchar(10) not null score nchar(10)foreign key (cno) references course /外键约束check(score=0) /完整性约束)用户表create table teacher( username nchar(10) not null userpswd nchar(10) not null usertype nchar(10) not null)3.2数据初始化将学生类别加入表student中insert into studentvalues (000,张明,m,哈尔滨,软件一班,大一,15880000,无,群众) insert into studentvalues(001,李三,m,长春,软件二班,大三 15233000.无,群众) insert into studentvalues(002,王强,m,哈尔滨,软件二班,大二 15850040.无,群众) insert into studentvalues(003,张雪,f,哈尔滨,软件一班,大一 156809802.无,群众) insert into studentvalues(004,李力,m,大连,软件一班,大三 15980000.无,群众) insert into studentvalues(005,张小,m,哈尔滨,软件三班,大一 15884444.无,群众) 将考试类别加入cource表中 insert into cource values (000,a-123,85 )insert into cource values(001,b-123,77 )insert into cource values(002,c-123,91 )insert into cource values(003,a-123,80 )insert into courcevalues(004,b-123,75 )insert into cource values(005,a-123,89 )将课程加入user表中insert into user values(阿生,921,0)insert into uservalues(光光,111,1)insert into uservalues( 甜甜,111,1)索引的使用use studentcreate unique nonclustered index index_sno on student(sno )触发器create trigger reminderon studentafter insert,updateas raiserror(你在插入或修改学生的数据,16,10)drop trigger reminderselect * from studentwhere sno=002存储过程create procedure usp_getstudent name nchar(40)as select * from student where sname=name执行存储过程execute usp_getstudent 张明4、sql与c+结合(可视化的界面管理)1、准备创建好的数据库,创建数据源在创建数据库的应用程序之前,必须有一个可供应用程序使用的数据库。2、(1)建立了数据库之后,必须配备 odbc 数据源,使其指向刚刚建立的数据库。选择“控制面板”中“管理工具”下的“数据源(odbc)”项。双击 odbc 图标,弹出“odbc 数据源管理器”对话框。在这里用户可以设置 odbc数据源的一些信息,其中的“用户 dsn”选项卡是用户定义的在本地计算机上使用的数据源名(dsn),(2) 为新的数据源选择数据库驱动程序。由于使用的是 access 数据库,所以选择 driver do microsoft access(*.mdb)选项,并单击“完成”按钮。 (3) “odbc microsoft access 安装”对话框中,为该数据源起一个简短的名称。本例为 teacherdb,可以在下一个编辑框中输入对该数据库的说明。(4) 指定数据库的位置。单击“选择”按钮,然后指定所创建的 access 数据库。 (5) 单击“确定”按钮,刚才创建的用户数据源被添加在“用户 dsn”选项卡的“用户数据源”列表框中。3. 创建 mfc appwizard 应用程序 用 mfc appwizard(exe)创建一个对话框应用程序 teachermis。为了使程序能支持数据库对象,在头文件 stdafx.h 中加入#include。 4. 用 classwizard 为数据库中的每一个表映射一个记录集类 首先为表 users 映射记录集类 cuserset。打开项目工作区的 classview 选项卡,选择项目名称,右击,弹出快捷菜单,选择 new class 命令弹出的 new class对话框,输入记录集类名称 cuserset,并为其选择基类 crecordset,单击 ok 按钮,弹出的database options 对话框,为记录集类选择 odbc 数据源 teacherdb,单击 ok 按钮,弹出select database tables 对话框,为记录集类选择数据库表 users,单击ok 按钮,即完成记录集类 cuserset 的定义。5、根据类属性之间的关系添加如下类:6、c+中实现对数据库的管理(及增加、删除、修改、查找、退出)(1)增加:void cscore:onbuttonadd()strsql.format(insert into score values(%s,%s,%s),m_sno, m_cno,m_score); doexecutesql(strsql);(2)删除:cscore:onbuttondel()strsql.format(delete from score where sno=%sand cno=%s ,m_sno,m_cno); doexecutesql(strsql);(3)修改:void cscore:onbuttonedit()strsql.format(update score set cno=%s,score=%s where sno=%sand cno=%s and score=%s , m_cno,m_score,save_sno,save_cno,save_score ); doexecutesql(strsql);(4)查找:void csore:onbuttonfind()strsql.format(select * from teachers where %s =%s,strfield, m_fieldvalue);(5)退出:void csore:oncancel()cdialog:oncancel();(6)显示当前用户:m_corr_user=login.getusernm();(7)注销:void cteachermisdlg:onlogout()m_score.close(); cdialog:oncancel(); clogindlg login; login.setuser(); login.domodal();7、运行截图(1)用户登录:(2)学生信息管理系统:3、成绩管理系统:5、设计中遇到的问题及心得在设计中遇到的几个问题:1、 关系图的连接:当数据库创建的时候没把他们的关系图连接起来,导致在投影时出问题,查询的时候也出现了错误2、 删除时错误:在删除操作的时候,由于没考虑表之间的关系,和删除次序。导致了一张表的数据元素删除了,而另外一张的任然存在。3、 对同一学生插入同一课程号:刚开始的思想是使用not in进行判断该记录是否存在,再插入我用的下面的这句语句strsql.format(insert into sc val

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论