学生考评管理系统设计与实现

 系统总体设计

14.2.1 功能结构设计

1.系统功能描述

基于上述需求分析,本系统主要完成以下功能:

(1) 学生信息管理模块

学生信息管理模块完成学生信息的管理功能,包括用户的登录、用户的退出、用户的个人信息录入、修改、查询、删除等

(2) 课程信息管理模块

课程信息管理模块主要是为系统管理员提供了课程管理功能,主要包括课程信息的录入、课程的增加、课程的修改、课程的删除等功能。

(3) 成绩管理模块

成绩管理模块主要实现学生成绩的管理功能,包括成绩的输入、成绩的查询、修改、删除等基本操作。

(4) 综合考评数据管理

综合考评数据管理模块主要实现了自动评语库的管理、自动生成评语、手工修改评语。

(5) 家庭报告书打印模块

家庭报告书打印模块主要是为了方便班主任将家庭报告书邮寄给家长而设计的。

(6) 系统维护

系统维护主页完成数据备份与恢复,账号及权限的管理。为了确保信息安全,需要对重要数据进行备份,必要的时候再从备份的数据中恢复数据。系统管理员可以添加、修改或删除管理员账号,分配管理职责和权限。

2.系统功能结构图

根据上面功能模块分析,系统功能结构图如图14-3所示。限于篇幅,本书只介绍信息管理、数据维护和报表输出三个功能模块。

图14-3 系统功能结构图

14.2.2 数据库设计

通过对上述需求分析中的数据需求进行总结,综合测评管理系统主要有以下数据结构及其数据项:

(1) 管理员:管理员编号、姓名、密码

(2) 班级:班级代码、班级名称、学院名称、毕业时间

(3) 职务:班级代码、管理员编号、职务、权限

(4) 学生:学号、密码、姓名、班级代码、出生年月、籍贯、家庭住址、邮政编码、宿舍、照片、简历

(5) 科目:科目编号、课程名称、学时、学分

(6) 选课:学号、科目编号、学年、学期、成绩

(7) 测评:学号、学年、名次、等级、奖惩情况、综合评语

3.数据库概念结构设计

数据库概念结构设计通过对用户进行综合、归纳与抽象,形成一个独立与具体DBMS的概念模型,既是整个数据库设计的关键,又是进行数据库逻辑结构设计的基础。在概念结构设计中主要采用实体联系(E-R)图作为描述工具,将实际应用抽象为实体与实体之间的关系,生成数据库的整体概念结构设计模型。

根据上面的实际规划出的实体有:用户信息实体、查询实体、课程实体、综合考评实体,课程成绩实体,家庭报告书实体。系统总体E-R图如图14-4所示。

图14-4 系统总体E-R图

4.数据库逻辑结构设计

数据库逻辑结构设计是指将数据库概念结构中抽象的E-R图转换为特定DBMS所支持的数据模型的过程,通常是转换成关系模型。

本设计中的DBMS采用Visual FoxPro 9.0来实现,作为关系数据库,数据库逻辑结构设计体现在其中即为数据表。数据库中各表的结构设计结果如表14-1至表14-8所示。

表14-1  管理员表(Admins)

标题

英文解释

字段名

字段属性

说明

管理员编号

AdminID

AdID

C(5)

主键

姓名

AdminName

AdName

C(8)

密码

Password

Psword

表14-2  班级表(classes)

标题

英文解释

字段名

字段属性

说明

班级代码

*ClassID

ClsID

C(8)

主键

班级名称

ClassName

ClsName

C(50)

学院名称

SchoolName

SchName

C(50)

毕业时间

GraduateDate

Gdate

D(8)

表14-3  职务表(Adclass)

标题

英文解释

字段名

字段属性

说明

班级代码

ClassID

ClsID

C(8)

管理员编号

AdminID

AdID

C(5)

职务

Adminduty

Adduty

C(10)

权限

AdminPower

Adpower

N(1)

表14-4  学生表 students

标题

英文解释

字段名

字段属性

说明

班级代号

ClassID

ClsID

C(8)

学号

*StudentID

SID

C(9)

主键

姓名

StudentName

SName

C(8)

性别

Sex

Sex

