【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

这篇具有很好参考价值的文章主要介绍了【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一 、系统设计背景       

二、系统可行性分析

2.1 经济可行性

2.2 技术可行性

2.3 操作可行性

2.4 可行性分析总结

三、软件选择与编程环境

3.1 软件选择

3.2 编程环境

四、系统总体结构设计

五、数据库设计及表链接

5.1 表设计

5.2 表连接

六、信息浏览的实现

6.1 表单设计

6.2 报表设计

七、信息查询的实现

7.1 往届学生信息精确查询

7.2 往届学生信息模糊查询

八、考前分析的实现

8.1 男女生比例查询

8.2 录取学校分布查询

九、考研预测的实现

9.1 考研预测分析系统

9.2 班级上岸率趋势预测

十、系统管理

10.1 数据环境

10.2 登陆系统

10.3 用户管理

10.4  切换账号

10.5  修改密码

10.6  退出系统

十一、主函数与主菜单设计

11.1  主函数设计

11.2  主菜单设计

十二、总结与评价改进

十三、参考文献


这个项目在我的B站上有专门的视频演示:

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】_哔哩哔哩_bilibili

一 、系统设计背景       

        随着当前研究生扩招和报考的人数不断增多,考研信息量也成倍增长。考生数量的增长给学校及其中的各个学院的教学管理带来了很大的压力,各学院的考研成功率的高低直接影响到学生培养的质量。在这个信息时代,信息的获取已成为了决定成败最大的因素之一,考研作为选拔性的考试,考研大数据分析已经成为了一个理所应当的热门话题,这就需要一个专门的系统来实现考研相关数据预测分析与学生信息管理功能。

二、系统可行性分析

2.1 经济可行性

        电信学院考研信息管理系统应用后可以显著提供查询电信学院考研信息的效率,并且实现考研相关数据预测分析。新系统的开发费用和今后的运行、维护费用,效益进行比较,十分有利。在使用的操作人员方面,熟悉简单的电脑知识,不需要花大量钱雇佣高学历人才,即在经济上可行;

2.2 技术可行性

        本系统可借助VFP进行开发,虽然该系统应用阶段需要一定的硬件支持,但在科技飞速发展的今天,硬件更新速度越来越快,容量越来越大,可靠性越来越高,价格越来越低。其硬件平台完全能满足该系统需要。而且此系统占用空间不大,不会造成硬件高负荷运转,不会造成设备的毁坏等情况。即在技术上可行;

2.3 操作可行性

        本系统采用基于 Windows 的图形用户界面,而该系统是大家熟悉的操作系统,对于那些有一般的计算机知识的人员就可以轻松上手。而整个考研信息管理系统采用了友好的交互界面,简介明了;

2.4 可行性分析总结

        本系统综上所述,由于该系统的对考研信息查询有一定的积极作用,并且在经济,技术, 操作方面都是可行的,所以进行此系统的开发。

三、软件选择与编程环境

3.1 软件选择

        Microsoft 公司的 Visual Foxpro6.0 是Windows 应用程序开发工具,是目前最为广泛的、易学易用的面向对象的开发工具。Visual Foxpro6.0 提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。另外,VF 还具有:用户通过各种动作控制应用程序的流程, 简单的 Visual Foxpro 语言与丰富而功能强大的内置函数,面向对象的编程,跨平台开发, 与数据库的连接性等一系列的优点,因此,实现本系统,VF 是一个相对较好的选择。

3.2 编程环境

        Microsoft Visual FoxPro 6.0 是创建高性能、优秀数据库组件和解决方案的优秀工具。Visual FoxPro 6.0 提供给开发人员必要的工具管理数据--组织信息表格、运行查询、创建关系型数据库管理系统(DBMS)、为终端用户设计数据管理应用程序。

        Visual FoxPro 6.0 是 FoxPro 的进一步发展,从面向过程的桌面数据库系统到面向对象的开发环境,这个开发环境带有开发人员创建优秀的客户机/服务器数据库和 Internet 数据库的组件及应用程序的工具。

        Visual FoxPro 具有完全的面向对象的类设计能力,包括继承、子类、 封装、多态。可以创建可视的、不可视的可重用类库,以便动态地减少开发时间。

四、系统总体结构设计

        系统综合运用数据库设计、表设计、表单设计、报表设计、程序设计、菜单设计和项目管理器连编等,实现改系统的所有功能,文件主要结构如下图所示:

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

同时,该系统主要包含五个功能板块,信息浏览,信息查询,考情分析,考研预测,系统管理,其中:

  • 信息浏览用于在主界面上一览近三年电信学院往三届学生基本个人信息,分为所有学生信息表和每年的考研上岸名单表两部分,并且都能实现报表打印。
  • 信息查询可以实现通过学号对某个学生信息的精确查询。也可以实现对考研成功学生的模糊查询。例如查询姓王的所有学生、查询录取学校名字开头为中国的学生。
  • 考情分析用于查询相关数据,如:男女生比例(含上岸比例)、录取学校分布、重点院校率(985/211/出国/中科院)、班级上岸比例。
  • 考研预测将前面所有功能得出来数据,以图表形式呈现出来,并加以线性趋势分析,可以得到可信度较高的预测结果。
  • 由于本系统分析的是近三年往届生,而考研情况是既定的事实,所以基本用不上增删学生信息的功能。系统管理主要用于系统管理登录用户信息、修改密码、切换账号。

