admin 管理员组

文章数量: 887031


2023年12月18日发(作者:电脑结束当前任务快捷键)

数据库程序设计说明书

一.

引言

本程序是一个学生信息数据库系统的程序,随着效率和质量提出了越来越高的要求。

学生管理信息系统广泛地应用于各大中院校的学生管理工作过程中,几乎每个进行了信息化建设的学校都建设了学生管理信息系统。

对于大型和结构复杂、内容繁多的学生数据库,都要实现方便的管理。数据管理离不开数据库系统的支持。由于数据库系统一般用户难以熟悉和正确操作,所以开发数据库连接程序提供友好的界面,方便用户提高效率和操作的准确性。

二.

编写目的

本说明数据库程序设计需要解决的问题以及问题的性质、程序目标、程序规模等。并且为了用户对系统的要求,使编程人员可以及时发现软件的缺点和不足,进一步认识问题所在。该说明书可供设计人员和开发人员参考,也可供用户阅读,对系统的需求提出意见。

开发本软件的目的是给学生数据库提供一个操作控制系统,可以对数据库进行查询、添加、删除、修改、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.数据字典设计

姓名 性别 年龄 所在系

学生

N

选修

成绩

M

课程

1

先行

1

课程名 学分

1学生信息表Student的表结构

主码 列 名 数据类型

Pk

Sno

Sname

Sex

Sage

Sdept

Char

Char

Char

Int

Char

宽度 小数位 空否

10

20

2

4

20

N

Y

Y

Y

Y

备 注

学号

姓名

性别

年龄

所在系

2课程信息表Course的表结构

主码 列 名 数据类型

Pk

Cno

Cname

Cpno

Credit

Char

Char

Char

Smallint

宽度

5

20

5

2

空否

N

Y

Y

Y

备 注

课程代码

课程名称

先行课号

学分

3 选课成绩表SC的表结构

主码 列 名 数据类型

Pk

Sno

Cno

Grade

Char

Char

Decimal

宽度 小数位 空否

10

5

4

1

N

N

Y

备 注

学号

课程代码

成绩

系统的功能模块图

6.系统设计

一.结合C++Builder进行数据库,设计过程可按如下步骤进行:

创建应用库及应用对象;

创建全局变量;

创建菜单;

创建数据窗口;

创建窗口并在窗口中放置所需控件。

 创建应用库及应用对象

1. 创建登陆窗体

2. 创建主窗体

 加入连接数据库控件,DBGrid,ADODataSet,ADODataCommand,DataSource。

 设置数据库连接,设置控件属性。

 设计窗体界面

3.创建查询窗体

 连接主窗体控件

 设置查询条件

 对查询条件优化

 多表查询设置

4.修改窗体设置

 连接数据库属性

 设置修改项

 确认修改

5.高级查询功能

 高级查询功能提示

 查询窗体设计

八.程序流程图

1.以下是程序功能的主要流程:

开始

选择登陆类型,输入密码

No

密码正确

Yes

登陆系统,权限设置

选择操作

查询 添加 修改

确认

No

Yes

连接数据库,数据库操作

结束

3. 数据查询流程图

查询开始

输入查询条件

No

判断查询

Yes

查询语句生成

连接数据库,执行语句

结束

查询

查询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;

//sno

if(Edit1->Text!="")sno=" and ='"+Edit1->Text+"'";

else sno="";

//sname

if(Edit2->Text!="")sname=" and ='"+Edit2->Text+"'";

else sname="";

//ssex

if(Edit3->Text!="")ssex=" and ='"+Edit3->Text+"'";

else ssex="";

//sage

String ageSel;

ageSel=ComboBox1->Text;

if(ageSel!=""){

if(Edit4->Text!="")sage=" and "+ageSel+Edit4->Text;

}else sage="";

//sdept

if(Edit5->Text!="")sdept=" and ='"+Edit5->Text+"'";

else sdept="";

//cno

if(Edit6->Text!="")cno=" and ='"+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 "+gradeSel+Edit8->Text;

}else cgrade="";

//ccredit

