[VFP课程设计]_学生成绩管理系统.doc

上传人:飞****2 文档编号:54339641 上传时间:2022-10-28 格式:DOC 页数:10 大小:73.50KB
返回 下载 相关 举报
[VFP课程设计]_学生成绩管理系统.doc_第1页
第1页 / 共10页
[VFP课程设计]_学生成绩管理系统.doc_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《[VFP课程设计]_学生成绩管理系统.doc》由会员分享,可在线阅读,更多相关《[VFP课程设计]_学生成绩管理系统.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、学生成绩管理系统 1.需求分析 需求分析简单的说就是分析用户的要求,通过调查、收集与分析,获得用户对数据库的如下要求:1.1信息要求:指用户需要从数据库中获得信息的内容与性质。本系统需要的输入数据:学生信息(学号,姓名,班级,性别,出生日期)、课程信息(课程名,满分)、考生成绩;输出数据:学生成绩报表、学生信息报表、课程报表、成绩报表。1.2处理要求:指用户要完成什么处理功能。本系统功能需求可归纳如下: 数据登记登记功能用于把各种手填的数据及时登记系统定义表中,还能修改这些数据(学生信息、课程信息、成绩)。 数据浏览能浏览学生信息、课程信息、成绩。 数据打印能打印学生信息表、课程信息表、成绩表

