vf课程设计(学籍管理系统).doc

上传人:飞****2 文档编号:63963206 上传时间:2022-11-27 格式:DOC 页数:13 大小:41KB
返回 下载 相关 举报
vf课程设计(学籍管理系统).doc_第1页
第1页 / 共13页
vf课程设计(学籍管理系统).doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述

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

1、综合项目2(学籍管理系统) 项目10:vf 学籍管理系统的开发实例一、需求分析随着学校规模不断扩大,学生的数量急剧增加,有关学生的各种信息量也成倍增加。面对庞大的信息量,需要有学生管理系统来提高学校管理人员的工作效率。通过这样的系统,可以做到信息的规范管理,科学统计和快速的查询,从而减少管理方面的工作量,由于大学生类别和专业的设置的多样化,大学生的学籍管理历来是非常繁琐和复杂的工作,不仅需要多配置管理人员,而且在数据处理的准确性、时效性、安全性等方面均存在许多问题,使得人工管理几乎无法实现。这种情况下,用计算机进行管理变得尤为的必要,这可以发挥计算机的优势,利用计算机来进行学籍管理,无疑大大减

2、轻了工作人员的工作量和减少人为的错误。 因此我们选用了微软公司的Visual FoxPro 6.0 作为软件平台,并用它来实现学籍管理系统中的各项功能。 二、数据来源 我们以某学校为例。 学生情况登记表: 学号、姓名、性别、出生日期、是否团员、电话、总成绩0001、谭彦、女、1983.5.21、是、 、453 0002、应华、女、1983.10.12、是、 、425 0003、崔玫、女、1980.2.22、是、 490 0004、季平、男、1981.3.19、.是、 、510 老师情况登记表 编号、姓名、性别、学历、职称、联系方式、张华、男、大学、 、程城、女、大学、 、马东、男、大学、 课程

3、情况登记表 课程号、课程名、学期、学分、教师所在系 2004、0010、计算机基础知识一5 2004、0012、高数二、6 2004、0052、英语三、5 2004、1200、数据库应用四、3 三、系统的具体功能 (1)设计要求 系统开发的总体任务是实现学生信息关系的系统化、规范化和自动化。设计要求分析显示在系统开发的总体任务的基础上完成的。 本例中的学生学籍管理系统的设计要求主要有: 有关学籍等信息的输入,包括输入学生基本信息、所在班级、所学课程和成绩等。 学生信息的查询,包括查询学生的基本信息、所在班级、已学课程和成绩等。 学生信息的修改。 学校基本课程信息的输入 基本课程信息的修改。 学

4、生课程的设置和修改。 学生成绩信息的输入、修改、查询。 学生成绩信息的统计。 本例根据学生信息表和课程基本信息表、教师信息表等输入单据中归纳出包括2个表的数据库,现将这些列出如下: (1)学生表:xs (学号,姓名,性别,出生日期,是否团员,电话,通信地址,邮编,总成绩,备注) (2)课程表:kc (课程号,课程名,学期,学分,教师,所在系) (3)教师表:js (编号,姓名,性别,学历,职称,所授课程,联系方式,备注) 六、应用程序的设计 该系统的最终用户应该是学校的学籍管理工作人员,这是一群具有相当计算机应用知识的用户,他们应该可以很熟练的使用本系统,而且该系统的使用率也会提高,它将完成学

5、生信息的录入、存储、修改的相关查询、汇总工作、从而将大大提高学生工作信息管理的效率。 学生学籍管理系统的具体设计如下: 1、学生学籍管理系统主程序(A:main.prg) 功能:提供程序的主界面和进入系统各功能模块的接口,包括一个自右向左滚动的飞字程序。 源程序: set talk off &关闭人机对话 set escape off &设置ESC脱离键不起作用,即误按该键不会终止程序的执行 clear all &清屏 set colo to 0/7,7/0 &设置VFP系统的默认颜色 clear &清屏 4,42 clear to 30,92 set colo to 7+/0+ &从第4行第

6、42列到第30行第92列产生白字黑底的色块 4,42 clear to 30,92 &显示色块 3,40 clear to 29,90 set colo to 7+/4 &从第3行第40列到第29行第90列产生白字黑底的色块 3,40 clear to 29,90 &显示色块 4,42,28,88 box space(9) &从左上角第4行第42列到右下角第28行88列产生线框 7,52 say=学生学籍管理系统= &在第7行第52列显示学生学籍管理系统的字样 8,50 say- &在第8行第50列显示分隔线条 9,57 say=1.录入数据= &在第9行第57列显示1.录入数据字样 11,5