系统功能结构图:

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

 

五、数据库设计及表链接

数据库设计器如图

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

5.1 表设计

bjbl表用来存储个班级上岸比例的数据,其表结构为:

字段名

类型

宽度

班级

字符型

18

users表用来存放使用者的用户名,密码和用户类型,其表结构为:

字段名

类型

宽度

name

字符型

10

password

字符型

10

type

字符型

10

students14,students15,students16分别用来存放14,15,16级全体学生个人信息,其表结构为:

字段名

类型

宽度

学号

数值型

12

姓名

字符型

6

班级

字符型

18

性别

字符型

2

success14,success15,success16,lqxx分别用来存放14,15,16级和全体上岸学生的考研上岸学生信息,其表结构为:

字段名

类型

宽度

班级

字符型

18

姓名

字符型

6

性别

字符型

2

学号

数值型

12

录取学校

字符型

20

是否重点院校

字符型

3

备注

字符型

6

fenbu14,fenbu15,fenbu16,fenbu表分别用来记录14,15,16级和全体上岸学生的录取院校分布情况,其表结构为:

字段名

类型

宽度

录取学习

字符型

28

录取人数

数值型

10

是否重点院校

字符型

3

备注

字符型

6

5.2 表连接

表students14、students1、students1和success14、success15、success16和lqxx通过由学号建立的主索引进行连接。

表fenbu14、fenbu15、fenbu16和fenbu通过录取学校建立的主索引连接。这四个表由createlqxxfb.prg语句进行创建,主要为Select—SQL,代码如下:

create table database\lqxx(学号 N(12,0),班级 C(18),姓名 C(6),性别 C(2),录取学校 C(28),是否重点院校 C(3),备注 C(6))
use database\lqxx
append from success14
append from success15
append from success16
use

select distinct 录取学校,是否重点院校,备注,count(录取学校) as 录取人数 from lqxx;
	into dbf database\fenbu;
	group by 录取学校

select distinct 录取学校,是否重点院校,备注,count(录取学校) as 录取人数 from success14;
	into dbf database\fenbu14;
	group by 录取学校
	
select distinct 录取学校,是否重点院校,备注,count(录取学校) as 录取人数 from success15;
	into dbf database\fenbu15;
	group by 录取学校
	
select distinct 录取学校,是否重点院校,备注,count(录取学校) as 录取人数 from success16;
	into dbf database\fenbu16;
group by 录取学校	

六、信息浏览的实现

        用于在主界面上一览近三年电信学院往三届学生基本个人信息,分为所有学生信息表和每年的考研上岸名单表两部分,并且都能实现报表打印。

6.1 表单设计

(1)学生信息表单设计

新建表单后,添加表格、选项按钮组控件,并设置表单的属性后对表单中各个控件的布局进行粗调和微调,表格的数据来源选为表students14后,得到的表单如下:

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

 打印预览 click 事件代码:

report form print14students preview

(2)学生考研上岸信息表单设计

新建表单后,添加表格、选项按钮组控件,并设置表单的属性后对表单中各个控件的布局进行粗调和微调,表格的数据来源选为表success14后,得到的表单如下:

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

 打印预览 click 事件代码:

report form print14success preview

6.2 报表设计

(1)学生信息报表设计

经过数据查看后,可将数据生成报表并打印,单机“打印预览”后,显示如下报表:

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

该报表的数据环境为 students14.dbf

(2)学生考研上岸报表设计

经过数据查看后,可将数据生成报表并打印,单机“打印预览”后,显示如下报表:

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

 该报表的数据环境为 success14.dbf

七、信息查询的实现

        系统查询可以实现通过学号对某个学生信息的精确查询。也可以实现对考研成功学生的模糊查询。例如查询姓王的所有学生、查询录取学校名字开头为中国的学生。

7.1 往届学生信息精确查询

        新建表单后,另外添加标签、文本、命令等控件,并设置表单的Caption等属性后对表单中各个控件的布局进行粗调和微调,得到的表单如下:

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

 查询按钮的Click事件代码为:

IF Empty(Thisform.Text1.Value)
	Messagebox("查询的学号不能为空",0+48,"操作提示")
