还剩35页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
佛山科学技术学院课程设计指导书课程名称____学生成绩管理系统的设计___题 目___学生成绩管理系统的设计___学生姓名________陈劲洪________学 号______309104544009______班 级____09计算机科学与技术______指导教师__________李娅_________目录
1、绪论……………………………………………………………………………………
31.
1.研究课题的背景………………………………………………………………………
31.
2.现有系统存在的问题分析……………………………………………………………
31.
3.系统开发目标与意义……………………………………………………………
41.
3.1系统开发目标……………………………………………………………………
41.
3.1意义………………………………………………………………………………
41.
4.可行性分析………………………………………………………………………
41.
4.1技术上可行性……………………………………………………………………
41.
4.2运行上可行性……………………………………………………………………4
二、需求分析…………………………………………………………………………
52.
1.教育系统学生管理现状系统分析……………………………………………………
52.
1.1学校工作流程分析………………………………………………………………
52.
1.2学校具体需求分析………………………………………………………………
52.
1.3系统设计思想……………………………………………………………………
52.
1.4系统设计分析……………………………………………………………………
62.
1.5系统功能分析……………………………………………………………………
62.
1.6学生学籍系统的目标……………………………………………………………
62.2基于B/S结构技术的应用……………………………………………………………
72.
2.1B/S结构技术发展简述……………………………………………………………
72.
2.2动态网站开发技术比较…………………………………………………………
72.
2.3本系统的开发采用Asp.Net----一种全新的设计模式…………………………
92.
2.4面向对象的开发过程……………………………………………………………10
三、数据库的概念结构模型设计…………………………………………………………
113.
1.数据库的逻辑结构模型设计………………………………………………………………13
四、源程序代码……………………………………………………………………………15
五、参考文献…………………………………………………………………………33
一、绪论本毕业论文是以学校学生管理信息系统建设中的成绩管理系统的开发为背景,论述了管理信息系统的概念、结构及系统开发的基本原理和方法,全文共分为绪论、系统分析、概要设计、详细设计、开发总结、致谢、参考文献、附录等
1.1研究课题的背景随着计算机技术的发展,特别是计算机网络技术与数据库技术的发展,使用人们的生活与工作方式发生了很大的改观网络技术的应用使得计算机之间通信、信息共享成为可能,而数据库技术的应用则为人们提供了数据存储、信息检索、信息分析等功能,从而使得工作更高效地进行数据库始于20世纪60年代,经过40多年的发展,现在已经形成了理论体系,成为计算机软件的一个重要分支数据库技术体现了当代先进的数据管理方法,使计算机的应用真正渗透到国民经济各个部门,在数据处理领域发挥着越来越大的作用而互联网技术的出现,更是进一步丰富的人类生活,数字化生存已经一步步走进我们的生活与工作互联网技术与数据库技术的结合为计算的在人类生活中的应用带来了巨大的影响产业信息化,管理现代化,科学化已经成为行业发展的重要课题,这不仅是企业提高自身竞争力,甚至是国家提高综合国力,走向国民富强的重要手段在我国,教育是一个影响着国富民强的重要行业,随着改革开放和市场经济的发展根据中国特有的国情发展,教育得到了国家的大力扶持与社会各界的高度重视,从而使教育业向规范性与现代化的方向高速发展,但是同发达国家相比,我国的教育行业的信息技术的应用程度还很低,只有在大城市中发展较早、规模较大的院校中才使用计算机进行大规模操作,从各方面提高工作效率,取得良好的社会和经济效益,而一些新兴的、规模较小的教育机构还没有全部具备这种功能因此可见,随着我国教育的迅速发展,信息技术在其上的应用会更加地广泛和深入
1.2现有系统存在问题的分析在我国,各大中小学校的各类信息管理系统并非一个新的课题,但也有的学校根本就没有信息任何管理系统,所有的工作几乎还是手工操作来完成计算机技术在日新月异的发展,但是有的很多学校,特别是在西部贫困地区,学校的种类管理都依然由手工操作来完成,这十分落后,效率极低,成本很大,而且极异出错随着社会的发展,信息化是社会进程的必然趋势,学校管理只有只有快,准,精才能发挥其价值所以机器代替人力是必然的历史发展趋势,只有领导的重视和支持才能从人工操作改为计算机的自动化系统人工操作必将被计算机代替有些学校虽使用了计算机,甚至管理系统,但是仍然存在很多问题,问题一日不解决,效率就一日提不上去还有,有的系统很不完善到处是漏洞,可以说是千疮百孔,这样极不完善的系统对管理来说是没有任何保障的
1.3系统开发目标与意义
1.
3.1系统开发目标本系统是将现代化的计算机技术和传统的教学、教务工作相结合,按照学院的工作流程设计完成的为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标
1.系统应具有实用性、可靠性和适用性,同时注意到先进性
2.对各个数据库进行动态管理,防止混乱
3.能够按照用户选择的不同的条件进行简单查询和复合查询
4.能够对查询结果进行分类汇总,实现报表打印
5.注意数据的安全性,具有数据备份和恢复的功能
6.方便用户的操作,尽量减少用户的操作
1.
3.2意义在各大中小学校,用计算机管理学校的信息已经越来越普遍了用计算机不但可以提高工作效率,而且还节省了许多人力物力,增强了学校资料的安全性提高了学校的管理能力,为此,用计算机来管理学校的信息,是非常必要的
1.4可行性分析可行性研究的目的是用最小的代价在尽可能的时间内确定问题是否能够解决
1.
4.1技术上可行性本系统的开发利用MicrosoftSQLServer2000作为本系统的数据库,它是一个支持多用户的新型数据库,适用于大中规模的数据量需求学校校园网的建设也为新系统服务器/客户端的结构提供了硬件的支持使用VisualStudion.net作为系统开发的开发环境,它提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障为开发满足客户要求的系统,保证了代码的模块化要求,而代码模块化的提高,非常有利于以后对新系统的扩展与修改综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的
1.
4.2运行上可行性本系统为一个小型的学生信息管理系统,所耗费的资源非常的小,学校的电脑无论是硬件还是软件都能够满足条件,因此,本系统在运行上是可行的
二、需求分析21世纪以来,人类经济高速发展,人们发生了日新月异的变化,特别是计算机的应用及普及到经济和社会生活的各个领域使原本的旧的管理方法越来越不适应现在社会的发展许多人还停留在以前的手工操作这大大地阻碍了人类经济的发展为了适应现代社会人们高度强烈的时间观念,学校信息管理系统软件为学校办公室带来了极大的方便
2.1教育系统学生管理现状分析
2.
1.1学校工作流程分析学校工作总体规划由教务人员在学生信息管理系统中完成对运行教务处所需的基本数据的维护,包括这些信息的增加、修改及对各项信息的变动都将在这进行操作新的学年,教务人员首先加入年级信息,然后编排班级,再对来校学生进行基本的信息录入,新生入学后由教务人员在学籍系统中完成新学生信息的维护在每个学期开始,教务处根据班级的情况,以班为单位,为每个班级安排一个班主任及对此年级安排一个年级组长并对各科老师进行安排每举行一次考试后由任课老师对成绩进行录入班主任对本班的成绩汇总并进行排名,然后年级组长再进行汇总,并对本年级各科成绩及总成绩进行排名教务处、年级组长、班主任及任课老师跟据实际情况对录入的成绩进行维护,各位同学对以上录入的信息可以跟据自己的需要进行适当的查询
2.
1.2学校具体需求分析学生对各科成绩的查询及查看本班成绩排名等情况任课老师输入并维护所教科目的学生成绩,计算本科的成绩排名、本科成绩在班上的排名输出本班科目的成绩及排名情况班主任输入并维护本班的基本信息,对本班的各科成绩汇总,计算各科成绩的总分,排名,本班平均分等需求输出学生的基本信息,各科的成绩及各科成绩的部分,各科成绩的排名,总分的排名情况教务处学校全体成员的信息管理,对考试科目,时间及对所考科目的编号等进行具体的管理,并对任课老师,班主任等输入的信息进行存库,对学生的信息进行必要的维护,可打印学生的所有信息
2.
1.3系统设计思想
1、采用现有的资源,先进的管理系统开发方案,充分利用学校现有的资源,减少开发中的时间和财力、物力、提高系统开发的水平和应用效果
2、系统就满足学校的需求,例如学生信息的录入、查询、更新等学生录入与排名
3、系统就具备数据库维护功能,及时根据用户需求进行数据添加、删除、修改等操作
2.
1.4系统设计分析本系统适用于中小学校,其功能主要分为六大类用户管理用于对用户的添加,赋于不同权限及对用户的修改及查询课程管理用于对各学期课程的开设和修改成绩管理用于对成绩的输入、修改、汇总及排名学生信息管理添加,删除,修改学生信息等授课信息管理:对授课教师,课程号,学时数,班级等信息的添加,维护等学生信息查询:对学生成绩等信息的查询,查询方式为模糊,且具有多条件组合查询功能学生成绩统计:统计本科的总分平均分等信息本系统性能力求易于使用,具体有较高的扩展性和可维护性
2.
1.5系统功能分析权限功能系统具有动态的权限分配功能,可按用户权限对用户进行分组可分为普通用户,一般用户,超级用户普通用户只是查询不能修改,一般用户只能对授权范围内进行相应修改及删除,超级用户能修改、删除所有信息录入功能为一般用户提供相应的录入功能,为超级用户提供对所有信息的录入功能查询功能为所有用户提供查询的功能,可查询允许范围内的所有信息维护功能为一般用户提供查询及相应的修改,删除功能,为超级用户提供对所有信息的修改删除功能退出功能结束并关闭系统
2.
1.6学生学籍系统的目标节约资源,提高学籍信息的精确度本系统能减少很多不必要的资源,不用象以前那样用冗余的纸张式的管理大节省了学校能源并且计算机的存储与快速查询功能大大提高了学籍管理的效率,并且还提高了学籍信息管理的精确度方便快速操作,精减人员,节约开支方便快速的操作,可减少学籍信息管理的漏洞,又减少因工作的冗余出现的错误,并且操作非常简单,可减少许多不很必要的人员,这无论从物质上还是工作人员的工资上都为学校节约了开支为学校增加了财富数据库分析用户需求具体有学籍管理系统提供保存、更新、查询、维护和打印,这就需求数据库结构能充分满足各种信息的输入与输出,实现有组织地、动态地存储大量关联数据,方便用户访问系统中的数据,它与文件系统的重要区别是数据的充分共享,交叉访问,与应用程序的高度独立性
2.2基于B/S结构技术的应用
2.
2.1B/S结构技术发展简述随着IT技术的高速发展互联网几乎已经渗透到人们生活的每一个角落而网络技术与数据库技术的应用,则大大改变的人们的学习、生活与工作的方式提高并丰富了人类生活互联网的发展应用促使网页技术的产生但在不久后,人们对静态页面并不满足,随后出现了采用CGICommonGatewayInterface通用网关接口和ISAPIInternetServerApplicationProgramInterface互联网服务器应用程序接口来编写网页,但它们的编程比较复杂,用Perl或者是VC进行编写,将HTML标识嵌入代码中,维护相当困难此后,随着技术日新月异的发展,相断出现了ASPPHPJSP等网站开发技术,它们给网站开发带来了一阵狂潮ASP是一个Web服务器端的开发环境,利用它可以产生和执行动态的、互动的、高性能的Web服务应用程序,ASP支持VBScriptJavaScript等多种脚本语言PHP是一种跨平台的服务器端嵌入式脚本语言其大量地借用CJava和Perl语言的语法,并耦合PHP自身的特性,使Web开发者能够快速地生成动态页面,PHP是完全免费的,而且可以不受限制地获得源代码,甚至可以按用户需要进行个性化设计JSP是Sun公司推出的新一代网站开发语言,具有很强的多平台支持和极大的伸缩能力,JSP可在Serverlet和JavaBean的支持下,建立功能强大的Web应用程序在推出ASP之后,微软于1998年又发布了ASP
2.0,其与ASP
1.0的主要区别是ASP
1.0外部的组件需要实例化在这之后,Microsoft又推出了ASP.Net,它并不是ASP的简单升级,而是全新的一个动态网页实现体系ASP.Net是微软发展的新的体系结构.NET的一部分,其策略是将互联网本身作为构建新一代操作系统的基础,对互联网和操作系统的设计思想进行合理延伸,这样开发将可创建出摆脱设备硬件束缚的应用程序,轻松实现互联网连接
2.
2.2动态网站开发技术比较现在,在互联网中流行着多种动态网页实现技术,例如ASP、JSP、CGI、PHP等对应于这些动态网页技术,也存在有多种多样的Web服务器系统,例如MicrosoftIIS、Apache、ColdFusion等而对于这些实现动态网页的技术,ASP.NET技术可以说是现在最为流行和应用最为广泛的一种ASP.NET向世界展现了一种更为领先的技术,这正是它推出不久就深受开发人员青睐的原因WEB开发与数据库是密不可分的目前流行的数据库有Microsoft公司的SQLServer2003,IBM公司的DB2,开源的MySQL,以及Oracle公司的Oracle9i等在ASP.NETWeb开发最受青睐的是Microsoft公司的SQLServer2003动态网站语言及技术比较:1ASPJSPPHP共同点都提供在HTML代码中混合某种程序代码,由语言引擎解释执行程序代码的能力在这种方式下,HTML代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑普通的HTML页面只依赖于Web服务器,而ASPPHPJSP页面则需要附加的语言引擎分析和执行程序代码程序代码的执行结果被重新嵌入到HTML代码中,然后一起发送到浏览器都是面向WEB服务器的技术,客户端浏览器不需要任何附加的软件支持2ASPJSPPHP的平台支撑区别ASP是微软公司开发的动态网页语言,也继承了其产品一贯的传统,只能执行于微软的服务器产品IIS或者PWS上虽然在UNIX下也有ChiliSoft的组件来支持ASP,但是因为ASP本身的功能有限,所以必须通过ASP+COM的群组合来扩充PHP3可以在Windows,UNIX,Linux的WEB服务器上正常运行,还支持IISApache等一般的Web服务器,有相当好的跨平台性JSP与ASP在技术方面有很多相似之处,都是基于WEB应用实现动态交互网站的技术环境,但也有很多不同之处,两者的本质区别在于来源于不同的技术规范组织,其实现的基础――Web服务器平台要求不同JSP技术基于平台和服务器的相互独立,技术支持由广泛的,专门的各种工具包,服务器的组件和数据库产品开发商提供,相比之下,ASP技术则主要是靠Microsoft的支持Jsp可支持任何Web服务器,包括ApacheIIS等,并技术绝大多数的流行平台,包括Solaris操作系统,Windows操作系统,MACOS,Linux及其他NUIX系列平台3ASPJSPPHP的应用情况PHP存在着缺乏规模支持,缺乏多层结构和提供的数据库接口支持不统一等缺点,因此PHP不适合应用于大型电子商务站点或者大型的基于B/S结构的应用程序,其适合应用在一些小型的商业站点ASP和JSP则没有以上缺陷,ASP可通过COM/DCOM获得ActiveX规模支持,通过DCOM和TransactionServer获得结构支持;JSP则可通过JavaClass和EJB获得规模支持,通过EJB/CORBA以及众多厂商的ApplicationServer获得结构支持目前国内ASP与PHP应用最为广泛,尤其是ASP而JSP则在国外非常流行,国外电子商务类的网站许多都采用JSP4ASP.Net-----全新的Web开发理念与技术由于ASP的核心编辑语言为VBScript或JavaScript等脚本语言,这决定了ASP先天不足,它无法进行象传统编程语言那样的底层操作,所以如果需要进行一些诸如socket,文件等的操作时不得不借助于其它传统语言而PHP则存在着缺乏规模支持,缺乏多层结构和提供的数据库接口支持不统一等缺点,只适合应用于一些小型商务网站或者业务处理系统另外,ASP与PHP等都属于解释型的编辑架构,其运行是边解释边执行的,因此在运行效率上会有很大的损失所以,在开发本系统的时候,我选择了微软新一代的Web开发技术――ASP.NetASP.Net有以下几个重要的优点1强大的动态Web支持ASP虽有较大的灵活性,但效率不高,且缺乏面向对象的设计,从页导致ASP代码比较凌乱,开发维护都相对困难ASP.Net为Web页面提供了一种集成式的支持使用ASP.Net,可以编译页面中的代码,而这些代码可以运用高级语言来编写,因此易于实现并有较高的运行效率2高效的数据访问技术ASP.Net中可以运用ADO.NETADO.NET提供了对关系数据库和各种数据源的高效访问这些组件甚至可以访问文件系统和目录另外,.Net内置了XML的支持,可以处理从非Windows平台导入或者导出的数据3代码共享ASP.Net沿用.Net中引入的程序集概念,替代了传统的DLL,可较好的实现代码在应用程序之间的共享方式4面向对象的编程ASP.Net处于.NETFramework中,.NETFramework及其推荐采用的语言C#是完全基于面向对象的5语言的无关性在.NET中,VB.Net,C#,J#和ManagedC++等语言都可以编译为通用的中间语言IL这说明语言可以用从前未有的方式交互操作6增强的安全性每个程序集可以包含内置的安全信息,这样就可以非常准确的控制程序集的使用方式7可运用C#C#是.Net的一种面向对象的新语言这种企业编程语言带有下一代编程语言服务运行时NGWSRuntime NGWSRuntime是一个不仅管理执行代码、同时也提供使编程更加容易的动态环境.编译器产生受管代码以指向这种受管理执行环境.你获得跨平台语言集成、跨平台语言异常处理、增强安全性、版本控制、安排支持和查错服务.支持NGWSRuntime的主要语言是C#.支持NGWS框架的很多程序是用C#写的C#语言借鉴了C++但是具备现代化和新增的类型安全——使C#成为企业解决方案的首选语言.在企业计算领域C#将会变成为用于编写下一代窗口服务NextGenerationWindowsServices简写为NGWS应用程序的主要语言.基于C#具有如此多的优良特性,而且又是.net开发的首选语言,因此,在开发本系统时我选择了它作为开发语言
2.
2.3本系统的开发采用Asp.Net----一种全新的设计模式Asp.net之三层WEB结构及其优点三层模式是在两层模式的基础上,增加了新的一级这种模式在逻辑上将应用功能分为三层客户显示层、业务逻辑层、数据层客户显示层是为客户提供应用服务的图形界面,有助于用户理解和高效的定位应用服务,负责处理用户的输入和向用户的输出,但并不负责解释其含义出于效率的考虑,它可能在向上传输用户输入前进行合法性验证,这一层通常用前端工具VB,VC,ASP等开发;业务逻辑层位于显示层和数据层之间,专门为实现企业的业务逻辑提供了一个明确的层次,在这个层次封装了与系统关联的应用模型,并把用户表示层和数据库代码分开其主要功能是执行应用策略和封装应用模式,并将封装的模式呈现给客户应用程序,它是上下两层的纽带,它建立实际的数据库连接,根据用户的请求生成SQL语句检索或更新数据库,并把结果返回给客户端,这一层通常以动态链接库的形式存在并注册到服务器的注册簿Registry中,它与客户端通讯的接口符合某一特定的组件标准如COM,CORBA,可以用任何支持这种标准的工具开发;数据层是三层模式中最底层,他用来定义、维护、访问和更新数据并管理和满足应用服务对数据的请求三层模式的主要优点为
①良好的灵活性和可扩展性对于环境和应用条件经常变动的情况,只要对应用层实施相应的改变,就能够达到目的
②可共享性单个应用服务器可以为处于不同平台的客户应用程序提供服务,在很大程度上节省了开发时间和资金投入;
③较好的安全性在这种结构中,客户应用程序不能直接访问数据,应用服务器不仅可控制哪些数据被改变和被访问,而且还可控制数据的改变和访问方式
④增强了企业对象的重复可用性“企业对象”是指封装了企业逻辑程序代码,能够执行特定功能的对象随着组件技术的发展,这种可重用的组件模式越来越为软件开发所接受
⑤三层模式成为真正意义上的“瘦客户端”,从而具备了很高的稳定性、延展性和执行校率
⑥三层模式可以将服务集中在一起管理,统一服务于客户端,从而具备了良好的容错能力和负载平衡能力 ASP.Net的运用可以轻松地使用近年流行的三层结构模式开发WEB站点或基于B/S结构的应用程序它可以使程序具有更好的扩展性,灵活性,安全性,平台无关性以及可维护性ASP.Net的三层结构开发方法思想与Java类似:Java中的三层架构为前端的HTMLJSPServerlet,中间层为JavaBeanEJB,后面为数据器库服务器而在ASP.Net中,前端为HTMLaspaspx等,中间层为扩展名是.vb.cs等文件编译而成的.dll控件,后面为数据库服务器多层结构的应用正是在对C/S结构的总结基础上产生的,并且也已经扩展到了B/S应用开发领域学生成绩管理信息系统是由Web后台进行统一管理,所有业务逻辑都集中在Web应用程序中管理和制定,具有数据的录入和查询统计等功能,客户端的分布广泛,数据集中处理,因此在设计时充分考虑各种体系结构的优缺点,选择三层WEB模式进行开发实现
2.
2.4面向对象的开发过程面向对象的软件开发和相应的面向对象的问题求解是当今计算机技术发展的重要成果和趋势之一,C#是一种面向对象的语言面向对象编程具备了几个优点,比如代码维护方便、可扩展性好、支持代码重用技术等等这些优点是过程编程语言所不具备的下面我们就来谈谈面向对象技术的这些优点1可管理性维护简单对于面向过程的开发来说,版本管理主要是管理函数以及全程变量而函数可以有很大的变动同样全程变量也可以有较大的变动但是对于面向对象程序设计来讲一个系统是有对象来组成的而对象是由类生成的因此只需管理类就行一个系统中类是相对稳定的因此便于管理.2模块化是面向对象编程中的一个特征实体被表示为类和同一名字空间中具有相同功能的类,我们可以在名字空间中添加一个类而不会影响该名字空间的其他成员3可扩充性是对现代应用软件提出的又一个重要要求即要求应用软件能够很方便容易的进行扩充和修改这种扩充和修改的范围不但涉及到软件的内容也涉及到软件的形式和工作机制.面向对象编程从本质上支持扩充性如果有一个具有某种功能的类,就可以很快地扩充这个类,创建一个具有扩充的功能的类面向对象的程序设计可以用很好的可扩充性.这是由于类可以根据人对事物的理解而进行丰富没有必要进行作大的改动可以利用继承对新的类添加属性和方法.用它可以生成系统的简单雏形在征求用户的意见在加入新的类以及类的方法与属性等.4代码重用可重用性是面向对象软件开发的一个核心思路.面向对象程序设计的抽象封装继承多态的四大特点都无一例外或多或少的围绕着可重用性这个核心并为之服务.由于功能是被封装在类中的,并且类是作为一个独立实体而存在的,提供一个类库就非常简单了事实上,任何一个.NETFramework编程语言的程序员都可以使用.NETFramework类库,.NETFramework类库提供了很多的功能更令人高兴的是,我们可以通过提供符合需求的类来扩充这些功能可重用性体现在两个方面:1开发的类可以被别人以及别的项目使用2由于可以继承因此可以实现代码级的重用.
三、数据库的概念结构模型设计概念设计用来反映现实世界中的实体、属性和他们之间的关系等的原始数据形式,建立数据库的每一幅用户视图学生成绩管理系统分为七大实体(模块),七个实体包括各属性,如下图是各系统模块的E—R图*用户*学生*教师*班级*课程*学生-课程*教师-课程
3.1数据库的逻辑结构模型设计数据库的逻辑设计是将各局部的E—R图进行分解、合并后重新组织起来形成的数据库的全局逻辑结构,包括所确定的关键字和属性、重新确定的记录结构、所建立的各个数据之间的相互关系本系统的数据库表如下*用户信息表名称字段名称类型长度允许空用户IDuser-idvarchar50no用户登陆密码user-passwordvarchar50yes用户身份user-powerint4yes*学生信息表名称字段名称类型长度允许空学生学号sidvarchar50no学生姓名snamevarchar50yes学生性别ssexchar10yes学生所在班级号sclaidvarchar52yes学生入学时间stimevarchar50yes*教师信息表名称字段名称类型长度允许空教师号Tidvarchar50no教师姓名Tnamevarchar50yes教师所在院系Tcolvarchar50yes*班级信息表名称字段名称类型长度允许空班级号Cidvarchar50no班级名称Cnamevarchar50yes班级所在系Cdepvarchar50yes班级所在院Ccolvarchar50yes*课程信息表名称字段名称类型长度允许空课程号cridvarchar50no课程名crnamevarchar50yes课程学时crperint4yes课程学分crcreint4yes课程类型crkindvarchar50yes*学生-课程信息表名称字段名称类型长度允许空学生-课程IDSCidint4no学生学号Sidvarchar50yes学生所学课程号Cridvarchar50yes学生成绩Scoreint4yes年度CRyearchar10yes*教师-课程信息表名称字段名称类型长度允许空教师号Tidvarchar50no年度Cyearchar10yes教师-课程IDTCidvarchar50yes教师所教课程号Cridint4yes
四、源程序代码#include#include#include#include#includeusingnamespacestd;structNode//定义链表结点{char*class_0;//班级intnumber;char*name;//姓名floatelec;//电子技术成绩floatc_prog;//C程序设计成绩floatmedia;//多媒体技术成绩floateng;//大学英语成绩floatmath;//高等数学成绩floatsport;//大学体育成绩floatpolity;//马克思主义政治经济学成绩floatave;//平均成绩intorder;//名次Node*link;Node{link=NULL;}Nodeint_numberchar*_class_0char*_namefloat_elecfloat_c_progfloat_mediafloat_engfloat_mathfloat_sportfloat_polityfloat_aveint_orderNode*next{number=_number;class_0=newchar
[21];strcpyclass_0_class_0;name=newchar
[9];strcpyname_name;elec=_elec;c_prog=_c_prog;media=_media;eng=_eng;math=_math;sport=_sport;polity=_polity;ave=_ave;order=_order;link=next;}~Node{删除[]class_0;删除[]name;}};classStudentScore{private:Node*first;//链表的头指针intchoice;//选择数据的读入方式intfileNum;//当前文件数减一intfileLoc;//定位当前文件string*fileName;intoperChoice;intRecordLength;public:StudentScore;voidSave;voidBuildList;//手工建立成绩链表voidReadInfointk;//从内存中读入学生信息voidClearList;voidStatistic;voidSort;voidAdd;void删除;voidPrintList;voidMenu;};StudentScore::StudentScore{RecordLength=0;operChoice=0;first=NULL;choice=0;fileLoc=0;fileNum=0;fileName=newstring
[10];//最多可以存10个文件}intGetOrderNode*firstfloatave;voidStudentScore::BuildList{int_number;//学号char*_class_0=newchar
[21];//班级char*_name=newchar
[9];//姓名float_elec;//电子技术成绩float_c_prog;//C程序设计成绩float_media;//多媒体技术成绩float_eng;//大学英语成绩float_math;//高等数学成绩float_sport;//大学体育成绩float_polity;//马克思主义政治经济学成绩float_ave;//平均成绩int_order;//名次charc;Node*p*r=NULL;first=NULL;cout您要输入学生成绩信息ENDL;whilec=getchar==n;whiletolowerc!=n{cin_class_0;//班级cin_number;cin_name;//姓名cin_elec;cin_c_prog;cin_media;cin_eng;cin_math;cin_sport;cin_polity;_ave=_elec+_c_prog+_media+_eng+_math+_sport+_polity/7;//求得平均成绩_order=GetOrderfirst_ave;p=newNode_number_class_0_name_elec_c_prog_media_eng_math_sport_polity_ave_orderNULL;//建立一个新的结点储存信息iffirst!=NULLr-link=p;elsefirst=p;r=p;RecordLength++;cout您要输入学生成绩信息ENDL;whilec=getchar==n;}}intGetOrderNode*firstfloatave//名次记录有严重问题{intorder=1;Node*temp=first;for;temp;temp=temp-link{iftemp-aveaveorder++;iftemp-aveorder++;}returnorder;}voidStudentScore::Statistic{Node*temp=first;floata_elec=
0.0;//电子技术成绩floata_c_prog=
0.0;//C程序设计成绩floata_media=
0.0;//多媒体技术成绩floata_eng=
0.0;//大学英语成绩floata_math=
0.0;//高等数学成绩floata_sport=
0.0;//大学体育成绩floata_polity=
0.0;//马克思主义政治经济学成绩inti=0;whiletemp{a_elec+=temp-elec;a_c_prog+=temp-c_prog;a_media+=temp-media;a_eng+=temp-eng;a_math+=temp-math;a_sport+=temp-sport;a_polity+=temp-polity;i++;temp=temp-link;}a_elec=a_elec/i;a_c_prog=a_c_prog/i;a_media=a_media/i;a_eng=a_eng/i;a_math=a_math/i;a_sport=a_sport/i;a_polity=a_polity/i;cout电子技术平均成绩为A_ELECENDL;coutc程序设计平均成绩为A_C_PROGENDL;cout多媒体技术平均成绩为A_MEDIAENDL;cout英语平均成绩为A_ENGENDL;cout高等数学平均成绩为A_MATHENDL;cout体育平均成绩为A_SPORTENDL;cout政治平均成绩为A_POLITYENDL;}voidStudentScore::删除{intstudNum;Node*p;Node*temp=first;cout请输入要删除的学生学号ENDL;cinstudNum;floataverage;for;temp;temp=temp-link{coutnumber;iftemp-number==studNum{average=temp-ave;iftemp==first//说明是第一次{first=first-link;删除temp;break;//如果不跳出的话temp=temp-link会出错}else{p-link=temp-link;删除temp;break;}}p=temp;RecordLength--;}//下面修改学生排名temp=first;for;temp;temp=temp-linkiftemp-aveorder--;}voidStudentScore::Add{int_number;//学号char*_class_0=newchar
[21];//班级char*_name=newchar
[9];//姓名float_elec;//电子技术成绩float_c_prog;//C程序设计成绩float_media;//多媒体技术成绩float_eng;//大学英语成绩float_math;//高等数学成绩float_sport;//大学体育成绩float_polity;//马克思主义政治经济学成绩float_ave;//平均成绩int_order;//名次charc;Node*p*r=NULL;r=first;whiler-linkr=r-link;//first=NULL;cout您要输入学生成绩信息ENDL;whilec=getchar==n;whiletolowerc!=n{cin_class_0;//班级cin_number;cin_name;//姓名cin_elec;cin_c_prog;cin_media;cin_eng;cin_math;cin_sport;cin_polity;_ave=_elec+_c_prog+_media+_eng+_math+_sport+_polity/7;//求得平均成绩//写一个返回排名的程序_order=GetOrderfirst_ave;p=newNode_number_class_0_name_elec_c_prog_media_eng_math_sport_polity_ave_orderNULL;//建立一个新的结点储存信息iffirst!=NULLr-link=p;elsefirst=p;r=p;RecordLength++;cout您要输入学生成绩信息ENDL;whilec=getchar==n;}}voidStudentScore::Sort//简单bubble排序从高分到低分排序{inti=0;Node*temp=first;Node*before;//Node*p=first;for;temp-link;{iftemp-avelink-ave{iftemp==first//说明是第一个结点{first=first-link;//p=temp;//temp=temp-link;temp-link=temp-link-link;first-link=temp;before=first;}else//不是第一个结点{before-link=temp-link;temp-link=temp-link-link;before-link-link=temp;before=before-link;}}else{temp=temp-link;}i++;//计算次数}for;i0;i--{temp=first;forintj=0;jI;J++{iftemp-avelink-ave{coutsmall!ENDL;iftemp==first//说明是第一个结点{first=first-link;//p=temp;//temp=temp-link;temp-link=temp-link-link;first-link=temp;before=first;}else//不是第一个结点{before-link=temp-link;temp-link=temp-link-link;before-link-link=temp;before=before-link;}}else{temp=temp-link;}}}}/*boolIsSortedNode*first{for;first;first=first-linkiffirst-avelink-avereturnfalse;returntrue;}*/voidStudentScore::PrintList//打印链表程序{coutThelistcontains:ENDL;Node*temp=first;for;temp;temp=temp-link{coutclass_0nameENDL;coutorderENDL;}}voidStudentScore::ClearList//清除链表{Node*p=newNode;whilefirst{p=first-link;删除first;first=p;}}//读函数voidStudentScore::ReadInfointk//读第k个文件的信息存入链表{//intwordLength;//记录子段长度int_number;//学号char*_class_0=newchar
[21];//班级char*_name=newchar
[9];//姓名float_elec;//电子技术成绩float_c_prog;//C程序设计成绩float_media;//多媒体技术成绩float_eng;//大学英语成绩float_math;//高等数学成绩float_sport;//大学体育成绩float_polity;//马克思主义政治经济学成绩float_ave;//平均成绩int_order;//名次Node*p*r=NULL;first=NULL;ifstreamInfilefileName[k].c_str;if!Infile{coutfileisnotpresent!ENDL;return;}InfileRecordLength;coutRECORDLENGTH;forinti=0;iRECORDLENGTH;I++{Infile_class_0;//班级//cout_class_0;Infile_number;Infile_name;//姓名Infile_elec;Infile_c_prog;Infile_media;Infile_eng;Infile_math;Infile_sport;Infile_polity;Infile_ave;Infile_order;_ave=_elec+_c_prog+_media+_eng+_math+_sport+_polity/7;//求得平均成绩//写一个返回排名的程序_order=GetOrderfirst_ave;p=newNode_number_class_0_name_elec_c_prog_media_eng_math_sport_polity_ave_orderNULL;//建立一个新的结点储存信息iffirst!=NULLr-link=p;elsefirst=p;r=p;}}voidStudentScore::Save{stringtempName;cout请输入将要保存的文件名ENDL;//要判断是否跟现有文件重名cintempName;ofstreamsavefiletempName.c_str;//要做一个转换Node*temp=first;savefileRECORDLENGTHENDL;for;temp;temp=temp-link{savefileclass_0numbernameelecc_progmediaengmathsportpolityaveorderENDL;}savefile.close;//读取文件表信息ifstreamReadfileinfoFileRecord.txt;ReadfileinfofileNum;forinti=0;iFILENUM;I++ReadfileinfofileName[i];Readfileinfo.close;fileNum++;fileName[i]=tempName;//修改文件表信息ofstreamchangefileFileRecord.txt;changefileFILENUMENDL;fori=0;iFILENUM;I++changefileFILENAME[I]ENDL;changefile.close;}voidStudentScore::Menu{cout请您选择数据的读入方式ENDL;cout1重新手动建立一份新的数据表ENDL;cout2从文件中读入数据ENDL;cout请选择;cinchoice;ifchoice==1{BuildList;}ifchoice==2{cout当前有如下文件,请选择读入文件ENDL;ifstreamfileRecordfileRecord.txt;if!fileRecord{coutfileRecordisnotpresent!ENDL;return;}fileRecordfileNum;cout当前有FILENUM个文件ENDL;forinti=0;iFILENUM;I++{fileRecordfileName[i];coutFILENAME[I];cinfileLoc;ReadInfofileLoc-1;PrintList;}cout请选择您需要的操作ENDL;cout1统计学生各科成绩ENDL;cout2删除某个学生成绩记录ENDL;cout3增加某个学生成绩记录ENDL;cout4在链表中为所有学生成绩记录排序ENDL;cinoperChoice;ifoperChoice==1Statistic;ifoperChoice==2删除;ifoperChoice==3Add;ifoperChoice==4Sort;Save;ClearList;}intmain{cout//////////////////////////////////ENDL;cout欢迎使用学生成绩管理系统!ENDL;cout//////////////////////////////////ENDL;coutENDL;coutENDL;StudentScores;s.Menu;return0;}
五、参考文献
[1]孙春来韩正清等《VisualFoxPro
6.0中文版编程基础与范例》电子工业出版社出版日期:2001-1-1
[2]知寒工作室《中文VisualFoxPro6简明案例教程》机械工业出版社出版日期:1999-4-1
[3]徐建平赵永《VisualFoxPro6基础教程》机械工业出版社出版日期:2000-5-1
[4]张鲁《VisualFoxPro
6.0编程技巧与实例分析》水利水电出版社出版日期:1999-10-1
[5]张磊等《VisualFoxPro6使用详解》机械工业出版社出版日期:1999-7-1
[6]康耀红黄健青等《VisualFoxPro
6.0数据库设计》北京大学出版社出版日期:2002-2-1
[7]郑刚《VisualFoxPro
6.0实效编程百例》人民邮电出版社出版日期:2002-7-1
[8]周兰文《VisualFoxPro6中文版与上机指导》清华大学出版社出版日期:1999指导教师签名日期年月日系主任审核日期年月日用户身份用户登陆密码用户ID用户学生性别学生学号学生姓名所在班级(院系)号学生入学时间所在院系教师姓名教师号教师班级所在院班级所在系班级名称班级号班级课程学分课程名课程号课程课程学时课程类型学生成绩学生所学课程学生学号学生-课程ID学生-课程教师课程ID年度所教课程教师号教师-课程。