7、7 say=2.修改数据= &在第11行第57列显示2.修改数据字样 13,57 say=3.查询数据= &在第13行第57列显示3.查询数据字样 15,57 say=4.统计数据= &在第15行第57列显示4.统计数据字样 17,57 say=5.显示数据= &在第17行第57列显示5.打印数据字样 19,57 say=6.删除数据= & &在第19行第57列显示6.退出数据字样 21,57 say=7.退 出= &在第21行第57列显示7.退出字样 x=1 &设初值x=1 b1=欢迎您使用学生学籍管理系统 &将字符串赋给变量b1 do while.t. &当条件成立时计算机做下面的语句 h

8、z1=substr(b1,x,29) &取字符串b1从第1个字符到第29个字符赋给变量hz1 25,51 say hz1 &在第25行第51列显示字符串hz1 bb=inkey(0.6) &将等待0.6秒击键的inkey 函数赋给bb if bb0 &变量bb不等于0,即有击键动作发生 exit &那么,不显示字符串 endi &与if条件判断语句相配对 x=x+2 &将变量x的值加2赋给x if x83 &如果变量x大于83个字符 x=1 &那么,将1赋给变量x,即从头开始显示字符串 endi &与if条件判断语句相配对 endd &与do while循环语句相配对 27,51 say请选择

9、1-7: &在第27行51列显示请选择1-7:的字样 wait to k &计算机等待用户从键盘输入一个字符给变量k do case &做选择语句 case k=1 &当变量k的值等于1时 do a:input &计算机跳转到a:input子程序 case k=2 &当变量k的值等于2时 do a:modify &计算机跳转到a:modify子程序 case k=3 &当变量k的值等于3时 do a:search &计算机跳转到a:search子程序 case k=4 &当变量k的值等于4时 do a:total &计算机跳转到a:total子程序 case k=5 &当变量k的值等于5时 d

10、o a:dp &计算机跳转到a:dp子程序 case k=6 &当变量k的值等于6时 do a:del &计算机跳转到a:del子程序 case k=7 &当变量k的值等于7时 set colo to 0/7,7/0 &设置VFP系统的默认颜色 clear &清屏 retu &返回VFP主程序 endcase &与do case选择语句相配对 set decimals to 2 set fdow to1 set fweek to 1 set mark to . Set separator to .” Set point to . 2、录入模块子程序(A:input.prg) 功能:提供卡片式的

11、录入数据界面。 源程序:set talk off use a:xj &打开a:xj.dbf数据库文件 go bott &将记录指针移到数据库的末尾 skip &跳到下一条记录 hk=recn() &将当前记录号赋给变量hk hk1=str(hk,3) &将变量hk值的前三位,由数值转换为字符串赋给c1=.t. &将逻辑型变量“真”赋给变量c1 do while c1 &当条件成立时计算机做下面的语句 a1=spac(2) &将2个空格赋给变量a1 a2=spac(6) &将6个空格赋给变量a2 a3=spac(2) &将2个空格赋给变量a3 a4=spac(8) &将8个空格赋给变量a4 a5

12、=spac(2) &将2个空格赋给a5 a6=spac(8) &将8个空格赋给a6 a7=spac(30) &将30个空格赋给a7 a8=spac(6) &将6个空格赋给a8 a9=spac(6) &将6个空格赋给a9 a10=spac(50) &将50个空格赋给a10 kk=.t. &将逻辑型变量“真”赋给变量kk do while kk &当条件成立时计算机做下面的语句 clea &清屏 1,5 say输入第+hk1+张卡片 &在第1行第5列显示输入第+hk1+张卡片的字样,其中,hk1为宏替换 hk=hk+1 &变量hk的值增1 hk1=str(hk,3) &将变量hk的值取3位赋给hk

13、1 row()+1,5 say学号:get a1 &在当前行的下一行第5列显示学号字样 row(),40 say姓名:get a2 &在当前行第40列显示姓名字样 row()+1,5 say性别:get a3 &在当前行的下一行第5列显示性别字样 row()+1,5 say出生年月(MM/DD/YY):get a4 &在当前行的下一行第5列显示出生年月字样 row()+1,40 say是否团员:get a5 &在当前行的下一行第5列显示是否团员字样 row()+1,5 say电话:get a6 &在当前行的下一行第5列显示电话字样row()+1,40 say通信地址:get a7 &在当前行的

14、下一行第5列显示通信地址字样 row()+1,5 say邮编 :get a8 &在当前行的下一行第5列显示邮编字样 row()+1,5 say总成绩:get a9 &在当前行第40列显示是否总成绩字样 row()+1,5 say备注:get a10 &在当前行的下一行第5列显示备注字样 read &将键盘所输内容读入内存 y=y &将字符y赋给变量y 12,5 say输入正确吗?(Y/N)get y &在第12行第5列显示输入正确吗字样 read &并将输入的y或n读入内存 if y=Y.or.y=y &如果变量y值为大写的Y或小写的y kk=.f. &那么,将逻辑否赋给变量kk endif