C(2)

是否党员

PartMember

Pmember

L(1)

出生日期

Birthdate/Birthday

Birthday

D(8)

籍贯

NativePlace

Native

C(14)

家庭地址

Address

Address

C(50)

邮政编码

PostCode

PCode

C(6)

照片

Photo

Photo

G(4)

简历

StudentNote

SNote

M(4)

表14-5  科目表(courses)

标题

英文解释

字段名

字段属性

说明

科目代码

*CourseID

CID

C(8)

主键

科目名称

CourseName

CName

C(30)

学时

Period

Period

N(3)

学分

CreditHour

Credit

N(5.2)

表14-6  选课表(sc)

标题

英文解释

字段名

字段属性

说明

学号

StudentID

SID

C(9)

科目代码

CourseID

CID

C(8)

学年

AcademicYear

AYear

C(9)

学期

Term

Term

N(1)

成绩

Score/results

Score1

N(6)

绩点

Score/Point

Score2

N(3.1)

表14-7  测评结果表(grade)

标题

英文解释

字段名

字段属性

说明

学号

StudentID

SID

C(9)

学年

AcademicYear

AYear

C(9)

名次

Order/rank

Rank

N(3)

等级

Grade

Grade

C(6)

奖惩情况

Note

Note

M(4)

综合评语

Remark

Remark

M(4)

表14-8  自动评语表(Remarks)

标题

英文解释

字段名

字段属性

说明

编号

RemarkID

RemID

N(3)

主键

主题

Title

Title

C(50)

综合评语

Remark

Remark

M(4)

5.数据库的实现

分析设计好数据库的逻辑结构之后,通过VFP数据库设计器来完成数据库的设计工作,设置表间关联关系以及参照完整性,如图14-5所示。

图14-5 数据库表及其关系图

在查询或报表输出时,需要多个表联合查询。为方便数据处理,通过VFP的视图设计器把多个相关联的表组合后生成视图文件,视图作为数据库的虚表,使用方式和数据一样,这样就可以大大简化查询或报表输出的设计过程。以下是本系统需要的视图:

(1) 学生成绩:班级代号、学年、学期、学号、姓名、课程代号、课程名称、成绩、学时、学分

(2) 综合测评结果:学院代号、学院名称、班级代号、班级名称、学号、姓名、学年、评定等级、名次、奖惩情况、评语

(3) 职责管理:班级代号、班级名称、管理代号、管理员姓名、权限

三个视图所涉及的查询代码为:

(1) 学生成绩

SELECT Students.clsid, Students.sid, Students.sname, Sc.ayear, Sc.term,;

  Sc.score1, Sc.score2, Sc.cid, Courses.cname, Courses.period, Courses.credit;

 FROM  sdb!students INNER JOIN sdb!sc ;

   ON  Students.sid = Sc.sid ;

    INNER JOIN sdb!courses ;

   ON  Courses.cid = Sc.cid;

 ORDER BY Students.clsid, Students.sid, Sc.ayear, Sc.term

(2) 综合测评

SELECT Students.sname, Grade.ayear, Classes.schname, Classes.clsid,;

  Classes.clsname, Grade.sid, Grade.rank, Grade.grade, Grade.note,;

  Grade.remark;

 FROM  sdb!students ;

    INNER JOIN sdb!grade ;

   ON  Students.sid = Grade.sid ;

    INNER JOIN sdb!classes ;

   ON  Classes.clsid = Students.clsid;

 WHERE  Grade.ayear = ( "2008-2009" );

 ORDER BY Students.clsid, Students.sid

(3) 职责管理

SELECT Admins.adid, Admins.adname, Adclass.adpower, Adclass.clsid, Classes.clsname;

 FROM  sdb!admins ;

    INNER JOIN sdb!adclass ;

   ON  Admins.adid = Adclass.adid ;

    INNER JOIN sdb!classes ;

   ON  Classes.clsid = Adclass.clsid;

 ORDER BY Admins.adpower, Admins.adid

以上视图可以在数据库中通过视图设计器实现,也可以在程序中通过上述查询语句实现。

14.2.3系统主体框架设计

1.建立系统项目文件

