《数据库课程设计-学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计-学生信息管理系统.docx(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库课程设计-学生信息管理系统 数据库程序设计说明书 一引言 本程序是一个学生信息数据库系统的程序,随着效率和质量提出了越来越高的要求。学生管理信息系统广泛地应用于各大中院校的学生管理工作过程中,几乎每个进行了信息化建设的学校都建设了学生管理信息系统。 对于大型和结构复杂、内容繁多的学生数据库,都要实现方便的管理。 数据管理离不开数据库系统的支持。由于数据库系统一般用户难以熟悉和正确操作,所以开发数据库连接程序提供友好的界面,方便用户提高效率和操作的准确性。 二编写目的 本说明数据库程序设计需要解决的问题以及问题的性质、程序目标、程序规模等。并且为了用户对系统的要求,使编程人员可以及时发现软
2、件的缺点和不足,进一步认识问题所在。该说明书可供设计人员和开发人员参考,也可供用户阅读,对系统的需求提出意见。 开发本软件的目的是给学生数据库提供一个操作控制系统,可以对数据库进行查询、添加、删除、修改、SQL语言高级操作。 三背景 学校部门中有着相当庞大的数据内容,而这些数据只是作为单纯数据摆放在电脑里,并没有真正使这些数据起到更大的作用。大量数据的手工操作 也会是数据操作错误增加,而且还使得相关的工作更加冗长、繁锁,为了使这些数据为使用者起到更多的作用,为管理人员提供依据与分析,建立起 了自己的数据库系统,由计算机管理代替手工操作,进行收集、管理业务数据,从而提高操作人员的工作效率。 数据
3、库技术是当今信息管理的最新技术,其核心就是数据库管理系统(简称DBMS)。DBMS是各类管理信息系统的支 撑平台,也是信息化建设中需求量最大、应用最广泛的基础性软件。 四、系统需求分析 1要求系统可以准确地记录和查询学生信息,包括学生的姓名、单位、年龄、性别等。 2要求系统可以准确地记录学生地每一次奖惩情况以及每次的缺勤情况。 3系统可以对课程情况进行管理,包括设置课程名称、修改课程的名称等。 4系统应该可以对基础数据进行维护。 1系统应该有很好的可扩展性。 学生成绩管理工作是学校学生管理工作的重要组成部分,现在相当一部分学校的学生成绩管理工作仍沿用手工方式。随着学校规模的扩大、学生人数的增加
4、,效率低下、容易出错的手工方式越来越不适应实际管理工作的需要,按照软件工程原理和 数据库技术开发学生成绩管理系统已成为学生管理部门的迫切需要。本实验实现的学生成绩管理系统主要包括以下功能: 1.完成数据的录入和修改,并提交数据库保存。其中的数据包括:学生信 息、课程设置、学生成绩以及操作员信息等; 2. 3.实现信息查询。主要包括:学生信息查询、课程信息查询和成绩查询等;具备一定的安全性管理功能。包括操作员的权限设置、密码设置、重新 登录等功能。 分析需求就是描述系统的需求,通过定义系统中的关键域类来建立模型。 学生管理信息系统的需求分析也应该是开发人员和用户或者客户一起完成的。 分析需求的第
5、一步描述学生管理信息系统的功能,即定义用例,以此确 定系统的功能需求。学生管理信息系统的用例分析主要涉及规格说明的阅 读和分析,需要和学生管理信息系统的潜在用户进行讨论。 学生管理系统的角色是管理者和系统管理员。管理者是管理学生的人员,如教务处或者学生处的员工,他也是系统的用户,而系统管理员是系统管 理者,虽然系统管理员也是一个员工,但这并不影响本系统的功能。同样,管理者也可能是一个学生,但这也不影响系统的功能。 学生管理信息系统的用例主要包括如下内容。 记录学生情况修改学生信息 查询学生情况 记录学生奖惩情况设置选修情况情况设计选修课程 五系统设计 1系统总体设计 本程序客户端负责提供表达逻
6、辑、显示用户界面信息、访问数据库服务器,采用CBuilder6作为开发工具;服务器端则用于提供数据服务,采用SQL Server2000 作为数据库管理系统。 本系统按照功能划分为以下四个模块:学生管理(包括学生信息录入和学生信息查、询课)程管理(包括课程设置和课程查询、)成绩管理(包括成绩录入和成绩查询)和系统管理(包括重新登录和操作员管理等)。系统的功能模块图如图1所示: 六数据定义 1数据表说明 1Student表: 学号(Sno),姓名(Sname),性别(Ssex),年龄(Sage),专业 (Sdept) 2Course表 课程号(Cno),课程名(Cname),先行课号(Cpno)
7、,学分(Ccredit) 学生成绩管理系统 3SC表 学号(Sno),课程号(Cno),学分(Grade) 七结构设计 1概念结构设计 说明本数据库将反映的现实世界中的实体、属性和它们之间的关系等的原始数据形式,包括各数据项、记录、系、文卷的标识符、定义、类型、度量单位和值域,建立本数据库的每一幅用户视图。 本系统主要有学生和课程两个实体集,一个学生可以选修若干门课程,一门课程也可以被多个学生选修,两个实体集之间是多对多联系,联系上有选课成绩。本系统的 E-R图如下图: 由于数据要求简单,没有什么冗余过多的数据,所以数据库没有为程序建立视图,直接在表中操作,提高效率。 2逻辑结构设计 数据库逻
8、辑结构设计 根据关系模型的转换原则,上面的ER图可转换为如下所示的关系模型: Student(Sno,Sname,Sex,Sdept) 其中各项含义分别为:学生(学号,姓名,性别,所在系) Course(Cno,Cname,Cpno,Credit) 其中各项含义分别为:课程(课程号,课程名称,先行课号,学分) SC(Sno,Cno,Grade) 其中各项含义分别为:选修(学号,课程号,成绩) 说明把上述原始数据进行分解、合并后重新组织起来的数据库全局逻辑结构,包括所确定的关键字和属性、重新确定的记录结构和文卷结构、所建立的各个文卷之间的相互关系。 ER 图 3物理结构设计4数据字典设计 6系统
9、设计 系统的功能模块图 一结合CBuilder进行数据库,设计过程可按如下步骤进行: 创建应用库及应用对象; 创建全局变量; 创建菜单; 创建数据窗口; 创建窗口并在窗口中放置所需控件。 创建应用库及应用对象 1创建登陆窗体 2创建主窗体 加入连接数据库控件, DBGrid,ADODataSet,ADODataCommand,DataSource。 设置数据库连接,设置控件属性。 设计窗体界面 3创建查询窗体 连接主窗体控件 设置查询条件 对查询条件优化 多表查询设置 4修改窗体设置 连接数据库属性 设置修改项 确认修改 5高级查询功能 高级查询功能提示 查询窗体设计 八程序流程图 1以下是程
10、序功能的主要流程: 3数据查询流程图 查询 查询Button1Click(TObject*Sender) 读取查询条件; 转化为String形式语句; 读取查询显示列; 转化为String形式语句; 判断查询语句关系,确定查询要连接的表; 语句连接优化- 生成SQL; 输入ADODataSet-CommandText=SQL; 执行成功; 输出结果; 修改 修改ButtonClick(TObject*Sender) 读取要修改的数据; 显示数据了; 直接修改; 修改确认; if(确定)修改数据库else 放弃修改; 退出 查询实现代码如下: void_fastcall TForm6:Butto
11、n1Click(TObject*Sender) String sno,sname,ssex,sage,sdept,cno,cname,cgrade,ccredit,cpno; /sno if(Edit1-Text!=)sno=and student.sno=+Edit1-Text+; else sno=; /sname if(Edit2-Text!=)sname=and student.sname=+Edit2-Text+; else sname=; /ssex if(Edit3-Text!=)ssex=and student.ssex=+Edit3-Text+; else ssex=; /s
12、age String ageSel; ageSel=ComboBox1-Text; if(ageSel!=) if(Edit4-Text!=)sage=and student.sage+ageSel+Edit4-Text; else sage=; /sdept if(Edit5-Text!=)sdept=and student.sdept=+Edit5-Text+; else sdept=; /cno if(Edit6-Text!=)cno=and o=+Edit6-Text+; else cno=; /cname, if(Edit7-Text!=)cname=and cname=+Edit1
13、-Text+; else cname=; /cgrade, String gradeSel; gradeSel=ComboBox2-Text; if(gradeSel!=) if(Edit8-Text!=)cgrade=and sc.grade+gradeSel+Edit8-Text; else cgrade=; /ccredit String creditSel; creditSel=ComboBox3-Text; if(creditSel!=) if(Edit9-Text!=)ccredit=and ccredit+creditSel+Edit9-Text; else ccredit=;
14、/,cpno; if(Edit10-Text!=)cpno=and course.cpno=+Edit10-Text+; else cpno=; /getChecked String SnoShow,snameShow,ssexShow,sageShow,sdeptShow; String cnoShow,cnameShow,cgradeShow,ccreditShow,cpnoShow,allShow; if(CheckBox1- Checked)SnoShow=student.Sno 学号,;else SnoShow=;if(CheckBox2- Checked)snameShow=stu
15、dent.sname 姓名,;else snameShow=;if(CheckBox3- Checked)ssexShow=student.ssex 性别,;else ssexShow=; if(CheckBox4- Checked)sageShow=student.sage 年龄,;else sageShow=; if(CheckBox5- Checked)sdeptShow=student.sdept 专业,;else sdeptShow=; if(CheckBox6- Checked)cnoShow= o 课程号,;else cnoShow=;if(CheckBox7- Checked)
16、cnameShow= ame课程名,;else cnameShow=;if(CheckBox8- Checked)cgradeShow=sc.grade 分数,;else cgradeShow=; if(CheckBox9- Checked)ccreditShow= redit 学分,;else ccreditShow=; if(CheckBox10- Checked)cpnoShow=course.cpno 先行课号,;else cpnoShow=; if(sno.Length()|sname.Length()|ssex.Length()|sage.Length()|sdept.Length
17、()|SnoShow.Length()| snameShow.Length()|sageShow.Length()|sdeptShow.Length()CheckBox14-Checked=true;else CheckBox14-Checked=false; if(cno.Length()|cgrade.Length()|cnoShow.Length()|cgradeShow.Length()CheckBox16- Checked=true;else CheckBox16-Checked=false; if(cname.Length()|cpno.Length()|ccredit.Lengt
18、h()|cnameShow.Length()|cpnoShow.Length()|ccr editShow.Length()CheckBox15-Checked=true;else CheckBox15-Checked=false; String cb1,cb2,cb3; if(CheckBox14-Checked=true & CheckBox16-Checked=true)cb1=and student.sno=sc.sno;else cb1=; if(CheckBox15-Checked=true & CheckBox16-Checked=true)cb2=and o= o;else c
19、b2=; if(CheckBox14-Checked & CheckBox15-Checked=true)cb3= and o= o and student.sno=sc.sno; else cb3=; allShow=SnoShow+snameShow+ssexShow+sageShow+sdeptShow+cnoShow+cnameShow+cgra deShow+ccreditShow+cpnoShow; allShow.SetLength(allShow.Length()-1); Form2-ADODataSet1-Close(); Form2-ADODataSet1-CommandText=select distinct+allShow+ FROM Student, SC , Course Where student.sno!=zzzzzzzz+cb1+cb2+cb3+sno+sname+ssex+sage+sdept+cno+cname+cgrade+ccred it+cpno; /ShowMessage(Form2-ADODataSet1-CommandText); Form2-ADODataSet1-Open(); Form2-ADODataSet1-Active=true;