5、查询学生学科成绩;(由学号查询)
6、查询学生奖罚记录;(由学号查询)
7、修改密码;
8、密钥进入:进入该系统需要正确的密码,如果密码输入三次错误,则自动退出该系统;
9、退出系统。
根据以上分析,该系统的整个流程图为:
该系统考虑将整个系统分解成如图3-2模块结构图:
图3-2模块结构图
并且在系统的开发过程中,我尽量注意模块的高内聚、低耦合,使得系统的整体性能提高,并且也有利于投入使用后的系统维护。
3.2详细设计
3.2.1详细设计的任务
详细设计就是要在概要设计的结果的基础上,考虑"怎样实现"这个软件系统,直到对系统中的每个模块给出足够详细的过程性描述。主要任务如下:①为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述;②确定每一模块使用的数据结构;③确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。④要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。
3.2.2详细设计的方法
本系统在开发过程中所采用的详细设计方法为程序程序图和IPO图:
程序流程图见编码部分,下面介绍各模块的IPO图:
1、学生基本信息登记模块IPO图:
2、学生学科成绩登记模块IPO图:
3、学生奖罚记录登记模块IPO图:
4、学生基本信息查询IPO图:
5、学生学科成绩查询IPO图:
6、学生奖罚记录查询IPO图:
7、密码修改模块的IPO图:
第四章数据库设计
4.1数据库简介
数据库的概念
数据库是一种存储数据并对数据进行操作的工具。数据库的作用在于组织和表达信息,简而言之,数据库就是信息的集合。计算机的数据库可以分为两类:非关系数据库(flat-file)和关系数据库(relational)。关系数据库中包含了多个数据表的信息,数据库含有各个不同部分的术语,象记录、域等。
新建一个数据库
创建任何一个数据库的第一步是仔细的规划数据库,设计必须是灵活的、有逻辑的。创建一个数据库结构的过程被认为是数据模型设计。
1.标识需要的数据;
2.收集被标识的字段到表中;
3.标识主关键字字段;
4.绘制一个简单的数据图表;
5.规范数据;
6.标识指定字段的信息;
7.创建物理表。
修改已建的数据库
数据库的修改分为:添加、编辑和删除记录。这三种操作均可由VisualBasic创建的程序来完成,下面的章节将详细描述实现的具体方法。
实现数据库之间的联系
数据库之间的关系指明两个库之间共享一个共同的关键字值。一个连接是指一种虚拟的表,这种表是在当用户要求从相互关联的各个不同的表中获取信息时建立的,关键字段用于在相互连接的不同表中查找匹配的记录。一个更高级的连接形式称为自连接。这种连接是指一个表被连接到它自己的一个字段,或在不同的纪录中由重复数据的组合字段。数据库中有三种不同类型的关键字:主关键字、组合关键字和外关键字。在表中使用的关键字类型用于描述库表示什么以及在数据库中如何与其它的库建立关系。
4.2数据库需求分析
由调查学校教务人员,分析得到如下的数据库结构。
(一)一个数据库及若干自由表:
(二)四个数据表:
1、学生基本情况表的结构:
作用:用于存放学生的基本信息。
2、课程情况表的结构
作用:用于存放学生的学科成绩。
3、奖罚目录表
作用:用于记录学生的奖罚成绩。
4、奖罚明细表
作用:用于记录学生的奖罚明细信息。
4.3测试用例
1、学生基本信息测试用例:
2、学生学科成绩测试用例:
3、学生奖罚成绩测试用例:
4、学生奖罚记录测试用例:
第五章详细设计
5.1登录模块
1、程序流程图:
2、界面如下图:
如果密码正确,则出现主界面:
3、实现过程:
表单的load事件如下:
主要对运行后的窗口进行设置。
的代码如下:
主要是对用户密码进行判断,如果正确,则显示被隐藏的按钮,如果三次错误,则提示用户退出。
的代码为:
5.2登记学生基本信息模块
1、程序流程图:
2、界面如下图:
界面包括的控件有标签、文本框、组合框、命令按钮。功能是提示用户输入学生的详细信息和备份已经输入的学生信息。
3、实现过程:
第一步将所需的控件放到表单的相应位置;方法:首先在"表单控件"工具栏先选中所需的控件图件,然后在表单的恰当位置上单击鼠标并拖动鼠标,即可把由所选取的控件生成的对象添加到表单上,此时,在属性窗口里显示了该控件对象的所有属性、事件。如下图为表单的属性设置窗口:
第二步双击相应的控件,在控件的相应过程中编写程序,如"民族组合框"的Gotfocus或Init过程如下:
其中ifthis.listcount>=1
fori=1tothis.listcount
this.removelistitem(i)
endfor
endif程序段的作用是判断组合框中是否有列表项;fori=1tothis.listcount
this.removelistitem(i)
endfor的作用是将现有的列表框全部移除;涉及组合框的两个重要属性:listcount统计组合框的成员个数;removelistitem(i)移除组合框的第i个成员;
dowhile.not.eof()
this.additem(民族)
skip
enddo程序段的作用是将民族库(mzk.dbf)中的所有记录添加到组合框中,使用的一个重要属性是additem(字符串)。
按钮的作用是进行字典维护,如果在录入的过程中遇到一个少数民族在组合框中没有,我们便可以点按此按钮进行民族库的维护,如图
可以增加民族也可修改民族等。
此按钮的click过程如下:
如"添加入库并继续录入"按钮的click过程如下
iflen(thisform.text1.value)<>0.and.len(thisform.text2.value)<>0
use学生基本情况表.dbf
locatefor学号=thisform.text1.value
ifeof()
appendblank
repl学号withthisform.text1.value
repl姓名withthisform.text2.value
repl性别withalltrim(thisform.combo2.value)
repl民族withalltrim(thisform.combo1.value)
repl专业withalltrim(thisform.combo3.value)
repl系别withalltrim(thisform.combo4.value)
use
thisform.text1.value=""
thisform.text2.value=""
thisform.combo1.value=""
thisform.combo2.value=""
thisform.combo3.value=""
thisform.combo4.value=""
messagebox("已入库,点<确定>继续录入学生基本情况!","继续录入")
thisform.text1.setfocus
else
messagebox("该学号已经存在,请检查学号!","提示")
endif
else
messagebox("学号/姓名不能为空!","确认窗口")
endif
首先判断学号栏与姓名栏是否为空,如果不为空,则到库中寻找有没有该学号的学生,如果没有,则新增记录,如有则提示用户该学生已存在,如果学号/姓名栏为空,则提示用户学号/姓名不能为空。
其中判断学号栏与姓名栏是否为空,用的是函数len(),寻找某学号的学生,用的是locatefor语句。提示信息用的是函数messagebox()。
如"添加入库后返回"按钮的click过程如下
如"备份"按钮的click过程如下:
copyto"备份\"+"学生基本情况表"+dtoc(date(),1)+".dbf"作用是拷贝一份放在过程备份目录下并取名为:学生基本情况表+yyyymmdd.dbf,thisform.
上一篇:
VFP学生管理系统(论文和程序)
下一篇:
不规则零件优化排样的神经网络混合优化算法