ELSE
	Do Case
	Case Left(Thisform.Text1.Value,4)="2013" OR Left(Thisform.Text1.Value,4)="2014"
		ThisForm.Text2.ControlSource='students14.学号'
		ThisForm.Text3.ControlSource='students14.班级'
		ThisForm.Text4.ControlSource='students14.姓名'
		ThisForm.Text5.ControlSource='students14.性别'
		ThisForm.Text6.ControlSource='success14.录取学校'
		ThisForm.Text7.ControlSource='success14.是否重点院校'
		ThisForm.Text8.ControlSource='success14.备注'
		select students14
		set relation to 学号 into success14
		Locate for 学号=Val(Thisform.Text1.Value)
		IF Found()=.F.
		Messagebox("没有查找到该学号对应的学生信息",0+64,"信息不存在")
		ENDIF
		Thisform.refresh
	Case Left(Thisform.Text1.Value,4)="1901"
		ThisForm.Text2.ControlSource='students15.学号'
		ThisForm.Text3.ControlSource='students15.班级'
		ThisForm.Text4.ControlSource='students15.姓名'
		ThisForm.Text5.ControlSource='students15.性别'
		ThisForm.Text6.ControlSource='success15.录取学校'
		ThisForm.Text7.ControlSource='success15.是否重点院校'
		ThisForm.Text8.ControlSource='success15.备注'
		select students15
		set relation to 学号 into success15
		Locate for 学号=Val(Thisform.Text1.Value)
		IF Found()=.F.
		Messagebox("没有查找到该学号对应的学生信息",0+64,"信息不存在")
		ENDIF
		Thisform.refresh
	Case Left(Thisform.Text1.Value,4)="2011"
		ThisForm.Text2.ControlSource='students16.学号'
		ThisForm.Text3.ControlSource='students16.班级'
		ThisForm.Text4.ControlSource='students16.姓名'
		ThisForm.Text5.ControlSource='students16.性别'
		ThisForm.Text6.ControlSource='success16.录取学校'
		ThisForm.Text7.ControlSource='success16.是否重点院校'
		ThisForm.Text8.ControlSource='success16.备注'
		select students16
		set relation to 学号 into success16
		Locate for 学号=Val(Thisform.Text1.Value)
		IF Found()=.F.
		Messagebox("没有查找到该学号对应的学生信息",0+64,"信息不存在")
		ENDIF
		Thisform.refresh
	ENDCASE	
ENDIF

退出按钮的Click事件代码为:

Release Thisform
Return

7.2 往届学生信息模糊查询

新建表单后,另外添加标签、文本、命令等控件,并设置表单的Caption等属性后对表单中各个控件的布局进行粗调和微调,得到的表单如下:

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

 查询按钮的Click事件代码为:

IF Empty(Thisform.Text1.Value)
	Messagebox("查询条件不能为空",0+48,"操作提示")
ELSE
	IF ThisForm.Optiongroup1.Value=1
		XM=Alltrim(Thisform.Text1.Value)
		ThisForm.Grid1.RecordSourceType=4
		Thisform.Grid1.RecordSource="Select * From lqxx Where XM$lqxx.姓名=.T.;
		INTO Cursor temp1 Order By 学号 ASC"
	ENDIF
	IF ThisForm.Optiongroup1.Value=2
		XX=Alltrim(Thisform.Text1.Value)
		ThisForm.Grid1.RecordSourceType=4
		Thisform.Grid1.RecordSource="Select * From lqxx Where XX$lqxx.录取学校=.T.;
		INTO Cursor temp1 Order By 学号 ASC"
	ENDIF
ENDIF

退出按钮的Click事件代码为:

Release Thisform
Return

八、考前分析的实现

8.1 男女生比例查询

新建表单后,另外添加标签、文本、命令等控件,并设置表单的Caption等属性后对表单中各个控件的布局进行粗调和微调,得到的表单如下:

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

查询按钮的Click事件代码为:

Store 0 To boy1,boy2,boy3,boy4,boy5,boy6
Store 0 To girl1,girl2,girl3,girl4,girl5,girl6
Store 0 To total_
	If Thisform.Check2.Value=1
		Select success14
		Count for 性别="男" to boy1
		Count for 性别="女" to girl1
		Select students14      
		Count for 性别="男" to boy4
		Count for 性别="女" to girl4
	Endif
		
	If Thisform.Check3.Value=1
		Select success15
		Count for 性别="男" to boy2
		Count for 性别="女" to girl2
		Select students15       
		Count for 性别="男" to boy5
		Count for 性别="女" to girl5
	Endif
		
	If Thisform.Check4.Value=1
		Select success16
		Count for 性别="男" to boy3
		Count for 性别="女" to girl3
		Select students16       
		Count for 性别="男" to boy6
		Count for 性别="女" to girl6
	Endif

IF ThisForm.Optiongroup1.Value=1
	total_=boy1+boy2+boy3+girl1+girl2+girl3
	Thisform.Text1.Value=str(boy1+boy2+boy3)+"人"
	Thisform.Text2.Value=str(girl1+girl2+girl3)+"人"
	Thisform.Text4.Value=str(total_)+"人"
ELSE
	total_=boy4+boy5+boy6+girl4+girl5+girl6
	Thisform.Text1.Value=str(boy4+boy5+boy6)+"人"
	Thisform.Text2.Value=str(girl4+girl5+girl6)+"人"
	Thisform.Text4.Value=str(total_)+"人"
ENDIF

If ThisForm.Optiongroup2.Value=1
Thisform.Text3.Value=str((boy1+boy2+boy3)/(boy4+boy5+boy6)*100,6,3)+"%"
Thisform.Text3.Alignment=0
Else
Thisform.Text3.Value=str((girl1+girl2+girl3)/(girl4+girl5+girl6)*100,6,3)+"%"
Thisform.Text3.Alignment=1
Endif

退出按钮的Click事件代码为:

clear
release thisform