15、&与if 相配对 enddo &与do while相配对 appe blan &添加新记录到空白记录 replace 学号 with a1,姓名 with a2,性别 with a3,出生年月 with ctod(a4),是否团员 with a5 replace 电话 with val(a6),通信地址 with val(a7),邮编 with val(a8),总成绩 with a9,备注with a10 &替换键盘输入的内容到相应的字段中 y= &将一空格赋给变量y clea 14,5 say继续输入吗?(y/n)get y &在第14行第5列显示继续输入吗字样 read &并将输入的y或n

16、读入内存 if y=N.or.y=n &如果变量y值为大写的N或小写的n kk=.f. &那么,将逻辑否赋给变量kk exit &退出输入界面 endif &与if相配对 enddo &与do while相配对 clear &清屏 do a:main &运行A:main.prg主程序 (2)、修改模块子程序(A:modify.prg) 功能:提供卡片式的修改数据的功能。 源程序:set talk off set delimiter off use a:xj &打开数据库文件A:xj.dbf kk=.t. do while kk clear go top yy=space(2) 4,20 say

17、请输入学号 get yy read loca all for 学号=yy if eof() 5,5 say wait该记录不存在!请按任意键返回! y=y clea 6,5 say继续修改吗?(Y/N) get y read if y=Y.or.y=y loop endi clea do a:main retu endi clea kk=.t. do while kk clear row()+1,1 say学号: get 学号 row(),40 say姓名: get 姓名 row()+1,1 say性别: get 性别 row()+1,1 say 出生年月: get 出生年月 row(),60

18、 say是否团员: get 是否团员 row()+1,1 say电话: get 电话 row()+1,25 say通信地址: get 通信地址 row(),25 say邮编: get 邮编 row()+1,1 say总成绩: get 总成绩 row(),60 say备注(双击文本框输入内容): get 备注 read y= 9,15 say修改正确吗?(Y/N) get y read if y=y.or.y=Y kk=.f. else loop endi enddo clear y= 5,15 say继续修改吗?(Y/N) get y read if y=n.or.y=N kk=.f. end

19、if enddo clea do a:main (3)、查询模块子程序(A:search.prg) 功能:提供按学号检索、按姓名检索、按学号和姓名检索和按学号、姓名、性别检索三个子模块的查询数据功能。 表单上的按钮功能包括:输入查询条件、查询、显示查询条件、清除查询条件、打印预览、打印和放弃。起初,除输入查询条件、显示查询条件和放弃外按钮均是不能选择的。当单击“输入查询条件”按钮时,表单元上的字段均为空,用户可以输入任意知道的条件做为查询条件,这些条件均是“与”的关系。这时,按钮也可以被选择了,若单击查询,查询结果就显示在表单的逐条浏览页上,同时,在该页上还显示了共查询到几条记录及可用移动记录

20、按钮逐条查看记录。 显示查询条件按钮可以查看本次查询输入的条件;清除查询条件按钮可以清除本次查询的条件以备下一次查询;打印按钮将本次查询结果输出到打印机;放弃按钮则放弃本次查询并释放本表单元。 为了方便查看,还可以在表单的浏览佤页中一次查看到全部查询到的记录;并能在浏览字段设定页中设定佤浏览时该字段的显示与否。 源程序:set talk off set delimiter off set safety off &重建索引时不提示覆盖 use a:xj inde on 学号 to a:xh &按学号建立索引文件xh.idx inde on 学号+姓名 to a:xhxm &按学号和姓名建立索引文

21、件xhxm.idx inde on 姓名 to a:xm &按姓名建立索引文件xm.idx stor.t.to c do while c clear text 检索功能表 0-退出检索系统 1-按学号检索 2-按姓名检索 3-按学号和姓名检索 4-按学号、姓名、性别检索 endt dd=1 row()+1,17 say请输入功能号 get dd pict 9 rang 0,4 read do case case dd=0 clear do a:main retu case dd=1 clear n1=spac(2) 4,20 say请输入学号 get n1 read use a:xj inde

22、 a:xh &打开数据库文件xj.dbf并打开按学号建立的索引文件xh.idx find &n1 &查找字符串n1,&为宏替换 case dd=2 Clear n2=spac(6) 4,10 say请输入姓名 get n2 read use a:xj inde a:xm find &n2 case dd=3 clear n1=spac(2) n2=spac(6) 4,10 say请输入学号 get n1 5,10 say请输入姓名 get n2 read use a:xj inde a:xhxm n4=n1+n2 find &n4 case dd=4 clear n1=spac(2) n2=s