2、(单课成绩和总分成绩)。 数据统计能统计各班学生总数和男女人数,统计各班学生的总分、排名,及各单课的排名。 2.3 性能要求:维护数据的安全性.设定密码,限制非法用户的使用;还能修改密码,维护系统的安全性。2.数据库设计数据库设计的任务是确定系统所需的数据库。数据库是表的集合,通常一个系统只需一个数据库。建立本系统的数据库 数据datatest.dbc根据需求分析画出E-R图课程号成绩班级学号nm学习 课程名课程学生姓名名次出生日期满分性别2.1逻辑设计:确定数据库所含表及字段学生信息表:xs(学号,姓名,班级,性别,出生日期)课程信息表:kc(课程号,课程名,满分)考生成绩表:cj(学号,姓

3、名,班级,课程名,成绩,名次)括号外字符号是表名,括号内是字段名,有下划线的字段为关联关键字2.2物理设计 学生信息表:(dataxs.dbf) xs(xh c(7),xm c(8),bj c(10),xb c(2),csrq d) 课程信息表:(datakc.dbf) kc(kch c(5),kcm c(20),mf n ) 考生成绩表:(datacj.dbf) cj(xh c(7),xm c(8),bj c(10),kcm c(20),cj n(5,1) ,mc n)自由表: (datapass.dbf) pass(pass c(10)3.总体设计按功能分类是总体设计的常用方法,用层次图(

4、Hierarchy Chart 简称HC图)表示,自上而下分层主程序 数据浏览模块数据维护模块成绩管理模块系统功能分析统计输入打印浏览删除搜索修改退出修改密码3.1数据维护模块包括对学生信息表、课程信息表、考生成绩表的插入、修改、删除、搜索等。3.2数据浏览模块 包括对学生信息表、课程信息表、考生成绩表的选择浏览、打印。3.3成绩管理模块包括对学生成绩的输入,总分和单课的统计和排名,分析各分数段人数的分布情况。4.初始用户界面设计系统层对应菜单文件,子系统层对应菜单标题,功能层对应子菜单项系统功能维护浏览成绩管理版本信息修改密码学生信息表学生信息表成绩输入课程信息表课程信息表成绩统计退出考生成

5、绩表考生成绩表成绩分析5.模块设计与编码5.1主文件(datamain.prg) 设计系统环境,调用登录表单代码如下:SET TALK offset sysmenu off *关闭系统菜单set cent on *年份的世纪部分用4位输出_screen.windowstate=2_screen.icon=iconshappy.ico *系统图标_screen.maxbutton=0_screen.minbutton=1_screen.closable=.f._screen.picture=picturejjfz.jpe *系统背景画MODIFY WINDOW SCREEN TITLE 学生成绩

6、管理系统 今天是:+dtoc(date()+ +cdow(date()ZOOM WINDOW SCREEN MAX open database data数据test.dbcdo form formspassread even *建立事件循环quit5.2菜单程序(mprmenu.mpr)的建立往命令窗口键入命令modi menu menu 出现菜单设计窗口“退出”菜单项 命令 clear events *停止事件循环,转去执行read event后的命令调用各表单命令 如调用修改密码表单(formsxiu.scx) do form formsxiu.scx插入分隔符 菜单名称 - 结果 菜单项

7、#设计快捷键 对于菜单项 在菜单命令后加(字母)如系统功能(提示选项对话框,在键标签中键入CTRL+字母(J除外)。5.3 数据库中的数据需要以表单的形式显示,本系统需建立以下表单:a. 系统登陆表单 b.密码修改表单 c.维护学生信息表单 d.维护课程信息表单 e.维护考生成绩表单 f.浏览学生信息表单 g.浏览课程信息表单 h.浏览成绩表单 i.成绩输入表单 j.总分成绩统计表单 k单课成绩统计表单 l.成绩统计表单设计表单步骤:在项目管理器中,文档表单新建。设计表单属性 重要属性有 Caption AutoCenter Height Width WindowType Icon 添加各标签

8、、文本框,设定文本框与源表中源字段的绑定 有代码的写代码 如属性InteractiveChange Event 当用鼠标或键盘修改控件的值时发生的事件创建命令按钮详细介绍:a.系统登陆表单 formspass.scx 功能:用户名和密码三次输入错误,自动退出系统;限制了非法用户的使用,维护了系统数据的安全。构成:三个标签(工作人员登录,用户名,密码)两个文本框 两个命令按钮(取消 登录) 命令按钮 登录use datapassgo topif thisform.user.value=guan and thisform.pass.value=pass.pass do menumenu.mpr*若

9、用户名和密码正确,则进入本系统。thisform.releaseelse#define missmatch_loc 用户或口令错,请重新登录!wait window missmatch_loc timeout 1 *系统延时thisform.user.value=thisform.pass.value=thisform.user.setfocusnumcount=numcount+1 if numcount=4 *表单初始化事件有:public numcount numcount=0 mess =messagebox(三次口令错,将退出程序!,4+16+2,退出) clear event re

10、lease thisform endif endifb.密码修改表单功能:可以随时修改密码,维护系统安全。构成:四个标签(请输入,旧密码,新密码,确认新密码)三个文本框 两个命令按钮(修改,退出)c.维护成绩表单 formscj.scx功能:能查询到某位学生成绩,可以对它修改,删除,还可以清空整个cj.dbf的数据。属性设计如图1 命令按钮 删除 use datacj excl *以独占的方式打开cj.dbflocate for xh=this.parent.text1.value .and.kcm=this.parent.text4.value deletemess=messagebox(彻

11、底删除吗?,4+16+0,删除) *弹出信息对话框if mess=6pack *如果确定,则彻底删除elserecall *否则恢复endifthisform.refresh 下一个 skip 1if eof() *如果到了末记录 =messagebox(已是末记录!,48,信息窗口) skip -1 this.enabled=.f. else this.enabled=.t. endif if !bof() mand3.enabled=.t. else mand3.enabled=.f. endifthisform.refreshd.维护学生信息表单功能:根据学号能快捷查询到某个学生,对其进

12、行修改,删除操作,还能添加学生记录。构成:六个标签(学号,姓名,班级,出生日期,性别)四个文本框 一个选项按钮(性别) 命令按钮同图1e.维护课程信息表单功能:根据课程号能快捷查询到某门课程,对其进行修改,删除操作,还能添加课程记录。构成:四个标签(课程号,课程名,满分,课程表)四个文本框 命令按钮同图1f.浏览学生信息表单功能:统计出全体学生人数,男女人数和各班级人数和男女人数;打印出各班级学生信息构成:一个页框(全体学生,各班学生)一个退出按钮 每页一个表格全体学生页:三个标签(学生总数,男生总数,女生总数)三个文本框 打印按钮各班学生页:四个标签(班级,学生总数,男生总数,女生总数)三个

13、文本框 打印按钮 一个组合框(班级)组合框combo1.Interactivechange 代码set filt to bj=allt(bo1.value) count to thisform.pageframe1.page2.text1.value count for xb=男 to thisform.pageframe1.page2.text2.value count for xb=女 to thisform.pageframe1.page2.text3.valuethisform.pageframe1.page2.grid1.refresh g.浏览课程信息表单功能:可以浏览、打印课程信

14、息。构成:一个标签(课程名)一个组合框 两个命令按钮(打印,退出)一个表格h.浏览成绩表单 formsscj.scx功能:能够根据学号,姓名,课程名,班级,浏览学生成绩;还能浏览优秀学生成绩(成绩满分*0.85)不及格学生成绩(成绩满分*0.6) 并且能打印出选择的记录。构成:一个含三页的页框(学号姓名查询,班级课程查询,高级查询) 学号姓名查询页:两个标签(学号,姓名) 两个文本框 一个表格四个命令按钮(两个查询,两个导出文本文件,一个打印) 班级课程查询页:一个文本框(班级)一个组合框(课程名)两个标签(班级,课程)一个表格 三个命令按钮(查询,打印,导出文本文件) 高级查询页:五个命令按

15、钮(全体学生,成绩优秀者,不及格者,两个导出文本文件,打印) 一个表格查询代码:set filter to 导出文本文件代码:copy to fieldsforwhile sdfi.成绩输入表单 formsincj.scx功能:方便的输入学生的成绩,下一个按钮 可实现学号+1;如果没选课程,学号不存在,学生该门课的成绩已存在,都会给出错误提示;右表格显示该门课全体学生的成绩。构成: 如下图命令按钮 输入 if empty(bo1.value)mess=messagebox(课程名不能为空!,0+48+0,警告)elselocate for cj.xh=allt(thisform.text2.v

16、alue) ;and cj.kcm=allt(bo1.value)if recno()reccount() *若符合输入条件,则输入记录。insert into datacj (xh,xm,bj,kcm,cj,mc);allt(thisform.text3.value),allt(thisform.text1.value),;allt(bo1.; value),thisform.text4.value,reccount()+1)go topset filter to cj.kcm=allt(bo1.value)thisform.grid1.refreshthisform.grid1.setfo

17、cus *表格标题改变thisform.grid1.column3.header1.caption=allt(bo1.value)mand1.enabled=.f.mand3.enabled=.t.mand4.enabled=.t.elsemess=messagebox(此记录已存在!,0+48+0,警告)endifendif命令按钮 定位mand1.enabled=.t.if empty(thisform.text2.value) mess=messagebox(学号不能为空!,48,警告)else go top locate for xs.xh=allt(thisform.text2.va

18、lue) if recno()reccount() mess=messagebox(该学号不存在!,48,警告) mand1.enabled=.f. else thisform.text1.value=xs.bj thisform.text3.value=xs.xm endif endif thisform.refresh命令按钮 下一个(主要代码)thisform.text2.value=str(val(thisform.text2.value)+1) *实现学号自动加一j.总分成绩统计表单formstscj.scx功能:求出选择班级学生的总分,并且统计出排名(相同成绩,名次相同)构成:三个

19、标签(总分成绩排名,班级,参考人数)组合框(班级)文本框(参考人数) 一幅图像 六个命令按钮(统计总分,成绩排名,文本文件,打印,浏览,退出)bo1 的 InteractiveChange Event 代码use datacj mand2.enabled=.f.mand3.enabled=.f.mand5.enabled=.f.mand6.enabled=.f.erase sort1.dbf *删除文件sort1.dbfuse命令按钮 打印 调用程序 do prgsprt.prg sprt.prg的代码在后面命令按钮 统计总分useuse datacj set safe off *重写文件,系

20、统不给提示信息total to sum1 on xh fields cj for bj=bo1.value set safe on *按学号统计各班学生总分,生成文件sum1.dbfmand5.enabled=.t.t=1 ?useuse sum1this.parent.text1.value=reccount() *统计各班级参加考试的人数use命令按钮 成绩排名useuse sum1 exclset safety offsort to sort1 on cj desc fields xh,bj,xm,cj,mc *生成排名文件sort1.dbfset safety onuseerase s

21、um1.dbfuse sort1 exclrepl all mc with recno() *能够对相同分数的考生得出相同的名次go topdo while .not.eof() t=cj p=mc *定义临时变量p skip 1 if t=cj repl mc with p endif enddousemand2.enabled=.t.mand3.enabled=.t.mand6.enabled=.t.usek.单课成绩统计表单 datatdcj.scx功能:统计出全年级、各班级学生各门课排名。构成:三个标签(单课成绩统计表单,学科,班级) 文本框(学科)组合框(学科)选项按钮组(班级排名

22、年级排名) 一幅图像 四个按钮(统计,文本文件,打印,退出)l.成绩分析表 datacjfx.scx功能:通过输入班级、课程名和分数段值,统计出各分数段的人数,并求出最高分、最低分。构成:11个标签(课科名,班级,满分,分数段,最高分,最低分,分数段一分数段五)一个组合框(班级)两个按钮(设定,退出) 命令按钮 设定 m=thisform.text2.valuen=thisform.text3.valuep=bo1.valueq=thisform.text1.valuecount to thisform.text4.value for cj.cj=(m-n) and cj.kcm=allt(p

23、) and cj.bj=allt(q) *求出第一分数段的人数count to thisform.text5.value for cj.cj=(m-2*n) and cj.kcm=allt(p) and cj.bj=allt(q) *求出第二分数段的人数count to thisform.text6.value for cj.cj=(m-3*n) and cj.kcm=allt(p) and cj.bj=allt(q) *求出第三分数段的人数count to thisform.text7.value for cj.cj=(m-4*n) and cj.kcm=allt(p) and cj.bj=

24、allt(q) *求出第四分数段的人数count to thisform.text8.value forcj.cj(m-4*n) and cj.kcm=allt(p) and cj.bj=allt(q) *求出第五分数段的人数thisform.label4.caption=allt(str(m)+-+allt(str(m-n) *改变label4的标题thisform.label5.caption=allt(str(m-n)+-+allt(str(m-2*n)thisform.label6.caption=allt(str(m-2*n)+-+allt(str(m-3*n)thisform.la

25、bel7.caption=allt(str(m-3*n)+-+allt(str(m-4*n)thisform.label8.caption=+allt(str(m-4*n)go topmax1=0 *以下求出最高分数和最低分数min1=mlocate for cj.kcm=allt(p) and cj.bj=allt(q)do while recno()max1 max1=cj.cj endif if cj.cj30 eject &打印机输出命令 ? 学号 姓名 总分 名次 &zt lin=1 endifenddo eject set print off use sort1 set conso

26、le on &打开到屏幕的输出 set safe on set talk on return5.5学生成绩报表 frxcj.frx 创建报表 modify report cj 打开报表设计器 设计标题 学生成绩表 报表表达式 date() 设计页标头 学号 姓名 成绩名 成绩 班级 添加数据环境 datacj.scx 在细节中,添加域控件xh,xm,kcm,cj,bj 在页注脚中,添加页码 + ALLTRIM(STR(_PAGENO)课程信息报表 frxkc.frx 学生信息报表 frxxs.frx 制造过程与学生成绩报表的相同 6.结束语连编生成可执行程序,在windowsXP,visual foxfro6.0环境下,调试成功。它实现了学生基本信息的管理,成绩的输入、浏览、统计、打印和维护。它可以按班级统计学生的总分,并对其排名,还可以对单课成绩排名,通过编写总分成绩排名的程序,实现打印成绩排名表。如果能把总分成绩和单课成绩组成一个报表,就更好了。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