8.2 录取学校分布查询

新建表单后,另外添加标签、文本、命令等控件,并设置表单的Caption等属性后对表单中各个控件的布局进行粗调和微调,得到的表单如下:

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

表单控件Option1(近三届)的Click事件代码为:

IF Thisform.Optiongroup1.Value=1
	ThisForm.Grid1.RecordSourceType=4
	Thisform.Grid1.RecordSource="Select * From Fenbu Where 是否重点院校='985' OR  是否重点院校='211';
	OR 备注='中科院' OR 备注='研究院' OR 备注='出国';
	INTO Cursor temp1 Order By 录取人数 DESC"
	ThisForm.Grid1.Column1.ControlSource='temp1.录取学校'
	ThisForm.Grid1.Column2.ControlSource='temp1.录取人数'
	ThisForm.Grid1.Column3.ControlSource='temp1.是否重点院校'
	ThisForm.Grid1.Column4.ControlSource='temp1.备注'
ELSE
ThisForm.Grid1.RecordSourceType=1
ThisForm.Grid1.RecordSource='fenbu'
ThisForm.Grid1.Column1.ControlSource='fenbu.录取学校'
ThisForm.Grid1.Column2.ControlSource='fenbu.录取人数'
ThisForm.Grid1.Column3.ControlSource='fenbu.是否重点院校'
ThisForm.Grid1.Column4.ControlSource='fenbu.备注'
ENDIF

select sum(录取人数) from fenbu into array total
select sum(录取人数) from fenbu where 是否重点院校='985' OR 是否重点院校='211' into array admit
select sum(录取人数) from fenbu where 备注='中科院' OR 备注='研究院' OR 备注='出国'into array special
Thisform.Text1.Value=str((admit(1)+special(1))/total(1)*100,6,3)+"%"

表单控件Option2(14级)的Click事件代码为:

IF Thisform.Optiongroup1.Value=1
	ThisForm.Grid1.RecordSourceType=4
	Thisform.Grid1.RecordSource="Select * From Fenbu14 Where 是否重点院校='985' OR  是否重点院校='211';
	OR 备注='中科院' OR 备注='研究院' OR 备注='出国';
	INTO Cursor temp2 Order By 录取人数 DESC"
	ThisForm.Grid1.Column1.ControlSource='temp2.录取学校'
	ThisForm.Grid1.Column2.ControlSource='temp2.录取人数'
	ThisForm.Grid1.Column3.ControlSource='temp2.是否重点院校'
	ThisForm.Grid1.Column4.ControlSource='temp2.备注'
ELSE
ThisForm.Grid1.RecordSourceType=1
ThisForm.Grid1.RecordSource='fenbu14'
ThisForm.Grid1.Column1.ControlSource='fenbu14.录取学校'
ThisForm.Grid1.Column2.ControlSource='fenbu14.录取人数'
ThisForm.Grid1.Column3.ControlSource='fenbu14.是否重点院校'
ThisForm.Grid1.Column4.ControlSource='fenbu14.备注'
ENDIF

select sum(录取人数) from fenbu14 into array total
select sum(录取人数) from fenbu14 Where 是否重点院校='985' OR  是否重点院校='211' into array admit
select sum(录取人数) from fenbu14 where 备注='中科院' OR 备注='研究院' OR 备注='出国'into array special
Thisform.Text1.Value=str((admit(1)+special(1))/total(1)*100,6,3)+"%"

表单控件Option3(15级)的Click事件代码为:

IF Thisform.Optiongroup1.Value=1
	ThisForm.Grid1.RecordSourceType=4
	Thisform.Grid1.RecordSource="Select * From Fenbu15 Where 是否重点院校='985' OR  是否重点院校='211';
	OR 备注='中科院' OR 备注='研究院' OR 备注='出国';
	INTO Cursor temp3 Order By 录取人数 DESC"
	ThisForm.Grid1.Column1.ControlSource='temp3.录取学校'
	ThisForm.Grid1.Column2.ControlSource='temp3.录取人数'
	ThisForm.Grid1.Column3.ControlSource='temp3.是否重点院校'
	ThisForm.Grid1.Column4.ControlSource='temp3.备注'
ELSE
ThisForm.Grid1.RecordSourceType=1
ThisForm.Grid1.RecordSource='fenbu15'
ThisForm.Grid1.Column1.ControlSource='fenbu15.录取学校'
ThisForm.Grid1.Column2.ControlSource='fenbu15.录取人数'
ThisForm.Grid1.Column3.ControlSource='fenbu15.是否重点院校'
ThisForm.Grid1.Column4.ControlSource='fenbu15.备注'
ENDIF

select sum(录取人数) from fenbu15 into array total
select sum(录取人数) from fenbu15 Where 是否重点院校='985' OR  是否重点院校='211' into array admit
select sum(录取人数) from fenbu15 where 备注='中科院' OR 备注='研究院' OR 备注='出国'into array special
Thisform.Text1.Value=str((admit(1)+special(1))/total(1)*100,6,3)+"%"

表单控件Option4(16级)的Click事件代码为:

