




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科学生综合性实验报告学生姓名李进静学 号0090916专业班级09税务一班课程编号03333课程名称数据库应用教学班号A13实验项目面向对象程序设计的综合应用(表单综合设计)实验时间12月19-1月2实验地点17栋418指导教师凌传繁一、实验综述1、实验目的及要求在面向对象程序设计思想和理论的指导下,运用Visual FoxPro对面向对象方法的支持,使用表单设计、表单控件、数据环境设计器及常用的若干基本控件(命令按钮、命令按钮组、标签、文本框、编辑框、复选框、单选按钮、列表框、组合框、计时器、页框和表格等),设计一个集登录、查询、修改和删除等基本功能于一体的表单综合应用系统。通过多功能表单的设计,提高实验者的动手操作能力和综合利用所学知识的能力。实验者通过完成此实验设计成果,进一步加深理解面向对象程序设计的基本理论和方法。实验者在完成实验任务的基础上,应认真总结实验心得,尽量用清晰简明的语言、步骤详实地记录实验过程,撰写通顺流畅的实验报告,以提高文档写作能力。2、实验仪器、设备与软件(1) 设备:PC(2) 软件:Microsoft Windows XP,Visual FoxPro 6.0,Microsoft Office 2003/2007二、实验任务 设计一个表单,要求表单的标题名(Caption)为“学生信息管理系统”加上“实验者的学号和姓名”,并用“()”括起来,例如:“学生信息管理系统(0080001张长江)”。表单必须包括页框、页面对象。要求构建包含5个页面(选项卡)的页框,第一个页面是登录功能,第二个页面实现查询功能(查询时不能修改或删除数据),第三个页面实现修改(仅能修改)功能,第四个页面实现删除功能,第五个页面实现浏览学生信息功能。要求用实验者的姓的拼音和名的首字母及序号为页面命名(name属性),例如,“张长江”设计的表单,该5个页面的“name”属性分别为“zhangcj1”、“zhangcj2”、“zhangcj3”、“zhangcj4”、“zhangcj5”。其他对象(特别是命令按钮类对象)的命名(name属性)尽量与实验者本人的姓名(拼音)或学号相关。 没有经过登录则不能进行查询修改等操作。登录时,以学生表中存在的学号为用户名,出生日期为密码则为合法有效的登录;若3次登录均无效,则提示“非法用户,谢绝访问!”,并退出表单。 在现有的班级表增加一个班级(要求是实验者所在班级,专业名称、年级和所在学院必须是真实的),在现有的学生表中至少增加3个学生的基本信息(可以不考虑照片的输入,要求包括实验者本人的真实信息,班级号要与先前增加的班级一致),在现有的课程表中至少增加3门课程(要求是实验者自己专业的核心基础课),在现有的成绩表中至少增加5门次(要求必须包含实验者本人所修2门以上)课程的成绩。表记录的增加可以直接使用SQL命令而不通过表单实现。所增加的记录必须在实验报告中反映出来。 查询功能包括两种方式:依次顺序地自动查询学生成绩信息(约5秒钟左右自动查询下一个学生),每屏显示一个学生信息;手工输入学生学号查询。查询的内容包括学号、姓名、性别、出生日期、是否少数民族、课程代码、课程名称和成绩。查询时不能修改任何数据。 修改数据只能对学生表和成绩表进行,且学生学号和姓名不可修改。在对表中数据进行真正修改前,要求进行确认。 删除时要求显示被删记录的详细信息,并再次得到确认后方可删除。 浏览学生信息时,要求按班级显示,并以表格方式在同一界面显示尽可能多的记录数据,至少要包括学号、姓名、性别、课程号、课程名、成绩等。 要求界面友好,美观大方,交互功能强。尽量在表单设计中合理地运用更多的控件对象;并尽量发挥创造力,在满足以上基本要求的基础上,设计更多合理的功能,例如,增加记录,照片的输入与修改,增加(修改)信息(成绩等)的审核,分班级按加权平均成绩排序,查询时自动进行成绩统计并显示每位同学在专业和班级中的排名等。 撰写综合实验报告。 实验所用到的数据库包含的表、表结构与关联如图1(表和字段的名称使用英文)或图2(表和字段的名称使用中文)所示,并参见Visual FoxPro面向对象程序设计实验指导与习题解答第24-27页的“3.4.2 表结构与表的内容”。图1 表和字段的名称使用英文图2 表和字段的名称使用中文三、实验设计(要求包括:针对规定实验任务所进行的设计的必要说明,例如,各对象的命名方式如何与实验者本人的姓名或学号相关,在数据表中增加哪些记录、修改哪些记录、删除哪些记录等; 在完成规定的实验任务的基础上,设计哪些附加的功能,实现什么样的目标。) 第一步:首先,新建一个表单,将它在Caption中命名为“学生信息管理系统(0090916李进静)”,创建一个页框构建5个page:第一个设Caption为“登录”,name为“lijj1”,第二个设Caption为“查询”,name为“lijj2”, 第三个设Caption为“修改”, name为“lijj3”, 第四个设Caption为“删除”,name为“lijj4”,第五个设Caption为“浏览”,name为“lijj5”。 第二步:在表”李进静0090916”的数据环境中加入数据库(已给)studentdb,其中student与class, class与achievement之间的关联已存在,只用加上achievement与course之间的关联.向几个表中添加的记录下面的实验步骤会给出,结果显示会在实验结果中显示.第三步:在各page建立对象,如下:Caption为“登录”,name为”lijj1”标签1的name为” Label1”,caption为”用户名”;标签2的name为” Label2”,caption为”密码”文本框1的name为” Text1”;文本框1的name为” Text2” 命令按钮1的name为” ljj1”,caption为”登录” 命令按钮1的name为” ljj1”,caption为”退出”Caption为“查询”,name为”lijj2”此页下又设置了一个页框:页面1的name为” lijj21”,caption为”自动查询”标签1的name为” lblsno”, caption为”学号”标签2的name为” lblsname”, caption为”姓名”标签3的name为” lblclassno”, caption为”班级号”标签4的name为” lblenrollment”, caption为”入学成绩”标签5的name为” lblnative”, caption为”籍贯”标签6的name为” lblbirthday”, caption为”出生日期”标签7的name为” lblsex”, caption为”性别”还有7个文本框,其name为”txt”+其前面标签name去掉lbl后的字母.命令按钮1的name为” ljj3”,caption为”自动查询”命令按钮2的name为” ljj4”,caption为”退出”命令按钮3的name为” ljj5”,caption为”停止查询”页面1的name为” lijj22”,caption为”手动查询”标签的name为” Label1”,caption为”学生学号”文本框的name为” Text1”; 命令按钮的name为”ljj6”,caption为”退出” Form2标签的name为” lblsno”,caption为”学号”文本框的name为” txtsno”;表格的name为” lijj” Caption为“浏览”,name为”lijj5”标签1的name为” Label1”,caption为”选择班级”标签2的name为” Label2”,caption为”选择学生学号”列表框的name为” lijj51”;组合框的name为” lijj52”表格的name为” lijj53”;命令按钮的name为”lijj10”,caption为”退出”四、实验过程(步骤与记录)(要求包括:增加记录如果不是通过表单实现,则需要写出其SQL命令; 所使用的对象的基本操作过程,要求写出所有修改的属性值和编写的代码。) 添加记录:向student里加入信息:use studentinsert into student;values(”0090916”,”李进静”,”女”,1991/04/19,.F.,”20011405”,”湖北宜昌”, ”542”, ”memo”,”gen”)insert into student;values(”0090918”,”秦玉娇”,”女”,1990/09/19,.T.,”20011405”,”广西南宁”, ”587”, ”memo”,”gen”)insert into student;values(”0090917”,”吴玉山”,”女”,1990/09/09,.F.,”20011405”,”湖北恩施”, ”555”, ”memo”,”gen”)use向class里加入的信息:Use class insert into class;value(”2011405”,”税务09-01班”,”2009”,”罗福根”,”财税与公共管理学院”,0)use向course里加入的信息:Use courseinsert into course;value(”05103”,”政治经济学”,”1”,”02”,”48”,”3”)insert into course;value(”01013”,”货币银行学”,”4”,”02”,”48”,”3”)insert into course;value(”15414”,”税法”,”1”,”02”,”64”,”4”)use向achievement里加入的信息:Use achievementinsert into achievement;value(”0090916”,”05103”,”70”)insert into achievement;value(”0090916”,”35052”,”73”)insert into achievement;value(”0090916”,”10083”,”84”)insert into achievement;value(”0090916”,”34022”,”86”)insert into achievement;value(”0090916”,”09001”,”92”)use为了简便,以下所有的caption属性的修改我明确写出,均在其种类后直接写出,其name属性的修改直接写在括号内!Form1的第1页登录(lijj1) 首先,在用户名栏里输入学号,在密码里输入出生日期(年月日),点击登录.而且起初,在没有成功登录前,其他界面均不能使用,成功登陆后则可以使用.本页编写的代码:Init: public denglucsdenglucs=0thisform.lijj.lijj1.text2.enabled=.f.文本框text1 修改的属性:Fontsize=28 编写的代码有: Keypress:if ! empty(thisform.lijj.lijj1.text1.value) thisform.lijj.lijj1.text2.enabled=.t.endif命令按钮”登录”(ljj1) 编写的代码有: Click: open data studentdbset date to ymda=thisform.lijj.lijj1.text1.valueb=thisform.lijj.lijj1.text2.valuec=substr(b,1,4)+/+substr(b,5,2)+/+substr(b,7,2)select * from student where a=sno and ctod(c)=birthdayif found()=.f. messagebox(登录成功!,0,提示) thisform.lijj.lijj2.enabled=.t. thisform.lijj.lijj3.enabled=.t. thisform.lijj.lijj4.enabled=.t. thisform.lijj.lijj5.enabled=.t. else denglucs=denglucs+1 if denglucs=3 messagebox(非法用户,谢绝访问!,0+48,提示) inkey(2) thisform.release else messagebox(用户名或密码错误!,0+48,提示) thisform.lijj.lijj1.text1.value= thisform.lijj.lijj1.text2.value= thisform.lijj.lijj1.text2.enabled=.f. endif endif命令按钮”退出”(ljj2) 编写的代码:Click: thisform.release Form1的第2页”查询”(lijj2)Page”自动查询”(lijj21) 进入此页面后,点击”自动查询”,则学生信息以每5秒刷新一次.点击”停止查询”,则不再进行刷新操作.本页编写的代码: Init: thisform.lijj.lijj2.lijj21.lijj21.timer1.enabled=.f.计时器Timer1: 修改属性: Interval=5000 编写的代码: Timer:if eof() go topendifthisform.lijj.lijj2.lijj21.lijj21.txtsno.readonly=.f.thisform.lijj.lijj2.lijj21.lijj21.txtenrollment.readonly=.f.thisform.lijj.lijj2.lijj21.lijj21.txtclassno.readonly=.f.thisform.lijj.lijj2.lijj21.lijj21.txtsname.readonly=.f.thisform.lijj.lijj2.lijj21.lijj21.txtsex.readonly=.f.thisform.lijj.lijj2.lijj21.lijj21.txtbirthday.readonly=.f.thisform.lijj.lijj2.lijj21.lijj21.txtnative.readonly=.f.thisform.lijj.lijj2.lijj21.lijj21.txtsno.value=student.snothisform.lijj.lijj2.lijj21.lijj21.txtenrollment.value=student.enrollmentthisform.lijj.lijj2.lijj21.lijj21.txtclassno.value=student.classnothisform.lijj.lijj2.lijj21.lijj21.txtsname.value=student.snamethisform.lijj.lijj2.lijj21.lijj21.txtsex.value=student.sexthisform.lijj.lijj2.lijj21.lijj21.txtbirthday.value=student.birthdaythisform.lijj.lijj2.lijj21.lijj21.txtnative.value=student.nativethisform.lijj.lijj2.lijj21.lijj21.txtsno.readonly=.t.thisform.lijj.lijj2.lijj21.lijj21.txtenrollment.readonly=.t.thisform.lijj.lijj2.lijj21.lijj21.txtclassno.readonly=.t.thisform.lijj.lijj2.lijj21.lijj21.txtsname.readonly=.t.thisform.lijj.lijj2.lijj21.lijj21.txtsex.readonly=.t.thisform.lijj.lijj2.lijj21.lijj21.txtbirthday.readonly=.t.thisform.lijj.lijj2.lijj21.lijj21.txtnative.readonly=.t.skip命令按钮”自动查询”(ljj3) 编写的代码:Click: thisform.lijj.lijj2.lijj21.lijj21.timer1.enabled=.t.命令按钮”停止查询”(ljj5)Click: thisform.lijj.lijj2.lijj21.lijj21.timer1.enabled=.f.命令按钮”退出”(ljj4) Click: thisform.release Page”手动查询”(lijj22)首先,在文本框中输入要查询的学生的学号,点击”查询”,进入另一个界面后,再次点击”查询”,则可以看到查询者信息,要查询另一同学时,点击”关闭”返回上一个界面.创建form2命令按钮”查询”(ljj6) 编写的代码有: Click:thisformset.form2.visible=.t.thisformset.form2.txtsno.value=thisformset.form1.lijj.lijj2.lijj21.lijj22.text1.valuethisformset.form2.lijj.setfocusform2本表代码: Init: thisform.visible=.f.thisform.lijj.value=.t.thisform.lijj.readonly=.t.命令按钮”查询”(lijj1) 编写的代码有: Click:thisform.lijj.value=.t.thisform.txtsno.readonly=.t.select student.sno,sname,sex,birthday,ifnation,student.classno,native, enrollment,institute,cname,achievement from student,Class,achievement,course;where class.classno=student.classno and student.sno=achievement.sno;and o=o order by student.sno into cursor lijjbstudentlijj=thisform.txtsno.valueselect * from lijjb where lijjb.sno=studentlijj into cursor lijjcthisform.lijj.recordsourcetype=1thisform.lijj.recordsource=lijjc命令按钮”关闭”(lijj2) 编写的代码: Click: thisform.visible=.f.Form1的第3页”查询”(lijj3)将要修改的内容修改好后,点击”修改”按钮.命令按钮”修改”(ljj7) Click: b=messagebox(确认修改吗?,1+32,提示)if b=1close alluse achievementappendendif Form1的第4页”查询”(lijj4) 删除需要删除的信息后,点击”删除”按钮.命令按钮”删除”(ljj8) Click:select *;from student;where student.sno=alltrim(thisform.lijj.lijj4.parent.text1.value) into cursor tttthisform. lijj.lijj4. grid1.recordsourcetype=1thisform. lijj.lijj4. grid1.recordsource=tttthisform. lijj.lijj4. refresh b=messagebox(确认删除吗?,1+32,对话窗口) if b=1 select student delete for sno=alltrim(thisform. lijj.lijj4.parent.text1.value) select student close all pack thisform. lijj.lijj4.refresh endif thisform. lijj.lijj4.refreshthisform. lijj.lijj4.grid1.recordsource=studentthisform. lijj.lijj4.grid1.recordsource=studentForm1的第5页”浏览”(lijj5) 在选择班级中选择要浏览的班级,再选择学号,后会出现所需要的信息.列表框lijj51修改的属性有: Rowsourcetype=6-字段 Rowsource=class.classname 编写的代码有: Click:select student.sno from student where student.classno=class.classno;order by student.sno into cursor ljjathisform.lijj.lijj5.lijj52.rowsource=ljja.snoselect student.sno,sname,sex,birthday,ifnation,student.classno,native,enrollment,institute,cname,achievement from student,Class, achievement,course; where class.classno=student.classno and student.sno=achievement.sno;and o=o order by student.sno into cursor ljjbthisform.lijj.lijj5.lijj53.recordsourcetype=1thisform.lijj.lijj5.lijj53.recordsource=ljjbthisform.refresh组合框lijj52修改的属性有: Rowsourcetype=6-字段 编写的代码: Click:studentljj=thisform.lijj.lijj5.lijj52.valueselect * from ljjb where ljjb.sno=studentljj into cursor ljjcthisform.lijj.lijj5.lijj53.recordsourcetype=1thisform.lijj.lijj5.lijj53.recordsource=ljjcthisform.refresh命令按钮”退出”(ljj10) 编写的代码: Click: thisform.release五、结论1、实验结果(要求包括:展示数据表中所增加的记录; 展示所有的对象及对象间的包含关系;展示表单执行时各类操作过程和操作结果的典型界面。) (所有图均可放大,因为版面缘故有些可能有些小)添加的记录:Student: Class: Course: Achievement: 各界面的展示:登录:密码输入正确:( 登录成功后,其他界面均可使用)用户名或密码错误,但错误数不超过3次:错误数超过3次: 查询: 分别点击两个界面查询后 修改: 删除: 浏览:无任何操作时的显示选好班级学号后的显示:(由于版面问题,信息一次性截取不完全,分两面) 2、分析讨论(要求;分析实验过程中存在的主要问题,总结经验与体会等!) 表单这次试验是本学期最后一次试验,也是目前所做的所有试验中综合性最强的一次,其中包含了查询,修改,删除,浏览,登录的各个方面。表单是图形画用户界面,新建表单就是将表单类实例化为表单对象实例,控件放置在表单上就是实例化控件类的过程。完成实例化过程后,再编写表单对象实例。这次的表单综合实验设计花了很多时间,明白了计算机的相关实验最重要的是耐心和细心,必须一步步的按步骤来,细节到标点符号都不能有一点的差错,否则就会导致表单的设计失败。同时自己也需要通过理论教材和实验教材更加深入的理解相关的知
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医学检验(中级)模拟题库带答案详解(模拟题)
- 2026年初中英语往届真题及答案
- 中国邮政2025德州市秋招数据分析岗位高频笔试题库含答案
- 8.2 用药与急救 说课稿-2023-2024学年人教版生物八年级下册
- 数学教辅所有题库及答案
- 2024-2025学年度赣西科技职业学院单招《英语》通关题库含完整答案详解【必刷】
- 深圳福田区中烟工业2025秋招安全工程师岗位高频笔试题库含答案
- 美妆电商用户2025年特殊肤质人群护肤产品市场增长与竞争格局分析报告
- 1我爱我自己教学设计-2025-2026学年小学心理健康五年级大象版
- 2024自考专业(电子商务)过关检测试卷附答案详解【A卷】
- 足球比赛-开幕式组织方案
- 电梯施工安全技术交底
- 安全围栏检修方案
- 我的家乡课件中班
- 2024永磁外转子 EC 风机系统技术条件
- 2024年下载客运从业资格证模拟考试题库
- 高职高考英语词汇表
- 2024年华东电力设计院限公司校园招聘高频考题难、易错点模拟试题(共500题)附带答案详解
- 常住人口登记表(集体户口)-英文翻译
- 药品经营质量管理规范培训课件
- 《宠物护理与美容技术》课件-染色
评论
0/150
提交评论