String creditSel;

creditSel=ComboBox3->Text;

if(creditSel!="")

{

if(Edit9->Text!="")ccredit=" and ccredit"+creditSel+Edit9->Text;

}else ccredit="";

//,cpno;

if(Edit10->Text!="")cpno=" and ='"+Edit10->Text+"'";

else cpno="";

//getChecked

String SnoShow,snameShow,ssexShow,sageShow,sdeptShow;

String cnoShow,cnameShow,cgradeShow,ccreditShow,cpnoShow,allShow;

if(CheckBox1->Checked)SnoShow=" 学号,";else SnoShow="";

if(CheckBox2->Checked)snameShow=" 姓名,";else snameShow="";

if(CheckBox3->Checked)ssexShow=" 性别,";else ssexShow="";

if(CheckBox4->Checked)sageShow=" 年龄,";else sageShow="";

if(CheckBox5->Checked)sdeptShow=" 专业,";else sdeptShow="";

if(CheckBox6->Checked)cnoShow=" 课程号,";else cnoShow="";

if(CheckBox7->Checked)cnameShow=" 课程名,";else cnameShow="";

if(CheckBox8->Checked)cgradeShow=" 分数,";else cgradeShow="";

if(CheckBox9->Checked)ccreditShow="t 学分,";else ccreditShow="";

if(CheckBox10->Checked)cpnoShow=" 先行课号,";else cpnoShow="";

if(()||()||()||()||()||()||()||()||())CheckBox14->Checked=true;else

CheckBox14->Checked=false;

if(()||()||()||())CheckBox16->Checked=true; else CheckBox16->Checked=false;

if(()||()||()||()||()||())CheckBox15->Checked=true; else CheckBox15->Checked=false;

String cb1,cb2,cb3 ;

if(CheckBox14->Checked==true && CheckBox16->Checked==true){cb1=" and

= ";}else cb1="";

if(CheckBox15->Checked==true && CheckBox16->Checked==true){cb2=" and

= ";}else cb2="";

if(CheckBox14->Checked && CheckBox15->Checked==true){cb3=" and = and

= ";}

else cb3="";

allShow=SnoShow+snameShow+ssexShow+sageShow+sdeptShow+cnoShow+cnameShow+cgradeShow+ccreditShow+cpnoShow;

gth(()-1);

Form2->ADODataSet1->Close();

Form2->ADODataSet1->CommandText="select distinct "+allShow+" FROM Student, SC ,

Course Where

!='zzzzzzzz'"+cb1+cb2+cb3+sno+sname+ssex+sage+sdept+cno+cname+cgrade+ccredit+cpno;

//ShowMessage(Form2->ADODataSet1->CommandText);

Form2->ADODataSet1->Open();

Form2->ADODataSet1->Active=true;

}

十.安全保密设计

用户登陆软件系统需要分级权限,只有管理员可以对数据库文件进行修改,删除,插入;普通用户只能对数据库信息进行查询;用户通过输入密码进入系统。提供操作系统级的保护。用户还可以通过设计数据库进行数据库操作权限的控制。本程序只是简单的划分了两个等级用户:管理员,普通用户。

十一.使用过程:

1.选择用户,输入密码:

2.进行插入、修改、删除操作

3.查询界面如下:

十二.心得体会:

这次课程设计运用了C++Builder和SQL server2000编译工具,使用了DBGrid,ADODateSet,ADODateCommand,DataSourcede等控件,熟悉了两个系统的使用。

使用过程中,碰到了许多的问题。如:SQL语句的提交到数据库,然后执行SQL语句经常会有一点小错误,直接读取程序差错困难大。数据库连接出现错误等问题。想到放弃但最终还是坚持下来,完成了整个设计过程。

设计尽量以方便用户为最先考虑,所以操作界面友好,简单易用,而且有体贴周到的操作提示。即使你是第一次打开它,只要点击启动程序中的”按钮(如图),根据提示很快就可以建立你的管理系统。可以方便的进行查询,修改,删除等操作。


本文标签: 学生 数据库 查询