IF Thisform.Optiongroup1.Value=1
	ThisForm.Grid1.RecordSourceType=4
	Thisform.Grid1.RecordSource="Select * From Fenbu16 Where 是否重点院校='985' OR  是否重点院校='211';
	OR 备注='中科院' OR 备注='研究院' OR 备注='出国';
	INTO Cursor temp4 Order By 录取人数 DESC"
	ThisForm.Grid1.Column1.ControlSource='temp4.录取学校'
	ThisForm.Grid1.Column2.ControlSource='temp4.录取人数'
	ThisForm.Grid1.Column3.ControlSource='temp4.是否重点院校'
	ThisForm.Grid1.Column4.ControlSource='temp4.备注'
ELSE
ThisForm.Grid1.RecordSourceType=1
ThisForm.Grid1.RecordSource='fenbu16'
ThisForm.Grid1.Column1.ControlSource='fenbu16.录取学校'
ThisForm.Grid1.Column2.ControlSource='fenbu16.录取人数'
ThisForm.Grid1.Column3.ControlSource='fenbu16.是否重点院校'
ThisForm.Grid1.Column4.ControlSource='fenbu16.备注'
ENDIF

select sum(录取人数) from fenbu16 into array total
select sum(录取人数) from fenbu16 Where 是否重点院校='985' OR  是否重点院校='211' into array admit
select sum(录取人数) from fenbu16 where 备注='中科院' OR 备注='研究院' OR 备注='出国'into array special
Thisform.Text1.Value=str((admit(1)+special(1))/total(1)*100,6,3)+"%"

退出按钮的Click事件代码为:

Release Thisform
return

九、考研预测的实现

        一个好的数据库应用系统中,形象、直观、易懂的统计图形是必不可少的,但现有的几种方法都不太理想。VFP提供了图形向导,用户可以按照 向导的提示逐步操作,最终获得图形。但这种方法在实际中并不适用,因为由此得出的图形是静态的,而且用户关心的只是能否按所给数据得出图形,而不愿看到太多的中间操作步骤。

        为了实现动态显示,首先要生成EXCEL APPLICATION OLE对象,然后用EXCEL内嵌的VBA对其进行操作,达到出图的效果。运用这种方法的前提是机器中应装有EXCEL。

9.1 考研预测分析系统

新建表单后,另外添加command、Olecontrol控件,并设置表单的Caption等属性后对表单中各个控件的布局进行粗调和微调,得到的表单如下:

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

 班级上岸比例预测按钮的Click事件代码为:

do form excelgragh1

重点院校率预测按钮的Click事件代码为:

ObjX=ThisForm.Olecontrol1.sheets(4)
wait wind "正在生成图表中..." nowait
for i=1 to 9
    ObjX.Cells(1,i+1).Value=''
	ObjX.Cells(2,i).Value=''
	ObjX.Cells(3,i).Value=''
endfor

DIMENSION a[2,10]
STORE '14级' TO a(1,2)
STORE '15级' TO a(1,3)
STORE '16级' TO a(1,4)
STORE '前两届' TO a(1,5)
STORE '后两届' TO a(1,6)
STORE '14+16' TO a(1,7)
STORE '近三届' TO a(1,8)
STORE '17级' TO a(1,9)
STORE '18级' TO a(1,10)


STORE '重点院校率' TO a(2,1)
STORE 0.73770 TO a(2,2)
STORE 0.64615 TO a(2,3)
STORE 0.72500 TO a(2,4)
STORE 0.69193 TO a(2,5)
STORE 0.68558 TO a(2,6)
STORE 0.73135 TO a(2,7)
STORE 0.70388 TO a(2,8)
STORE '' TO a(2,9)

for i=1 to 9
    ObjX.Cells(1,i+1).Value=a[1,i+1]
	ObjX.Cells(2,i).Value=a[2,i]
endfor

男女生上岸比例按钮的Click事件代码为:

ObjX=ThisForm.Olecontrol1.sheets(4)

wait wind "正在生成图表中..." nowait
for i=1 to 9
    ObjX.Cells(1,i+1).Value=''
	ObjX.Cells(2,i).Value=''
	ObjX.Cells(3,i).Value=''
endfor

DIMENSION a[3,10]
STORE '14级' TO a(1,2)
STORE '15级' TO a(1,3)
STORE '16级' TO a(1,4)
STORE '前两届' TO a(1,5)
STORE '后两届' TO a(1,6)
STORE '14+16' TO a(1,7)
STORE '近三届' TO a(1,8)
STORE '17级' TO a(1,9)
STORE '18级' TO a(1,10)

STORE '男生上岸比例' TO a(2,1)
STORE 0.33077 TO a(2,2)
STORE 0.37008 TO a(2,3)
STORE 0.49360 TO a(2,4)
STORE 0.35019 TO a(2,5)
STORE 0.43511 TO a(2,6)
STORE 0.41509 TO a(2,7)
STORE 0.40051 TO a(2,8)
STORE '' TO a(2,9)

STORE '女生上岸比例' TO a(3,1)
STORE 0.42857 TO a(3,2)
STORE 0.43902 TO a(3,3)
STORE 0.44828 TO a(3,4)
STORE 0.43373 TO a(3,5)
STORE 0.44286 TO a(3,6)
STORE 0.43662 TO a(3,7)
STORE 0.43750 TO a(3,8)
STORE '' TO a(3,9)

