版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE1摘要通过本课程设计,使自己更加系统地理解和掌握数据结构的基本概念;能自如地根据实际要求,设计相应的数据结构,并运用java语言和SQL语言实现所设计的算法,编写较大型的程序,分析和解决实际应用问题,进一步加深、巩固所学专业课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。掌握java语言或sqlserver语言独立的编写、调试应用程序和进行其它相关设计的技能。此项目主要是考察我们对结构体、数组、文件等具体操作,以及对java语言语法的掌握,所以做成此项目要求比较高的设计要求,对整体有很熟悉的概括,同时调试过程也是很重要的,对程序界面的要求也比较高,要设计的合理同时也要美观一点,能够人性化的描述清楚你的各个功能,一目了然,对其他用户使用本程序简单易懂,这才能成本程序或本系统是成功的。对于学生成绩管理系统,此项目每年都有学生去做,但是能够在其他项目中脱颖而出,还要有自己的设计特色,用简单的语言详细描述系统的功能,这才是关键。这个设计能够练习我们的理解和运用结构化程序设计的思想和方法,掌握开发一个小型实用系统的基本方法,学会调试一个比较长的程序的基本方法,同时掌握书写程序设计开发文档的能力。【关键词】java项目SQL学生成绩管理系统 Title:Studentachrevementmanagementsystem
AbstractThroughthecurriculumdesign,makethemselvesmoresystematicallyunderstandandmasterthebasicconceptsofdatastructures;freelyaccordingtotheactualrequirements,thedesignofthecorrespondingdatastructure,andusesJavalanguageandSQLlanguageimplementationofthealgorithm,writteninrelativelylargeprogram,analyzeandsolvethepracticalproblems,deepenfurther,consolidatetheprofessionalcurriculumofbasictheoreticalknowledge,linkingtheorywithpractice,tofurtherdeveloptheircomprehensiveabilitytoanalyzeandsolveproblems.MastertheJavalanguageorSQLserverlanguageindependentcompilation,debuggingapplicationsandotherrelateddesignskills.Thisprojectismainlytoinvestigateourstructure,array,documentsandotherspecificoperations,aswellasontheJavalanguagegrammar,somakethisprojectrequiresrelativelyhighdesignrequirement,onthewholeareveryfamiliargeneralizations,andthedebuggingprocessisveryimportant,theprograminterfacerequirementsarerelativelyhigh,todesignreasonablebutalsoa,tohumanizeddescriptionclearlyyoueachfunction,stickoutamile,forotherusersofthisprocedureissimpletounderstand,thiscanthecostofprocedureorthesystemissuccessful.Forstudentachievementmanagementsystem,theprojecteachyeartherearestudentstodo,butinotherprojectstalentshowingitself,butalsohasitsowncharacteristicsofthedesign,usingsimplelanguagetodescribeindetailthefunctionofthesystem,thisisthekey.Thisdesigncanbeusedtopracticeourunderstandinganduseofstructuredprogramdesignthinkingandmethods,masterdevelopmentofapractical利用结构化分析和UML中的用例从大到小、从粗到细进行系统建模。1.2.2组织结构调查系统的组织结构,反映了单位内部各个部门的职责划分和它们之间的关系。为了对系统有一个全貌性的了解,首先要对系统内部部门结构、人员组织及用户情况有所了解。对系统组织结构的调查,是从总的方面对系统进行宏观了解和分析。信息的流动关系是以组织结构为背景的,而且总是伴随着组织部门之间的资金流和物流的传递而产生。学生成绩查询系统的组织结构图如下:学生成绩查询系统学生成绩查询系统学生查询教师查询管理员管理单科查询总分查询平均分查询查询所有人的成绩按照学生学号查询学生成绩插入成绩删除成绩修改成绩添加学生添加教师删除学生删除教师所有成绩查询用户登录图1-1学生成绩查询的组织结构1.2.3系统需求分析此系统需要实现的功能如下:A.按照教师,学生,管理员三种角色设计系统功能。B.学生成绩查询(学生):查询自己每门课的成绩,单科成绩,成绩平均分,成绩总分。C.学生成绩查询(教师):登记,修改,删除某班某个学生的成绩,可以一次输入入某班全部学生的成绩。D.管理员查询(管理员):登记,对学生,老师进行管理,可以添加某个学生,删除某个学生,添加某个老师,删除某个老师。1.2.4系统用户分析“学生信息查询系统”主要是针对学生和教师查询工作而开发的应用软件。通常有系统管理员、教师和学生三种用户,他们的使用权限如下:系统管理员:计算机人员,对系统、数据库进行维护,主要对不同人员赋予不同的权限。教师:对学生的成绩进行查询,增加,修改。学生:一般操作水平,能够在本系统查询个人的学习才成绩。1.2.5其他需求分析a.性能要求查询服务部分:读者通过本地计算机,从提交查询命令到返回结果不超过8秒钟。数据管理部分:图书管理员从提交一次录入到结果返回不超过8秒钟。b.灵活性要求如果要为数据项设计编码,尽可能采用行业标准,自行编码也应合乎规范,并留有扩充余地,还要征得相关业务部门认可。数据库设计也应考虑可扩充性,以适应今后图书馆发展和系统升级的需要。c.故障处理要求正常使用时不应出错,一般性错误时应给出错误提示。应提供定期自动备份数据库的功能,当遇到不可恢复的系统错误,可以保证数据库完好无损。在系统出错后,应能恢复最近一次备份数据库的状态。d.其他要求①安全性。不同的用户具有不同的使用权限,只有具有最高权限的系统管理员才能修改、注销数据库中的信息,具有一般权限的人员只能读取与自己相关的内容。②一致性。系统的数据要保证一致性、准确性,当某一数据库中记录改变时,与之相关联的数据库也会随之变化。③易操作性。界面设计要符合大多数用户的操作习惯,系统还要提供操作指南,便于用户操作使用。2设计方案2.1系统开发方案的选择在开发方案的选择上,选择了演绎式原型法与生命周期法相结合的方案。具体来说,就是在系统开发之前对系统有一个总体框架设想,各功能单元的结构和功能也比较清楚,但是还没有具体实现。系统完成什么功能,分成哪几个部分,各个部分又有哪几个模块,都已理解掌握,且以后不需要做更大的变动,只是具体到每个模块,还没有全部实现。具体地设计可能是完全实现一个模块,也可能是用一个效率高地模块代替一个旧模块。信息系统的开发是一项比较复杂的工作,我们必须选用科学的有效的开发方法。近年来,国内外已逐步总结出一些开发信息系统的方法和技术,但是,从目前的情况来看,系统的开发技术仍是一个比较薄弱的环节。那么根据本系统开发的要求,本系统选择了生命周期法和原型法相结合的方法。2.2系统开发环境2.2.1程序设计语言选择程序设计语言,我选择的是JAVA语言和SQL语言。JAVA语言的简介:A.Java在虚拟机上运行Java源代码并不是被编译成为普通的机器代码。而是被翻译成为虚拟机可以执行的代码。一个Java解释器最终执行这些代码。这其中没有连接的过程;解释在需要的时候动态的加载一些类;B.Java是完全面向对象的Java是一种完全面向对象的语言。这意味着你对任何一个Java对象所做的动作都是通过一个方法实现的。第一点就是,再也没有没有主函数这样的孤立的东西了。取而代之的是,你必须开始用一个对象的看法看待一个程序,一个类的对象。但是这个对象又什么对象呢?大多数Java程序只是简单的通过继承Java基础类Object来实现所需要的东西,但是你可以通过创建程序基础类用于多个特性相似的应用程序来节省时间。严格的面向对象的规定意味着理用原有的C/C++代码不可以直接不加改动的使用;系统调用也是这样的。C++中,你可以通过在C++正常的命名空间外声明extern"C"来使用原有的C的过程调用,包括系统调用。在Java中,只有一个类似的安全回溯的方法,但是并不是十分简单的方法。你必须定义一个本地方法,其目的是为C语言提供接口,然后提供连接的介质。Java环境提供了完成这种任务的工具,但是整个过程和C++中提供的extern比微不足道,完成使用C++类的过程则更加复杂,因为这样会引入对C的借口和C函数和C++成员函数的问题。幸运的是,许多常用的系统实用工具函数已经在系统类中的方法中提供出来,但是这些明显没有包含经过许多年来你所创建的那些类和过程。所以,在你需要的时候你应该去钻研一下。C.Java中没有独立的头文件在Java中,关于类的一切东西都被放到一个单独的文件中。方法的位置只可能在一个地方出现,一个方法的实现必须在它的定义过程中同时进行。这样做得优点是在实现程序的时候不容易因为文件的非同步错误而失败,或者获取到一个没有实现的声明。类的声明可以被Java解释器利用甚至是从一个编译过的单元中获取,所以不再需要有头文件,只要有编译过的文件。这样做的缺点与我们编程的过程有关。许多C++程序员喜欢用头文件来代替文档。要看一个成员函数的接口参数,只需要看头文件中的声明即可。你可以经常的看头文件即可了解怎样去使用这个类。在Java中,没有这样的总结。因为实现类方法的代码必须在方法定义的时候出现,而且,对于一个单独的函数的代码来说就经常占据了一整页乃至更多。这样,很难通过看Java的代码就初步了解类是怎样使用的。你必须为你需要的类准备足够多的文档。不言而喻,再处理非商业类库的时候文档是极度缺乏的。在当先的Java环境中提供了两个工具来补偿这些,javap来打印类标识,javadoc为嵌入式程序提供HTML文档。D.用Package来分解Java命名空间在大的C++工程中经常遇到的一个问题是命名空间--怎样保证工程的一些程序员不会创建和另一些程序员一样名字的类?更糟糕的是,供应商可能会提供一个包含和你的类一样名字的类的库。有许多方法可以解决这一问题,但是很可能在问题发现之前工程已经启动,改正错误是需要付出许多痛苦的。Java通过"Package"这个概念解决了这个问题,Package有效地通过通过集合类划分了命名空间。在不同包内的两个同名的类仍然是不同的。关键问题就变成了类是否放置到相应的包中。记住,Java并没有解决命名冲突的问题。扩展一个基类而引起了派生类的冲突。比如说,如果你最喜欢的供应商提供了一些类,然后你把它们用做基类并且派生有一个foo方法的类,当供应商提供一个新版本的类的时候就可能出现,如果供应商业也在新类中提供了一个foo的方法。E.异常是Java的重要特性在C++中,异常和异常处理是十分深奥的事情;许多C++程序员从没有处理过它们甚至不知道它们是何物。异常是在正常的过程中出现的未预料的错误,因此,它们不会从方法中返回,或者作为参数传入;但是,它们不能被忽略!这里的一个例子是计算一个书的方根的方法。正常的接口形式是将一个正数作为参数传入方法,然后方法会返回一个正实数作为结果,方法可以检验这些并且在异常产生的时候抛出异常。在大多数系统中,程序员并不是必须这样做,这样,一个没有考虑到的异常可以使程序不正常的退出。在Java中,异常已经成为语言中非常成熟的部分。方法的说明中就包含了异常的信息,程序处理器也强制检验如果你使用了一个能够产生异常的方法,你就必须检查异常是否发生。几乎所有的Java程序员都会遇到异常的情况,因为许多非常有用的库中的类都会抛出异常。处理异常并不难,但是在一些时候是需要注意的。一个方法的文档会指明方法抛出的异常的类型。如果你忘了,不要紧,编译器会提醒你的。F.字符串不再是字符数组Java中包括了一个字符串的对象,并且是个常量。字符串不像字符数组一样,虽然可以简单的从一个字符数组构造一个字符串。你应该尽可能的用字符串代替字符数组,因为他们不会因为误操作而被覆盖。G.Java限制了常量对象和方法在C++中,你可以正式的声明一个函数参数或者函数返回值为const类型,这样可以有效的防止对参数或者返回值的不正当修改。另外,你可以声明一个成员函数为const,表明它不可以修改任何他操作的对象。Java支持常量操作符,只读变量,这些通过final关键字实现。但是Java没有支持强制的使一个可写变量在函数传递、返回的过程中变为只读。或者定义一个不操作修改对象的常量方法。在Java中,这个省略带来的影响和在C++中相比就非常小了,这很大程度上因为字符串变量和字符数组的不同,但是这也带来一个引起错误的隐患。特别地,没有办法检验一个方法是否可以改动对象。H.Java没有指针理解指针的概念是一个C或C++程序员最难应付的问题。指针也是错误产生的一大根源。Java中没有指针,对象的句柄直接作为参数传递,而不是传递指针。另外,你必须通过索引使用数组。这些都不是什么大问题。然而,没有指针是在写含有函数指针或者成员函数指针的系统的时候引起很大麻烦。这个问题在处理回调函数的时候更加显著。I.Java没有参数化类型参数化类型提供了用一段程序处理许多相似程序的方法。一个例子就是开平方根的方法,它可以对int或者float操作。在C++中,这一特性是由模板提供的。Java中不包含C++中的模板的等价物。如果你经常使用模板来简化程序,比如说构造许多使用相似参数类型的函数,这简直就是灾难。这意味着更多使用复制、粘贴的过程来手动的完成。然而,如果你使用模板来生成类的话,没有简单的方法。J.Java使用垃圾回收在垃圾回收的语言中,运行时环境一直监测哪些内存不被使用。当一块内存不用的时候,系统自动的回收内存。比如说,一个对象在一个方法中生成,但是没有被调用着返回或者没有储存为全局变量,不能在方法外部使用。系统自己会知道哪些变量是你用不到的,哪些是可以用到的。因此,你不必再为破坏对象回收内存而担心。在C++中,很多的调试时间都被使用到检查内存漏洞中。Java的这种方法很大程度上降低了这种错误的可能。但是他依然不能处理逻辑混乱的程序,他们不能够被回收。许多C++的类中的析构函数是用来释放对象引用的内存的。Java使垃圾回收的事实说明在Java中不是必需写析构函数了。但是并不意味着你可以忘记为你的类写析构函数。比如,一个对象打开了网络连接就必须被恰当的清理来关闭这个连接。在Java中,析构函数被称作"finalization"方法。K.Java不支持多重继承在任何一个复杂的面向对象的系统中,实现一个有更多方法的新类是十分经常遇到的事情。比如说,一个Manager类,需要被作为一个连表的表头,但是一个Manager又必须是一个Employee。有许多方法来处理这样的问题。一个方法是允许从多个类继承。在这个例子中,Manager需要从LinkedList和Employee继承。Java没有多重继承。但是你可以声明接口--来描述实现一些功能的编程接口。一个类可以由多个接口实现,包括他唯一的功能。不同的类可以由同样的接口实现。方法的参数既可以声明为类,也可以声明为接口。如果是接口的话,实现接口的类就可以作为参数传入方法。接口的概念要比多继承容易理解一些,但是他有一定的局限性。特别地,你必须在类中实现接口的时候编码去重新实现类的功能。L.Java支持多线程多线程可以使你写出在同一时刻完成多种任务的程序。比如说,你可以在完成读取一个大文件之间允许用户对已经读取的部分进行编辑。你需要把程序分为多线程来执行。为安全起见。你的程序要被精心的设计,因为可能不止一个线程需要对数据进行访问、修改。Java开始就支持多线程。类和接口用来分解一个程序成为不同的线程。语言简单的对重要的数据作同步或者锁定处理。2.3学生成绩管理系统的功能2.3.1软件的具体功能学生通过学号作为用户名可以进入学生查询子系统,可以查询自己的所有科目的成绩,单科成绩,成绩总分,成绩平均分。教师可以通过自己的教师号进入教师管理系统,教师可以录入自己学生的成绩,可以查询学生的成绩,可以修改学生的成绩。管理员可以对教师和学生进行管理。2.3.2软件模块划分登陆模块登录窗体功能:用户选择自己的用户名并输入正确密码登录系统。(1) 输入项:用户名及该用户所对应的密码。(2)输出项:相应的系统登录提示信息。数据库登陆信息寻找信息数据库登陆操作用户用户登陆操作数据库登陆操作用户错误信息返回信息图2-1用户登录系统学生查询模块学生可以通过自己的学号进入系统,可以查询自己的所有成绩,单科成绩,平均成绩,总成绩。学生查询学生查询查询所有单科查询平均成绩总成绩图2-2学生成绩查询演示效果图:图2-3学生成绩查询系统教师查询模块教师可以用自己的教师号进入此系统,教师在此系统里面可以完成查询,删除,修改,增加等操作。教师查询教师查询查询所有人的成绩查询单个学生成绩插入成绩修改成绩删除成绩图2-4教师查询系统演示效果图:图2-5教师管理系统管理员管理模块管理员可以通过系统认可进入该系统,管理员可以对学生和老师进行增加,删除,修改学生,教师信息,还可以对学生成绩进行增,删,改,查。管理员管理员添加教师添加学生删除教师删除学生查询学生成绩修改学生成绩删除学生成绩添加学生成绩图2-6管理员管理功能图操作效果演示图:图2-7管理员管理系统3数据库设计成绩查询系统中功能模块主要牵涉到的信息包括:学生信息表(Smessage),学生成绩表(Sgrade),教师表(Teacher),管理员在学生表(Administrator)。表3-1学生信息表列名标识数据类型数值位数约束学号SnointPrimarykey姓名Snamenvarchar30Notnulll班级Sclassnvarchar15Notnull表3-2学生成绩表列名标识数据类型数值位数约束学号SnointForeignkey课程名Scoursenvarchar30Notnull成绩Sgradeint表3-3教师表列名标识数据类型数据位数约束教师号TnointPrimarykey姓名Tnamenvarchar30表3-4管理员表列名标识数据类型数值位数约束管理员号AnointPrimarykey姓名Anamenvarchar304编程开发和调试过程在账户登录界面设置不同账户的登录。本系统在账户登录时将有三种不同权限的登录:管理员、教师、学生。系统登录的第一步是选择与自己相符的种类用户,即上图中的学生/教师/管理员。在选择结束后再输入账户名和密码,系统将自动比对数据库中已存在的学生/教师/管理员ID和密码。如果用户名和密码不匹配或者相应账户种类选择错误,则出现如下提示:图4-1账户错误提示学生进入系统后只能查看自己的成绩,不能查看别人的成绩,例如查看学号为9421001学生的成绩。则截图如下:图4-2成绩查询图在添加新账户过程中,系统将自动比对新账户ID是否与已有账户ID重合,以避免账户管理混乱、账户数据错误等问题。下图为系统添加新账户成功:图4-3添加账户5效果分析与课题小节学生成绩管理系统整体上的效果并没有我提前预想的效果好,有些功能还没有完善,由于时间的问题,就做了个大概,没有完善的模块和那些已经完成的模块基本上相同。本系统开发的技术难点主要有两个方面:一是否业务逻辑的理解;二是数据库逻辑结构的设计。业务逻辑是依据空警管理系统的行业特点及其特殊的应用领域需要来进行设计的。只有在准确不理解一个系统的业务逻辑之后才可能开发出适应其应用的应用系统来,并且在系统之间模块的科学划分与结构组织都是在正确不理解实际应用的业务逻辑需求的前提下完成的.数据库设计是应用系统开发的另一个难点,只有科学的数据库设计才能使系统具有良好的结构及良好的可编程性,可扩展性.数据库设计是直接影响系统运行情况及程序设计的一个重要因素.因此,在开发相关数据库方面的管理系统时,都需要充分考虑到科学性,结构性,规范性,安全性,可扩展等相关问题.本系统自完成时即投入到系统测试中,如系统中的各个漏洞以及即时弥补。首先本系统在目前的调试中,基本达到了当初的设计要求,设计上基本合理,能够做到各项的查询,删除,添加,修改等基本功能。代码的主要轮廓应该比较清晰。通过对java编
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 托班安全教案我的小手
- 放射性粒子治疗护理规范
- 节油赛自驾游活动方案
- 4.1.2化学电源高二上学期化学人教版(2019)选择性必修1
- 3.2.1金属材料 课件高一上学期化学人教版(2019)必修第一册
- 食品安全问题答题活动
- 企业工作职业生涯规划
- 糖尿病的措施
- 智慧旅游运营方案
- 食品安全四员培训
- 大学美育(同济大学版)学习通超星期末考试答案章节答案2024年
- 中国急性缺血性卒中诊治指南(2023版)
- 劳动法律学习试题
- 中考英语过去将来时趣味讲解动态课件(43张课件)
- 过敏性休克完整版本
- 应急第一响应人理论考试试卷(含答案)
- DZ∕T 0213-2020 矿产地质勘查规范 石灰岩、水泥配料类(正式版)
- 大学生职业规划大赛成长赛道模板
- 2024年湖北省工业建筑集团有限公司招聘笔试参考题库含答案解析
- 软件工程师专业人物访谈
- 口腔诊所器材清单
评论
0/150
提交评论