采用VFP开发应用系统,项目管理器是必不可少的文档管理工具。有关项目管理器的概念及操作请参阅本书第二章,在此不再介绍。本系统项目名称是SIM(学生信息管理系统),选择“D:\SIM”作为默认工作目录。并建立如图14-6所示的目录结构。

图中文件夹Data、DataBack、ExcelFiles、Images、

Temp Wizards分别用于存储系统数据、数据备份、导出的Excel文件、图像文件、向导文件。

根据数据库表逻辑结构以及数据库表关联关系,在项目管理中实现数据库。详细操作请读者参阅图14-5以及本书第四章。

2.建立主程序文件

一般地,对于VFP应用系统而言都有一个主程序文件。在SIM中,主程序作为系统默认的起始运行程序,用于对系统进行初始化,并调用登录表单,开起事件循环。在项目管理器中新建程序文件main.prg,其代码如下:

CLEAR ALL

SET DATE LONG           &&  设置日期为长格式(9999年99月99日)

SET TALK OFF

SET SAFETY OFF          &&  覆盖时不要确认

application.Visible=.f. &&  隐藏VFP系统主窗口

DO FORM Logon           &&  运行登录表单

READ EVENTS             &&  读取循环事件,否则程序不会驻留内存

3.主菜单设计

主菜单出现在单文档界面(SDI)窗口中,在设计主菜单时,要把它创建为SDI菜单,打开菜单设计器,从View菜单中选择General Options,然后选择Top-Level Form。

菜单栏包括档案管理、课程管理、成绩查询、综合测评、打印输出、系统维护、帮助、退出八个一级菜单,每个一级菜单包含若干菜单项,每个菜单项对应调用一个表单。不同的菜单项授予的访问权限不一样,其中班级档案管理、课程信息维护以及系统维护的全部功能只能被系统管理员访问,对应的“跳过”表达式设置为Power_ID<>1。综合评语部分只能被系统管理员或班主任访问,所以“跳过”表达式设置为Power_ID>3  or  Power_ID<=0

主菜单menusim.mpr的结构如表4-9所示。

表4-9 主菜单menusim.mpr的结构

菜单栏

菜单项

命令

“跳过”表达式

档案管理(\<S)

班级档案管理

do form 11ClassMana

Power_ID<>1

学生档案管理

do  form 12StuMana

学生信息浏览

do  form 13StuBrow

课程管理(\<C)

课程信息浏览

do form 21CourseBrow

课程信息维护

do form 22CourseMana

Power_ID<>1

成绩查询(\<T)

班级成绩浏览

do form 31ClassScore

个人成绩查询

do form 32StuScore

综合测评(\<G)

自动写评语

do form 41AutoRemark

Power_ID>3  or  Power_ID<=0

评语库维护

do form 42Remark

Power_ID>3  or  Power_ID<=0

综合测评管理

do form 43StuGrade

Power_ID>3  or  Power_ID<=0

打印输出(\<P)

学生名册

do form 51StuList

学生成绩单

do form 52Score

信封打印

do form 53FamAddr

家庭报告书

do form 54FamData

系统维护(\<M)

账户管理

do form 61Count

Power_ID<>1

职责管理

do form 62duty

Power_ID<>1

\-

BAR#

数据备份

do form 63backup

Power_ID<>1

数据恢复

do form 64Restore

Power_ID<>1

帮助(\<H)

关于本系统

do form  about

退出(\<Q)

退出系统

quit

4.登录表单设计

登录表单的主要功能是验证用户身份,获取用户权限。本系统用户权限根据不同的管理职责分为三个级别:班主任、辅导员、系统管理员。班主任只能管理本班学生的相关信息,辅导员可以管理本学院学生的相关信息,系统管理员可以管理全部学生的相关信息。经过用户身份验证通过后,根据用户权限生成对应的学生班级信息,产生一个临时文件,存放于Temp文件夹中。

登录表单由三个标签、两个文本框、两个命令按钮和两个线条控件组成。表单运行效果如果图14-7所示。

表单初始化过程中,需要定义三个变量,用于存储用户登录次数、用户ID和管理权限,表单Init过程的代码如下:

PUBLIC LogonTimes,User_ID,Power_ID