wait wind "正在生成图表..." nowait

for i=1 to 9
    ObjX.Cells(1,i+1).Value=a[1,i+1]
	ObjX.Cells(2,i).Value=a[2,i]
	ObjX.Cells(3,i).Value=a[3,i]
endfor

9.2 班级上岸率趋势预测

新建表单后,另外添加command、Olecontrol控件,并设置表单的Caption等属性后对表单中各个控件的布局进行粗调和微调,得到的表单如下:

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

 

十、系统管理

10.1 数据环境

users表用来存放使用者的用户名,密码和用户类型,其表结构为:

字段名

类型

宽度

name

字符型

10

password

字符型

10

type

字符型

10

用户分为管理员,普通用户,游客三类。

其中游客只能在电信学院考研信息管理系统中进行信息浏览和信息查询;普通用户可以在系统中浏览信息,查询信息,查看考情分析,考研预测,但不能对用户进行管理(增加删除用户信息);管理员除使用系统响应功能外,还可对用户进行管理。

10.2 登陆系统

系统登陆界面由表单完成设计,包含两个文本框以及确定取消按钮,文本框输入用户的用户名和密码后,对输入的用户名和密码进行匹配。如果输入正确则进入系统,并执行表单mainform。

确定按钮的 Click 事件的过程代码如下:

IF ALLTRIM(thisform.Text1.Value) == ''
	MessageBox("请输入用户名",0+48,"操作提示")
	Thisform.text1.setfocus()
	RETURN
ENDIF

IF ALLTRIM(thisform.Text2.Value) == ''
	MessageBox("请输入密码",0+48,"操作提示")
	Thisform.text2.setfocus()
	RETURN
ENDIF

SELECT users
UserName=Allt(thisform.text1.value)
UserPwd=Allt(thisform.text2.value)
Locate for(name)=UserName
If Found() == .T. &&如果找到
	If Allt(password)==UserPwd  &&比较密码,成功则进入
	    UserType=Allt(type)
		Messagebox("欢迎"+UserName+"进入本系统",0+48,"提示信息")
		Release thisform
		Do form mainform
		Else    &&比较密码不成功
		MessageBox("密码不正确",0+16, "错误提示")
		Thisform.text2.selstart=0
	    Thisform.text2.sellength=len(allt(thisform.text2.value))
	    Thisform.text2.setfocus()
	Endif
Else            &&没有找到指定用户
MessageBox("你还没有使用权限,请联系管理员获取权限",0+16, "错误提示")
 	   Thisform.text1.selstart=0
	   Thisform.text1.sellength=len(allt(thisform.text1.value))
	   Thisform.text1.setfocus()
Endif

Form1的load过程代码如下:.

thisform.picture="image\sakula.jpg"

10.3 用户管理

为了完成对表 users.dbf 的编辑修改,这里设计了表单 users.sct,以对应的表users.dbf 为数据环境,完成对用户增加和删除,设计的表单如下:

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

单击增加命令,执行语句do form useraddform,运行useraddform表单,增加新的用户。

Form1的Destory过程代码为:

Use database\users excl
Pack
Use

删除按钮的 Click 事件的过程代码如下:

IF Allt(type)="admin"
   Messagebox(Allt(name)+" 是系统管理员,不能删除!",16,"操作提示")
   Return
ENDIF

Mes="确要删除  "+allt(name)+"  的用户信息?"
YoN=Messagebox(Mes,1+32+0,"操作提示")
IF YoN=1
   Delete
   Messagebox("删除成功,请重新打开界面查看",0+64,"操作提示")
   Skip
   IF EOF()
     Go Bottom
   ENDIF
   Thisform.grdusers.refresh()
ENDIF
Return

 退出按钮的 Click 事件的过程代码如下:

Release thisform
Return

useraddform表单如下:

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

 其中,确定按钮的 Click 事件的过程代码如下:

IF ALLTRIM(thisform.Text1.Value) == ''
	MessageBox("请输入用户名",0+48,"操作提示")
	Thisform.text1.setfocus()
	RETURN
ENDIF

IF ALLTRIM(thisform.Text2.Value) == ''
	MessageBox("请输入密码",0+48,"操作提示")
	Thisform.text2.setfocus()
	RETURN
ENDIF

IF ThisForm.Optiongroup1.value=1
	Type_='normal'
ELSE
	Type_='admin'
ENDIF

Name_=Thisform.Text1.value
Pwd_=Thisform.Text2.value

Insert Into users Value(Name_,Pwd_,Type_)

***如果以下表单未打开则出错(错误号为1924)
userform.refresh()
Release Thisform
Return

退出按钮的 Click 事件的过程代码如下:

Release Thisform
Return

10.4  切换账号

本系统支持切换账号功能,在主界面的系统管理菜单下选择切换账号即可进入切换账号界面,表单设计如下:

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

登陆按钮的 Click 事件的过程代码如下:

IF ALLTRIM(thisform.Text1.Value) == ''
	MessageBox("请输入用户名",0+48,"操作提示")
	Thisform.text1.setfocus()
	RETURN
