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