




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录一、背景2二、课题组成员及本人任务31.课题组成员32.本人任务3三、需求分析3四、概念结构设计4五、逻辑结构设计5-6六、系统功能设计6-251.系统功能62.程序流图7-83.程序代码9-25七、设计总结26-27八、参考文献27一、背景 学生信息管理系统是高校都必须面对的工作,特别是近几年,随着国家的调整,我国高等院校大面积扩招,给高等院校的教学管理、学生管理、后勤管理等方面都带来了不少的冲击。特别是对于学校的决策者和管理者来说学生信息管理工作是至关重要的,但一直以来人们使用传统的人工方式管理文件档案,这种管理方式存在着许多缺点,如:效率底、保密性差,另外随着学生数量的增加,其工作量也大大增加,这必然增加了学生档案管理者的工作量和劳动程度,同时将产生大量的文件和数据,这给学生信息的查找、更新和维护都带来了不少困难。据调查,目前我国各类高等院校中还有相当一部分学生档案管理还停留在纸介质的基础上,尤其是中、小学对学生档案的管理更是落后,这样的管理机制已经不能适应时代发展的需要,其管理方法将浪费许多人力和物力。随着科学技术的不断提高,计算机科学与技术的不断成熟,计算机应用的普及,计算机已进入人类社会生活的各个领域,并发挥着越来越重要的作用。这种传统的手工管理模式必然被计算机为基础的信息管理方面所取代。作为计算机应用的一部分,使用计算机对学生档案信息进行管理,有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率,也是学校向科学化、正规化管理发展的必要条件,更是各个高等院校与世界接轨的重要条件。因此,开发一套能够为用户提供充足的信息和快捷的查询手段的学生信息管理系统,将是非常必要的,也是十分及时的。借此机会利用以掌握的数据库知识,结合实际应用,开发一个小小的学生信息管理系统,将其作为网络程序设计课程的设计课题。二、 课题组成员及本人任务1、 成员:李慧琴2、 本人任务:学生基本信息的查询及维护;学生成绩的查询及维护;学生所学课程的信息查询与维护;各系信息查询及维护。三、需求分析随着上学期对数据库原理的学习,也经过多方面的参考和分析,我使用了microsoft visual foxpro 6.0编译工具做一个简单的编程,使用它可以建立开发比较完善的数据库操作应用程序,我所选择的是microsoft visual foxpro 6.0来编写一个学生信息管理系统,本系统要求的主要功能是信息的存储、查询和维护,以及实现档案管理和成绩管理等。在本系统中要管理的信息主要有:学生信息、课程信息、成绩信息和各系信息等。因此本系统一共需要3张:学生表、课程表、成绩表和系名表。学生表包括的内容有:学号、姓名、性别、出生日期、政治面貌、籍贯、备注、相片和系号等。课程表包括的内容有:课号、课程号、学时、学分和是否必修棵等。成绩表包括的内容有:学号、课号和成绩等。系名表包括的内容有:系号、系名和联系电话等。在学生表中以学号作为关键字段,保证每个学生的学号是唯一的;程表以课号为关键字,课号要求是唯一的;成绩表包括学号、课号和成绩,通过学号字段与学生表相关联,通过课号与课程表关联;系名表以系号作为关键字,系号要求是唯一的,这是主要的四张数据库表。在数据库的需求分析完成之后。下面来进行数据库概念设计。四、概念结构设计student(学生表)(学号、姓名、性别、出生日期、政治面貌、籍贯、备注、相片、系号)course(课程表)(课号、课程名、学时、学分、是否必修课)depart(系名表)(系号、系名、联系电话)course课程名课号学时学分是否必修课scstudent成绩学号aho 姓名性别出生日期政治面貌籍贯sd备注相片学分系号depart系名联系电话mn1m全局er图五、逻辑结构设计通过上面的分析,本系统需要的数据表有5个:student(学生表)、course(课程表)、depart(系名表)、score(成绩表)和adminer(密码表),分别如表51、52、53、54和55所示。表51学生表结构字段名称数据类型长度排序说明学号字符型10升序主索引姓名字符型10性别字符型10出生日期日期型8政治面貌字符型10籍贯字符型10备注备注型4相片通用型4系号字符型10升序普通索引表52课程表结构字段名称数据类型长度排序说明课号字符型8升序主索引课程名字符型20学时数值型2小数0位学分数值型2小数0位是否必修课字符型2表53系名表结构字段名称数据类型长度排序说明系号字符型2升序主索引系名字符型30联系电话字符型12表54成绩表结构字段名称数据类型长度排序说明学号字符型10升序主索引课号字符型10升序普通索引成绩数值型4小数0位表55密码表结构字段名称数据类型长度排序用户名字符型10密码字符型10er图向关系模型的转换后的关系模式如下:student(学生表)(学号、姓名、性别、出生日期、政治面貌、籍贯、备注、相片、系号)course(课程表) (课号、课程名、学时、学分、是否必修课)score(成绩表) (学号、课号、成绩)depart(系名表) (系号、系名、联系电话)六、 系统功能设计1、系统功能 本系统主要功能分别通过主菜单中的以下各项来实现:(1) 通过“系统”菜单实现重新登陆、密码修改、注册的;(2) 通过“查询”菜单实现对学生信息、课程信息、成绩和各系信息的查询;(3) 通过“维护”菜单实现对学生信息、课程信息、学生成绩和各系信息的添加、修改和删除等操作;(4) 通过“打印报表”实现对学生信息、课程信息、成绩和各系信息的总浏览;(5) 通过“帮助”菜单实现操作提示、版权声明;(6) 通过“退出”菜单退出本系统2、 程序流图系统退出重新登陆封面用户登陆显示菜单(mian) 选择帮助修改密码注册版权声明操作提示查询学生信息查询课程信息查询学生成绩查询各系信息查询各系信息一览表课程信息一览表学生信息一览表打印报表学生成绩表系统退出重新登陆封面用户登陆显示菜单(mian1) 选择帮助修改密码注册版权声明操作提示维护学生信息维护课程信息维护学生成绩维护各系信息维护各系信息一览表课程信息一览表学生信息一览表打印报表学生成绩表封面用户登陆菜单main菜单main13、程序代码(1) 封面(cover.scx)窗体:表单由两个“标签”控件和“两个计时器”组成:1.1在timer1(interval属性值为10000)的timer时间中添加如下响应代码: thisform.releasemessagebox(默认用户名admin,密码admin,0,用户提示)do form password.scx 1.2在timer2(interval属性值为200)的timer时间中添加如下响应代码: if thisform.label2.left+thisform.label2.width0 thisform.label2.left=thisform.widthelse thisform.label2.left=thisform.label2.left-30endifthisform.refresh()(2) 用户登陆(password.scx)窗体: 表单由两个标签控件和两个文本框和两个命令按钮组成:2.1在表单form1的init事件中添加如下响应代码: public n &宣告n为全局内存变量n=0 &设置n的初值为零 2.2在命令按钮“确定”中添加如下响应代码: n=n+1czy=alltrim(thisform.text1.value)mm=alltrim(thisform.text2.value)use adminer &打开事先创建好的管理员表if empty(thisform.text1.value).or.empty(thisform.text2.value) messagebox(用户名或密码不能为空,0,提示) thisform .refresh thisform.text1.value= thisform.text1.setfocus thisform.text2.value= thisform.text2.setfocuselse locate for 注册名=czy &注册名为管理员表中的字段 if found().and.密码=mm &密码也为管理员表中的字段 use thisform.release release n do form choose.scx else if n3 messagebox(用户名不存在或密码不正确,请重新输入!,0,输入错误) thisform.text1.value= thisform.text2.value= thisform.text1.setfocus &把文本框置空 else thisform.release release n clear events endif useendifendif2.3在命令按钮“退出”中添加如下响应代码: close allrelease allthisform.release(3) 选择(choose.scx)窗体表单由两个命令按钮组成:3.1在命令按钮“学生信息查询登陆”中添加如下响应代码: do main.mpr &运行菜单mianthisform.release3.2在命令按钮“学生信息查询维护”中添加如下响应代码 do main1.mpr &运行菜单main1thisform.release(4) 学生信息查询(query.scx)窗体:表单由一个命令按钮、一个组合框和一个表格组成:4.1在form1的init事件中添加如下响应代码: public temp &定义全局变量bo1.additem(学号) &初始化组合框bo1.additem(姓名)bo1.additem(性别)bo1.additem(出生日期)bo1.additem(政治面貌)bo1.additem(籍贯)bo1.value=14.2在命令按钮“查询”添加如下响应代码: if empty(thisform.text1.value) messagebox(查询值不能为空!,0,警告)else if bo1.text=学号 &按学号查询 select * from student; where alltrim(student.学号)=alltrim(thisform.text1.value); order by student.学号; into cursor temp thisform.grid1.recordsource=temp endif if bo1.text=姓名 &按姓名查询 select * from student; where alltrim(student.姓名)=alltrim(thisform.text1.value); order by student.学号; into cursor temp thisform.grid1.recordsource=temp endif if bo1.text=性别 &按性别查询select * from student;where alltrim(student.性别)=alltrim(thisform.text1.value);order by student.学号;into cursor tempthisform.grid1.recordsource=tempendif if bo1.text=出生日期 &按出生日期查询select * from student;where alltrim(student.出生日期)=alltrim(thisform.text1.value);order by student.学号;into cursor tempthisform.grid1.recordsource=tempendif if bo1.text=政治面貌 &按政治面貌查询select * from student;where alltrim(student.政治面貌)=alltrim(thisform.text1.value);order by student.学号; into cursor temp thisform.grid1.recordsource=tempendif if bo1.text=籍贯 &按籍贯查询 select * from student; where alltrim(student.籍贯)=alltrim(thisform.text1.value); order by student.学号; into cursor temp thisform.grid1.recordsource=tempendif endif(5) 课程信息查询(course_q.scx)窗体:表单由一个命令按钮、一个组合框和一个表格组成:5.1在form1的init事件中添加如下响应代码: public temp &定义全局变量bo1.value=15.2在命令按钮“查询”添加如下响应代码:if empty(thisform.text1.value) messagebox(查询值不能为空!,0,警告) thisform.refreshelse if bo1.text=课号 &按课号查询 select * from course; where alltrim(course.课号)=alltrim(thisform.text1.value); order by course.课号; &按课号排序 into cursor temp thisform.grid1.recordsource=temp thisform.refresh endif if bo1.text=课程名 &按课程名查询 select * from course; where alltrim(course.课程名)=alltrim(thisform.text1.value); order by course.课号; into cursor temp thisform.grid1.recordsource=temp thisform.refresh endif if bo1.text=是否必修课 &按课程类型查询 select * from course;where alltrim(course.是否必修课)=alltrim(thisform.text1.value); order by course.课号; into cursor temp thisform.grid1.recordsource=temp thisform.refresh endif if bo1.text=授课老师 &按授课老师查询 select * from course; where alltrim(course.授课老师)=alltrim(thisform.text1.value); order by course.课号; into cursor temp thisform.grid1.recordsource=temp thisform.refresh endif endif(6) 学生成绩查询(score_q.scx)窗体:表单由一个命令按钮、一个组合框和一个表格组成: 6.1在form1的init事件中添加如下响应代码: public temp &定义全局变量bo1.additem(学号)bo1.additem(课号)bo1.value=16.2在命令按钮“查询”添加如下响应代码: if empty(thisform.text1.value) messagebox(查询值不能为空!,0,警告)else if bo1.text=学号 &按学号查询 select * from score; where alltrim(score.学号)=alltrim(thisform.text1.value); order by score.学号; into cursor temp thisform.grid1.recordsource=temp endif if bo1.text=课号 &按课号查询 select * from score; where alltrim(score.课号)=alltrim(thisform.text1.value); order by score.学号; into cursor temp thisform.grid1.recordsource=temp endif endif(7) 各系信息查询(depart_q.scx)窗体:表单由一个命令按钮、一个组合框和一个表格组成:7.1在form1的init事件中添加如下响应代码: public bo1.additem(系号)bo1.additem(系名)bo1.additem(联系电话)bo1.value=17.2在命令按钮“查询”添加如下响应代码: if empty(thisform.text1.value) messagebox(查询值不能为空!,0,警告)else if bo1.text=系号 &按系号查询 select * from depart; where alltrim(depart.系号)=alltrim(thisform.text1.value); order by depart.系号; into cursor temp thisform.grid1.recordsource=temp endif if bo1.text=系名 &按系名查询 select * from depart; where alltrim(depart.系名)=alltrim(thisform.text1.value); order by depart.系号; into cursor temp thisform.grid1.recordsource=temp endif if bo1.text=联系电话 &按联系方式查询 select * from depart; where alltrim(depart.联系电话)=alltrim(thisform.text1.value); order by depart.系号; into cursor temp thisform.grid1.recordsource=temp endif endif(8) 学生信息维护(maintain.scx)窗体:表由一个类和六个命令按钮组成:8.1在form1的init事件中添加如下响应代码: thisform.text2.readonly=.t. &设定文本框的属性为只读thisform.text3.readonly=.t.thisform.text4.readonly=.t.thisform.text5.readonly=.t.thisform.text6.readonly=.t.thisform.text7.readonly=.t.thisform.text8.readonly=.t.thisform.edit1.readonly=.t.thisform.bc.enabled=.f. thisform.refreshuse student.dbf excl &以独占方式打开表8.2在“开始搜索”命令按钮中添加如下响应代码: cz=alltrim(thisform.text1.value)n=recno()go topscan if student.学号=cz.or.student.姓名=cz thisform.text1.value= thisform.text1.setfocus &把文本框的值设空 thisform.refresh return endif endscan messagebox(该学生不存在!,0,查找失败!) go n &将记录指针指向原记录 thisform.text1.value= thisform.text1.setfocus thisform.refresh8.3在命令按钮“添加”中添加如下响应代码: go bottom &指针指到表的最后一条记录tempstr=val(student.学号)append blank &在表的最后添加一条空白记录go bottom &指向当前新增加的记录信息replace student.学号 with alltrim(str(tempstr+1)&设置新记录的主键值,即学生学号thisform.tj.enabled=.f.thisform.xg.enabled=.f.thisform.sc.enabled=.f.thisform.bc.enabled=.t.thisform.text2.readonly=.f.thisform.text3.readonly=.f.thisform.text4.readonly=.f.thisform.text5.readonly=.f.thisform.text6.readonly=.f.thisform.text7.readonly=.f.thisform.text8.readonly=.f.thisform.edit1.readonly=.f.thisform.refresh8.4在命令按钮“修改”添加如下响应代码: thisform.tj.enabled=.f.thisform.xg.enabled=.f.thisform.sc.enabled=.f.thisform.bc.enabled=.t.thisform.text2.readonly=.f.thisform.text3.readonly=.f.thisform.text4.readonly=.f.thisform.text5.readonly=.f.thisform.text6.readonly=.f.thisform.text7.readonly=.f.thisform.text8.readonly=.f.thisform.edit1.readonly=.f.thisform.refresh8.5在命令按钮“删除”中添加如下响应代码: if messagebox(确认要删除此记录吗?,1,确认删除)=1set exclusive on delete pack &把标记从数据库中物理删除set exclusive offendifthisform.refresh8.6在命令按钮“保存”中添加如下响应代码: dimension aaa(8)aaa(1)=thisform.text2.valueaaa(2)=thisform.text3.valueaaa(3)=thisform.text4.valueaaa(4)=thisform.text5.valueaaa(5)=thisform.text6.valueaaa(6)=thisform.text7.valueaaa(7)=thisform.text8.valueaaa(8)=thisform.edit1.value &把表单中所有信息存储到一个数组中replace student.学号 with aaa(1)replace student.姓名 with aaa(2)replace student.性别 with aaa(3)replace student.出生日期 with aaa(4)replace student.籍贯 with aaa(5)replace student.政治面貌 with aaa(6)replace student.系号 with aaa(7)replace student.备注 with aaa(8) &按字段分别替换表中数据信息thisform .refreshthisform.tj.enabled=.t.thisform.xg.enabled=.t.thisform.sc.enabled=.t.thisform.bc.enabled=.f.thisform.text2.readonly=.t.thisform.text3.readonly=.t.thisform.text4.readonly=.t.thisform.text5.readonly=.t.thisform.text6.readonly=.t.thisform.text7.readonly=.t.thisform.text8.readonly=.t.thisform.edit1.readonly=.t.&重新设置表单的文本框为只读,等待下一次操作命令的激发messagebox(数据保持成功,0+64,学生信息管理) 8.7在命令按钮“退出”中添加如下响应代码: close table all &关闭正在使用的表thisform.release(9) 课程信息维护(course_m.scx)窗体:其命令按钮响应代码基本与“学生信息维护窗体”中的相同,这里就不在写出了。 (10) 学生成绩维护(score_m.scx)窗体:其命令按钮响应代码基本与“学生信息维护窗体”中的相同,这里就不在写出了。 (11) 各系信息维护(depart_m.scx)窗体:其命令按钮响应代码基本与“学生信息维护窗体”中的相同,这里就不在写出了。 (12) 密码修改(xgmm.scx)窗体:表单主要两个命令按钮组成:12.1在form1的init事件中添加如下响应代码: public n &宣告n为全局内存变量n=0 &设置n的初值为零12.2在命令按钮“确定”中添加如下响应代码: dimension aaa(1)n=n+1czy=alltrim(thisform.text1.value)mm=alltrim(thisform.text2.value)&打开事先创建好的管理员表locate for 注册名=czy &注册名为管理员表中的字段if found().and.密码=mm &密码也为管理员表中的字段 release n if alltrim(thisform.text3.value)=alltrim(thisform.text4.value) aaa(1)=thisform.text3.value &把表单中所有信息存储到一个数组中 replace adminer.密码 with aaa(1) &按字段分别替换表中数据信息 messagebox(密码修改成功,0+64,学生信息管理) thisform.release else if n3 messagebox(两次密码不一致,修改失败!,0,输入错误) thisform.text1.value= thisform.text2.value= thisform.text1.setfocus else thisform.release release n clear events endif use endifelse if n5.and.len(aaa(2)5 go bottom &指针指到表的最后一条记录 tempstr=val(adminer.注册名) append blank &在表的最后添加一条空白记录 go bottom &指向当前新增加的记录信息 replace adminer.注册名 with alltrim(str(tempstr+1) &设置新记录的主键值 replace adminer.注册名 with aaa(1) replace adminer.密码 with aaa(2) &按字段分别替换表中数据信息 thisform .refresh messagebox(注册成功,0+64,学生信息管理) thisform.releaseelse if empty(thisform.text1.value).or.empty(thisform.text2.value) messagebox(用户名或密码不能为空,0,用户注册) thisform .refresh thisform.text1.value= thisform.text1.setfocus thisform.text2.value= thisform.text2.setfocus else messagebox(用户名或密码长度过短,0+64,学生信息管理) thisform .refresh thisform.text1.value= thisform.text1.setfocus thisform.text2.value= thisform.text2.setfocus endifendif13.3在命令按钮“退出”中添加如下响应代码: thisform.release(14) 操作提示窗体:(15) 版权声明窗体:(16) 类(xsxigl.vcx)代码: 16.1在命令按钮“第一个”中添加如下响应代码: go topthis.parent.syg.enabled=.f.this.parent.xyg.enabled=.t.this.parent.zhyg.enabled=.t.thisform.refresh 16.2在命令按钮“上一个”中添加如下响应代码: skip-1if bof() messagebox(已是第一个记录!,48,信息窗口) this.parent.dyg.enabled=.f. this.parent.syg.enabled=.f. skipelse this.parent.dyg.enabled=.t. this.parent.zhyg.enabled=.t.endif this.parent.xyg.enabled=.t. this.parent.zhyg.enabled=.t. thisform.refresh16.3在命令按钮“下一个”中添加如下响应代码: skipif eof() messagebox(已是最后一个记录!,48,信息窗口) skip-1 this.parent.xyg.enabled=.f. this.parent.zhyg.enabled=.f. else this.parent.xyg.enabled=.t. this.parent.zhyg.enabled=.t. thisform.refreshendif this.parent.dyg.enabled=.t. this.parent.syg.enabled=.t. thisform.refresh16.4在命令按钮“最后一个”中添加如下响应代码: go bottomthis.parent.dyg.enabled=.t.this.parent.syg.enabled=.t.this.parent.xyg.enabled=.f.thisform.refresh(17) 主程序(mian.prg)代码 *main.prgset escape offset talk offset status offset scoreboard offset exact onset safety offset step offset debug offset status offset scoreboard offset escape offset talk offset status offset scoreboard offset exact onset safety offset step offset debug offset status offset scoreboard offset exclusive offset s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司深秋拓展活动方案
- 公司放松娱乐活动方案
- 公司游玩活动策划方案
- 公司节日纪念活动方案
- 公司早会流程策划方案
- 公司直播间灯光策划方案
- 公司组织踢毽子策划方案
- 公司组织慰问活动方案
- 公司花园团建活动方案
- 2025年小学教师资格考试试卷及答案
- 湖北省部分学校2023-2024学年高二下学期期末考试地理试题
- 基于大数据的公路运输碳排放评估与控制
- 叙事护理学智慧树知到期末考试答案章节答案2024年中国人民解放军海军军医大学
- 工业机器人系统操作员国家职业技能考核标准(2023年版)
- 上海学前教育学院附属青浦第二实验幼儿园新生入园登记
- 卡前列素氨丁三醇在产后出血的的应用课件
- 固废危废培训课件
- 水库安保服务方案
- 一例ANCA相关性血管炎患者的护理查房
- 《外科微创技术》课件
- 如何建立与客户良好的关系
评论
0/150
提交评论