ENDIF

IF ALLTRIM(thisform.Text2.Value) == ''
	MessageBox("请输入密码",0+48,"操作提示")
	Thisform.text2.setfocus()
	RETURN
ENDIF

SELECT users
UserName=Allt(thisform.text1.value)
UserPwd=Allt(thisform.text2.value)
Locate for(name)=UserName
If Found() == .T. &&如果找到
	If Allt(password)==UserPwd  &&比较密码,成功则进入
	    UserType=Allt(type)
		Messagebox("欢迎"+UserName+"进入本系统",0+48,"提示信息")
		Release thisform
		Else    &&比较密码不成功
		MessageBox("密码不正确",0+16, "错误提示")
		Thisform.text2.selstart=0
	    Thisform.text2.sellength=len(allt(thisform.text2.value))
	    Thisform.text2.setfocus()
	Endif
Else            &&没有找到指定用户
MessageBox("你还没有使用权限,请联系管理员获取权限",0+16, "错误提示")
 	   Thisform.text1.selstart=0
	   Thisform.text1.sellength=len(allt(thisform.text1.value))
	   Thisform.text1.setfocus()
Endif

退出按钮的 Click 事件的过程代码如下:

clear events
Release thisform

10.5  修改密码

     用户还可以通过系统修改密码,在主界面的系统管理菜单下选择修改密码即可进入修改密码界面,表单设计如下:

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

 确认按钮的 Click 事件的过程代码如下:

IF ALLTRIM(thisform.Text2.Value) == ''
	MessageBox("请输入新密码",0+48,"操作提示")
	Thisform.Text2.setfocus()
	RETURN
ENDIF

IF ALLTRIM(thisform.Text3.Value) == ''
	MessageBox("请再次确认密码",0+48,"操作提示")
	Thisform.Text3.setfocus()
	RETURN
ENDIF

SELECT users
Pwd=Allt(thisform.text2.value)
Pwd1=Allt(thisform.text3.value)
IF Pwd1=Pwd
  Replace password with Pwd1 for Allt(name)=Allt(UserName)
  Release Thisform
ELSE
  Messagebox("两次输入的密码不一致",0+48+0,"操作提示")
  ThisForm.Text2.setfocus()
ENDIF
Return

取消按钮的 Click 事件的过程代码如下:

Release Thisform
Return

Form1的Init过程代码为:

Thisform.Text1.Value=UserName

10.6  退出系统

主表单菜单栏下系统管理的子菜单中退出系统过程的代码如下:

YoN=Messagebox("È·¶¨Í˳öϵͳ?",1+32+0,"²Ù×÷Ìáʾ")
IF YoN=1
  Close All
  Clear Events
  Quit
ENDIF

十一、主函数与主菜单设计

11.1  主函数设计

程序实现如下:

clear            &&清屏
clear all        &&释放所有内存变量变量
close all        &&关闭各种类型文件

Public UserName,UserType   &&全局变量
set talk off     &&关闭程序运算的显示过程
set safe off     &&改写已有文件时不提示对话框
set date to ymd  &&日期格式为年、月、日
set mark to "/"  &&指定日期分隔符
set century on   &&年份以四位显示

***主屏幕不可见
_Screen.visible=.F.
***调用登录界面表单
Do Form loginform
***以下语句不能省,该语句为事件循环,若没有则程序连编后不能正常运行
read events

11.2  主菜单设计

本系统的主菜单包含五个选项,分别是

  • 信息浏览:主菜单下包含电信14级学生信息、电信15级学生信息、电信16级学生信息表、14级考研上岸名单、15级考研上岸名单、16级考研上岸名单六个子菜单,点击时分别执行表单stuform14、stuform15、stuform16、successform14、successform15、successform16进而完成对学生信息和学习考研信息进行预览,已经完成报表打印;
  • 系统管理:主菜单下包含用户管理、切换账号、修改密码、退出系统四个子菜单,分别执行表单userform、switchform、updateform表单和退出程序过程(如10.6所示),进而完成对系统用户的管理。
  • 考研预测:执行命令do form excelgragh,从而打开excelgragh表单,对考研预测的信息进行预览;
  • 考研分析:主菜单下包含男女生比例、录取学校分布、班级上岸比例三个子菜单,点击时分别执行表单sexratio、lqxxfb、bjbl进而完成对男女生比例,录取学校分布,班级上岸比例信息的查询和预览;
  • 信息查询:主菜单下包含往届生信息精确查询、往届生信息模糊查询两个子菜单,点击时分别执行表单jqcx、mhcx进而完成对考研信息的查询;

十二、总结与评价改进

菜单的具体结构如下:

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

        综上所述,该系统通过项目管理器的连编,将各个管理模块综合在一起生成可执行文件, 以主菜单为基础,可通过交互方式完成电信学院考研信息的管理。

        总体而言,该系统综合运用数据库、自由表、表单、报表、菜单和程序设计,有效的完成电信学院考研信息管理系统的基本功能,同时该系统操作流程较为简单,用户容易操作, 提高了信息浏览的效率,可利用设计的报表完成信息的打印,还能通过三年的考研数据对考研趋势进行预测,从而极大程度上让用户了解电信学院考研信息。