LogonTimes=0

命令按钮【确定】的Click事件代码如下:

SET EXACT ON                                            &&改为精确比较

LogonTimes=LogonTimes+1                                 &&将登录次数加1

SELECT Admins

mps=THISFORM.txt密码.VALUE

mpswd=pswd(mps)                                         &&调用自定义函数转换密码

LOCATE FOR ALLTRIM(AdID)=THISFORM.txt帐号.VALUE         &&查找帐号

IF FOUND() AND  ALLTRIM(PsWord)=mpswd                   &&如果找到并且密码相同

   User_ID=ALLTRIM(THISFORM.TXT帐号.VALUE)              &&将登录帐号值赋给全局变量User_ID

   Power_ID=AdPower

   SET EXACT OFF                                        &&改为模糊比较

   PUBLIC Class_ID,Class_Name,Sch_Name       && 定义班级相关的三个公用变量

   SELECT AdClass

   SET ORDER TO ADPOWER                      && 选择索引顺序为ADPOWER(权限)

   LOCATE FOR AdID=User_ID

   IF NOT EOF()

      Class_ID=ClsID

      Power_ID=AdPower

   ELSE

      Class_ID='No duty'

    **  Power_ID='Default AdPower  '          && 默认的权限在登录时确定

   ENDIF

   SET SAFETY OFF

   DO CASE

      CASE Power_ID=1                         && 如果是管理员,查询全部学生

         SELECT * FROM Classes ORDER BY ClsID  INTO TABLE Temp\Cur_Class

      CASE Power_ID=2          && 如果是辅导员,查询属于自己管理的学院的全部学生

         SELECT * FROM Classes WHERE LEFT(ClsID,2)=LEFT(Class_ID,2);

 ORDER BY ClsID INTO TABLE Temp\Cur_Class

      CASE Power_ID>=3         && 如果是班主任或班长,查询属于自己管理的班级的学生

         SELECT * FROM Classes WHERE ClsID=Class_ID ;

ORDER BY ClsID INTO TABLE Temp\Cur_Class

   ENDCASE

   SELECT Cur_Class            && 查询生成的表默认打开,并设置为当前工作区

   GO TOP

   Class_ID=Cur_Class.ClsID

   Class_Name=Cur_Class.ClsName

   Sch_Name=Cur_Class.SchName

   DO FORM Main

   THISFORM.RELEASE

ELSE                                                       &&如果帐号和密码不对

   IF LogonTimes<3                                         &&如果次数小于3次

      MESSAGEBOX("帐号或密码错误!",48,"警告窗口")         &&弹出错误窗口

      THISFORM.txt帐号.VALUE=""                            &&清空帐号和密码栏

      THISFORM.txt密码.VALUE=""

      THISFORM.txt帐号.SETFOCUS

   ELSE                                                    &&如果次数已到3次

      MESSAGEBOX("系统无法启动 ……",48,"警告窗口")

      CLEAR ALL

      THISFORM.RELEASE

   ENDIF

ENDIF

命令按钮【取消】的Click事件代码如下:

YN=MESSAGEBOX("放弃登录,确定退出系统? ",4+32,"信息窗口")

IF YN=6

   CLOSE ALL

   SET SAFETY ON           &&  覆盖时要确认

   SET STAT BAR ON         &&  将状态栏打开

   SET SYSMENU ON          &&  打开VFP系统菜单之区域(Band)

   SET SYSMENU TO DEFAULT  &&  打开系统菜单

   SET DATE LONG           &&  设置日期为长日期格式(9999年99月99日)  

   THISFORM.RELEASE

ENDIF

登录系统或进行账号维护时,需要多次使用密码转换程序,本系统采用字符映射简单加密算法进行明码与密码的转换。密码转换程序pswd.prg代码如下:

FUNCTION pswd

PARAMETERS mps

mps=ALLTRIM(mps)

mpswd=""

FOR  i=1 TO LEN(mps))

    mpswd=mpswd+CHR(ASC(SUBSTR(mps,i,1))+131-3*i)     && 密码转换

ENDFOR

RETURN MPSWD

ENDFUNC

 其他的定制服务  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_251836457

你的鼓励 是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值