23、pac(6) n3=spac(2) 3,10 say请输入学号: get n1 4,10 say姓名: get n2 5,10 say性别: get n3 read loca for 学号=n1.and.姓名=n2.and.性别=n3 &查找条件是学号为n1并且姓名为n2并且性别为n3的记录 other retu Endc if eof() &如果已到文件尾 clear wait对不起!没找到。请按任意键返回! loop endif cc=.t. y= do while cc set devi to scre &设置屏幕显示字符 clea row(),5 say学号:+学号 row(),40

24、say姓名:+姓名 row()+1,5 say性别:+性别 row()+1,5 say出生年月:+dtoc(出生年月) row()+1,40 say是否团员:+是否团员 row()+1,5 say电话:+电话 row(),40 say通信地址:+通信地址 row()+1,5 say邮编:+邮编 row()+1,5 say总成绩:+总成绩 row()+1,5 say备注:+备注 20,20 say不继续查找打N,否则打任一键 get y read if y=N.or.y=n clear stor.f.to cc loop else Endif if.not.eof() loop Endif st

25、or.f.to cc Enddo stor.f.to c Enddo use do a:main (4)、统计模块子程序(A:total.prg) 功能:提供统计人数、平均成绩和党员人数的功能。 源程序:set talk off use a: dd=0 stor.t.to c do while c clear text 统计功能表 0-退出统计系统 1-统计人数 2-统计平均成绩 3-统计党员人数 endt dd=1 row()+1,17 say请输入功能号 get dd pict 9 rang 0,3 read do case case dd=0 clear do a: case dd=1

26、clear coun to aa &计算记录数并把值赋给aa 4,20 say总人数: ?aa &显示变量aa的值 a= 7,20 say按任意键返回! read if a= loop endi case dd=2 clear aver 总成绩 to aa &对总成绩求平均并把平均值分别赋给变量aa 4,20 say求总成绩平均成绩为: ?aa a= 9,20 say按任意键返回! read if a= loop endi case dd=3 clear coun for 是否团员=是 to aa &统计党员数,并把值赋给aa 4,20 say团员人数为: ?aa a= 9,20 say按任意

27、键返回! read if a= loop endi endc return endd 5、显示模块子程序(A:dp.prg) 功能:提供卡片式的显示记录的功能。 源程序:set talk off set devi to scre use a:xj kk=.t. do while kk clea hk=recn() hk1=str(hk,3) row(),5 say您现在浏览的是第+hk1+张卡片 row()+1,5 say学号:+学号 row()+1,5 say姓名:+姓名 row()+1,5 say性别:+性别 row()+1,5 say出生年月:+dtoc(出生年月) row(),40 s

28、ay是否团员:+是否团员 row()+1,5 say电话:+电话 row()+1,40 say通信地址:+通信地址 row()+1,5 say邮编:+邮编 row()+1,5 say总成绩:+总成绩 row()+1,5 say备注:+备注 wait 请按n键浏览下一条记录,按l键浏览上一条记录,按y键返回主程序! to k do case case k=n if eof() &如果已到文件尾 go top &将文件记录指针移到文件记录的首记录 else skip &否则,跳到下一条记录 endi hk=hk+1 case k=l if bof() &如果已到文件开头 go bott &将文件记

29、录指针移到文件记录的最后一条记录 else skip -1 &否则,跳到上一条记录 endi hk=hk-1 case k=y clear do a:main kk=.f. endc endd 6、删除模块子程序(A:del.prg) 功能:提供逻辑与物理删除的功能。 源程序:set talk off set devi to scre use a:xj yy= yn= de=spac(2) clear 4,20 say请输入要删除记录的学号 get de read loca all for 学号=de if eof() wait查无此卡片!击回车键退出! clear do a:xj retu

30、endi if.not.eof() clea hk=recn() hk1=str(hk,3) row(),5 say您现在浏览的是第+hk1+张卡片 row()+1,5 say学号:+学号 row()+1,5 say姓名:+姓名 row()+1,5 say性别:+性别 row()+1,5 say出生年月:+dtoc(出生年月) row(),40 say是否团员:+是否团员 row()+1,5 say电话:+电话 row(),40 say通信地址:+通信地址 row()+1,5 say邮编:+邮编 row()+1,5 say总成绩:+总成绩 row()+1,5 say备注:+备注 endif 13,20 say是这个记录吗?(Y/N) get yn read if yn=n.or.yn=N clea do a:xj retu endi if yn=y 14,20 say真要删除吗?(Y/N) get yy read if yy=y.or.yy=Y delete &删除当前记录(逻辑删除,但不是真正将当前文件记录从VFP中删除) endif endi clear stor to y 15,15 say删除的记录从盘中彻底清除吗?(Y/N) get y read if y=y.or.y=Y pack &真正删除当前记录(物理删除) endif clea do a:xj

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

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

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

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