该系统的运行界面如下:

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

最后我们从系统开销、是否能动态变化、图类丰富程度、 打印方法等方面比较了四种绘图方法。

【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】

十三、参考文献

[1]李敏军.VFP环境下动态统计图的实现[J].福建电脑,2005(09):142-143.

[2]赵月爱,赵忠孝.在VFP中设计和实现统计图表功能的两种方法[J].计算机工程与设计,2004(04):533-535.

[3]衡红军,樊玮.VFP环境下统计图绘制方法研究[J].计算机应用,2001(08)文章来源地址https://www.toymoban.com/news/detail-444771.html

到了这里,关于【数据库技术课程设计】 电信学院考研信息管理系统 +【Visual FoxPro】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库课程设计------书店管理系统

    书店会员管理系统 具体的效果图看博客-----书店管理系统2(https://blog.csdn.net/qq_45981397/article/details/124062654?spm=1001.2014.3001.5502) 需求分析 (1).信息需求 书店的管理人员和员工可以为管理系统添加图书的购买记录和退书记录. 会员可以购买图书以及退书,工作人员对会员的姓名,

    2024年02月04日
    浏览(34)
  • 数据库课程设计-人事管理系统

    学期就要结束了,要完成一个数据库的课程设计项目,想想自己一个学期下来啥也没学到,现在突然要独立完成一个小项目,不能偷懒,记录一下吧。 代码已经放在文章末尾 ^ v ^ 完成软件下载与环境配置,成功运行老师写好的学生管理系统。  第一次实现用代码弹出具体的

    2024年02月05日
    浏览(40)
  • 数据库课程设计(教室设备故障报修系统)

      内容与要求: 完成需求分析,写出功能需求和数据需求描述; 在需求分析的基础上,完成数据库概念结构设计、逻辑结构设计、物理结构设计和数据库创建; 完成视图、存储过程设计,要求定义合理。 在应用程序中合理运用存储过程,正确运用DML语句。 1.1 设计的背景和

    2024年02月12日
    浏览(35)
  • java课程设计(学生信息管理系统设计)+数据库

    🔍 🔎 本期带领大家一起来学习 java课程设计(学生信息管理系统设计)+数据库 的实现思路 🔍 🔎 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计学生信息管理系统,使之能提供以下功能: 1、系统以菜单方式工作 2、学生信息录入功能

    2024年02月08日
    浏览(43)
  • 数据库课程设计——工资管理系统Qt

    近年来,随着我国信息技术的飞速发展,计算机应用已逐渐渗透到各个领域。在企业管理领域内,计算机的应用已经十分广泛,各种管理机制与企业运作流程都与计算机紧密结合在一起,计算机的应用进一步完善了企业的管理,提高了企业的现代化管理形象。开发职工工资管理

    2024年02月04日
    浏览(39)
  • 【课程设计】数据库:火车票管理系统

    摘要:本文主要介绍了火车票管理系统,其中包括其选题功能概述,对该系统的方案方法设计,以及过程实现等内容。由于系统的代码量较大,因此将会较为抽象地对思想进行介绍,在必要时会举出一些实例,还会附上成果展示以及安装方法。最后补充一下这次团伙作案的心

    2024年02月08日
    浏览(34)
  • 数据库--汽车销售管理系统【课程设计】

    目录 1.设计任务 1.1系统开发的背景  1.2系统开发的意义  1.3系统所应用的模块 2.需求分析 2.1功能分析 2.2数据流图 2.3数据字典 3.概念结构设计 4.逻辑结构设计 5.物理结构设计 5.1基本表 5.2视图 6.数据库实施 6.1 建立数据库表 6.2建立视图 7.数据库操作 目录 1.1系统开发的背景 

    2023年04月08日
    浏览(38)
  • 数据库课程设计-图书馆管理系统(2.数据库实现-基于mysql)

    如果对你有帮助,可以给卑微的博主留个赞、关注、收藏   (不是)  (骗一下数据,说不定以后面试就过了,拜谢) 好像有读者说现在不要积分的资源也要vip才能下,如果下不了可以留邮箱到评论区或者私聊,我也把资源放到github了,地址如下: https://github.com/goLSX/library_mana

    2024年02月06日
    浏览(37)
  • 【数据挖掘】国科大苏桂平老师数据库新技术课程作业 —— 第四次作业

    云计算与云数据库背景 云计算(cloud computing)是 IT 技术发展的最新趋势,正受到业界和学术界的广泛关注。云计算是在分布式处理、并行处理和网格计算等技术的基础上发展起来的,是一种新兴的共享基础架构的方法。它可以自我维护和管理庞大的虚拟计算资源(包括计算

    2024年02月04日
    浏览(40)
  • 医院管理系统数据库,课程设计,SQLserver,纯代码设计

    首先创建数据库,并建立各个表之间的主外键约束等,并插入数据。 此时数据库已经建立好了,下面进行数据库的基本操作。 下面是各个表的实体图        下面是数据流图  下面是医院管理E-R图 下面是医院功能结构图 随着计算机技术的飞速发展,计算机在医院管理中应用

    2024年01月16日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包