个人成绩单管理系统_第1页
个人成绩单管理系统_第2页
个人成绩单管理系统_第3页
个人成绩单管理系统_第4页
个人成绩单管理系统_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

代码行数687项目名称个人成绩单管理系统.实训目的面向对象程序设计课程设计是计算机科学与技术专业培养计划中的重要实践教学环节,旨在通过一个管理信息系统的开发,加深学生对Java语言的理解和应用,尤其是对面向对象编程思想、Java编码规范、图形用户接口、JDBC访问数据库的理解,巩固软件工程课程的相关知识,了解软件开发的基本流程,进一步提高学生的学习能力、理解能力、表达能力及沟通能力。.实训内容使用MyEclipse为开发工具,使用RationalRose为建模工具,使用MySQL为数据库服务器,基于GUI和JDBC技术,分析、设计并实现一个管理信息系统。.需求分析需求描述成绩管理一直是学校教学管理中十分重要但又相当复杂的管理工作之一,一味的采用传统的手工处理已经不符合教育和管理的要求,而当今时代的计算机具有运算速度快,处理能力强等特点,很自然地进入到这一应用领域中。因此,为了保证学校的信息流畅,工作高效,很有必要设计一个学生成绩管理系统。这不但能使教务人员从繁杂的成绩管理中解脱出来,对于推动教学的发展也起到非常重要的作用。大部分学校学生成绩管理工作都是采用传统的手工管理,但是这些传统人工管理的方式存在着许多缺点,比如:效率较低,学生成绩信息是一个庞大的数据,要想查找其中一个学生的数据简直是大海捞针,庞大的数据还导致错误率较高。所以我选择Eclipse来开发学生成绩管理系统,由于以上的优点,开发该系统用来帮助广大教师提高工作效率,实现学生成绩信息管理工作流程的系统化、规范化和自动化。.用户注册和登录(1)用户需注册新的用户名和密码并将其存储在数据库内,用户注册成功后需输入用户名和密码登录系统,用户必须在登录系统后才能进行相关操作。(2)当用户名和密码错误时,允许用户重新进行登录操作。.增添学生成绩信息(1)用户在系统的提示下,输入相关信息,完成插入记录的操作。(2)当输入的数据类型不正确时,系统会显示失败并允许用户重新输入。.删除学生成绩信息(1)用户可以根据人名或者id对相关记录进行删除。(2)当输入的数据类型不正确时,系统会显示删除失败并允许用户重新输入。.查询id学生成绩信息(1)用户可以查询整条记录或输入指定id查询指定科目成绩,完成查询记录的操作。(2)当输入的数据类型不正确时,系统会显示修改失败并允许用户重新输入。.查询名字学生成绩信息(1)用户在系统的提示下,输入相关信息,完成查询记录的操作。(2)当输入的数据类型不正确时,系统会显示查询失败并允许用户重新输入。3.2用例描述

图3.1系统用例图4.功能设计系统层次方框图系统结构为保证系统具有较好的可维护性和可扩展性,对系统进行分层设计,共分四层:视图层:接收个人成绩输入信息,显示界面信息和成绩信息控制层:访问流程控制业务层:完成具体功能的实现数据库访问层:完成对数据库访问操作的封装具体结构如下图所示:DataBase数据库访问层:DB类

Ma:nVewLoginServiceDBLog出对彖登录Ma:nVewLoginServiceDBLog出对彖登录SQL语句返回受词始具业务层:XxxServic类控制层:Controlled、视图层:XxxView类图4.1系统结构图图4.1系统层次方框图4.2算法设计(活动图或时序图).登录功能在主界面卬@m丫10亚)输入账号和密码,封装成Login对象后发后给业务层(LoginService),在业务层中组合成执行登录操作的SQL语句,再将其传递给数据库访问类(DB),由其完成数据库的查询操作。依据查询结果,如果成功则创建控制类(Controller)对象,显示欢迎信息和对用户信息进行维护的选项;如果失败,则显示提示信息并允许重新输入账号和密码。图4.1登录功能时序图.注册功能在主界面输入数字1,表示进行注册操作。依次输入账户、密码和确认密码,当密码和确认密码不一致时,需要重新输入密码和确认密码。之后,账户和密码封装至Login对象中,传递给业务层

(LoginService),由业务层组合成添加SQL语句,发送至数据库访问类(DB),完成添加操作。如果添加成功,则返回主界面,输入新注册的账户和密码进行登录;如果添加失败,则重新进行输入。MasnViewMasnViewLoginServiceDB5QL语句=运亘注珊隼具运亘注珊隼具图4.2注册功能时序图.显示所有成绩单的基本信息功能登录成功及完成对用户信息增、册h改操作后,均需要进行所有成绩单的基本信息的显示,由控制(UserService)完成对数类(Controller)调用视图层(MainView)中的方法,在方法中再利用业务层据库访问类(DB)的访问,获取t_grade(UserService)完成对数图4.3显示所有成绩单信息时序图.添加成绩单信息功能在控制类(Controller)输出的选择信息的提示下(1表示执行添加操作),利用简单工厂模式创建视图层(AddView)对象,之后回调接口方法,完成对业务层(UserService)中注册方法的调用,在该方法中向数据库访问类(DB)发送添加SQL语句。如果添加成功,则显示所有成绩单信息(参考显示所有成绩单信息功能的实现);如果添加失败,则提示重新输入。图4.4成绩单信息添加时序图.查询用户信息功能在控制类(Controller)输出的选择信息的提示下(4表示执行添加操作),利用简单工厂模式创建视图层(QueryView)对象,之后回调接口方法,在方法中输入要查询的用户名,再对业务层(UserService)中查询方法执行调用,在该方法中向数据库访问类(DB)发送模糊查询SQL语句。如果查询成功,则显示查询到的成绩单信息(参考显示所有成绩单信息功能的实现);如果查询失败,则提示重新输入。图4.5查询成绩单信息时序图删除成绩单信息和修改成绩单信息的功能设计请参考添加成绩单信息操作。.数据设计类图设计根据分析,系统由13个类构成,分别为:数据库访问层:DB类数据封装类:Login类、Grade类业务层:LoginService类、UserService类控制层:Controller类视图层:AddView类、DeleteView类、ModifyView类、QueryView类、MainView类、Operation类其它:Test类系统中各类之间关系如下图所示:图5.1系统类图

1«cr&UserSeRice小/T5Vs小小OperationQueryVievuAddViev/DeteteVewModityVewControllerLogin^ervic^1«cr&UserSeRice小/T5Vs小小OperationQueryVievuAddViev/DeteteVewModityVewControllerLogin^ervic^NainView数据表设计根据概要设计中Login类图和Grade类图可知,系统需要两张表t_login和t_grade,其中,t_login表用于存储登录信息,t_grade表用于存储成绩单的基本信息,两张表之间没有关联关系,具体结构如下所示:表5-1t_login表序号备注字段名类型长度

序号备注1idint4主键2accountchar20唯一性、不为空3passwordchar20不为空表5-2t_grade表序号字段名类型长度备注1idint4主键2namechar20不为空3mathfloat不为空4Chinesefloat不为空5Englishfloat不为空6timedate默认创建时间.运行结果注册:please1please0001please1234pleas.s1234inputyouraccountandpa5swordto-Loginplease1please0001please1234pleas.s1234inputaccount:inputpasswo-r-dl:inputconfirmationpassword:registersuccess!pleainputyouraccount:图6.1录:pleaseinputyouraccount;0061pleaseinputyourpassword:1234welcomietoyou!id|name|math|Chinese|English|time1aaa98.076.059.02000-08-09pleaseselectyouroperation:l.insert2.delate3.modify4_query5_sxit图6.2添加:图6.3删除:图6.4ID查找:pleaseselectyouraperation;1.insert2.delete3.modify4-query5.exit3pleaseinputgrade1idtoTODIFYjifreturninput0:2cn_edu_ccut_po_Grade^6e5e91e4id|name|math|Chinese|English|tj2bbb99.066.079.02020-r■■图6.5姓名查找:图6.6.关键代码(DB.java).ccut.util;importjava.sql.*;publicclassDB{privateConnectioncon;privatePreparedStatementpre;}}}}privateResultSetrs;privatestaticDBdb;static{try{Class.forName("com.mysql.jdbc.Driver");}catch(ClassNotFoundExceptione){e.printStackTrace();}}privateDB(){}publicstaticDBgetInstance(){if(db==null){db=newDB();}returndb;}privatevoidbuildConnection(){try{conDriverManager.getConnection("jdbc:mysql://localhost:3306/4711?useSSL=false","root","kanyuhang");}catch(SQLExceptione){e.printStackTrace();}}publicResultSetexecuteQueryByParam(Stringsql,Object...o){this.buildConnection();try{pre=con.prepareStatement(sql);for(inti=0;i<o.length;i++){pre.setObject(i+1,o[i]);}rs=pre.executeQuery();}catch(SQLExceptione){e.printStackTrace();}returnrs;}}}}publicResultSetexecuteQueryNoParam(Stringsql){this.buildConnection();;try{pre=con.prepareStatement(sql);rs=pre.executeQuery();}catch(SQLExceptione){e.printStackTrace();}returnrs;}publicintexecuteUpdate(Stringsql,Object...o){this.buildConnection();try{pre=con.prepareStatement(sql);for(inti=0;i<o.length;i++){pre.setObject(i+1,o[i]);}intcount=pre.executeUpdate();returncount;}catch(SQLExceptione){e.printStackTrace();return0;}}publicvoidclose(){try{if(rs!=null){rs.close();}pre.close();con.close();}catch(SQLExceptione){e.printStackTrace();}}}(controller.java).ccut.controller;.ccut.service.GradeService;.ccut.view.*;importjava.util.InputMismatchException;importjava.util.Scanner;publicclassController{publicvoidcontroller()throwsInputMismatchException{Scannerscan=newScanner(System.in);while(true){MainView.showMain();System.out.println("pleaseselectyouroperation:");5.exit");System.out.println("1.insert2.delete3.modify4.queryinti=scan.nextInt();5.exit");GradeServiceservice=GradeService.getInstance();Operationo=null;booleanflag=true;switch(i){o=newAddView();break;o=newDeleteView();break;o=newModifyView();break;o=newQueryView();break;System.out.println("Bye~~~~~~~~~");return;default://scan.close();System.out.println("inputerror,pleaseinput1~5!");flag=false;}if(flag){o.operation(service);}(grade.java).ccut.po;importjava.sql.Date;publicclassGrade{privateintid;privateStringname;privatefloatmath;privatefloatChinese;privatefloatEnglish;privateDatetime;publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){=name;}publicfloatgetMath(){returnmath;}publicvoidsetMath(floatmath){this.math=math;}publicfloatgetChinese(){returnChinese;}publicvoidsetChinese(floatChinese){this.Chinese=Chinese;publicfloatgetEnglish(){returnEnglish;}publicvoidsetEnglish(floatEnglish){this.English=English;}publicDategetTime(){returntime;}publicvoidsetTime(Datetime){this.time=time;}}(login.java).ccut.po;publicclassLogin{privateStringusername;privateStringpassword;publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}}(gradeServers.java).ccut.service;.ccut.po.Grade;.ccut.util.DB;importjavax.xml.transform.Result;importjava.sql.Date;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;@SuppressWarnings("unused")publicclassGradeService{privateDBdb;privatestaticGradeServiceservice;privateGradeService(){db=DB.getInstance();}publicstaticGradeServicegetInstance(){if(service==null){service=newGradeService();}returnservice;}publicList<Grade>getAllGrades(){Stringsql="select*fromt_grade";ResultSetrs=db.executeQueryNoParam(sql);List<Grade>grades=null;try{grades=this.getList(rs);}catch(SQLExceptione){e.printStackTrace();}finally{db.close();}returngrades;}publicList<Grade>queryGradeByName(Stringname){Stringsql="select*fromt_gradewherenamelike?";ResultSetrs=db.executeQueryByParam(sql,"%"+name+"%");List<Grade>grades=null;try{grades=this.getList(rs);}catch(SQLExceptione){e.printStackTrace();}finally{db.close();}returngrades;}privateList<Grade>getList(ResultSetrs)throwsSQLException{List<Grade>grades=newArrayList<Grade>();Gradegrade=null;while(rs.next()){grade=newGrade();grade.setId(rs.getInt(1));grade.setName(rs.getString(2));grade.setMath(rs.getFloat(3));grade.setChinese(rs.getFloat(4));grade.setEnglish(rs.getFloat(5));grade.setTime(rs.getDate(6));grades.add(grade);}returngrades;}publicbooleaninsertOneGrade(Stringname,floatmath,floatChinese,floatEnglish,Datetime){Stringsql="insertintot_grade(name,math,Chinese,English,time)values(?,?,?,?,?)";intcount=db.executeUpdate(sql,name,math,Chinese,English,time);db.close();if(count>0){returntrue;}else{returnfalse;publicbooleandeleteGradeById(intid){Stringsql="deletefromt_gradewhereid=?";intcount=db.executeUpdate(sql,id);db.close();if(count>0){returntrue;}else{returnfalse;}}publicbooleanupdateGrade(Stringname,floatmath,floatChinese,floatEnglish,Datetime,intid){Stringsql="updatet_gradesetname=?,math=?,Chinese=?,English=?,time=?,whereid=?";intcount=db.executeUpdate(sql,name,math,Chinese,English,time,id);db.close();if(count>0){returntrue;}else{returnfalse;}}publicGradegetGradeById(intid){Stringsql="select*fromt_gradewhereid=?";ResultSetrs=db.executeQueryByParam(sql,id);try{if(rs.next()){Gradegrade=newGrade();grade.setId(id);grade.setName(rs.getString(2));grade.setMath(rs.getFloat(0));grade.setChinese(rs.getFloat(0));grade.setEnglish(rs.getFloat(0));grade.setTime(rs.getDate(4));returngrade;}}catch(SQLExceptione){e.printStackTrace();}finally{db.close();}returnnull;(loginService.java).ccut.service;.ccut.po.Login;.ccut.util.DB;importjava.sql.ResultSet;importjava.sql.SQLException;publicclassLoginService{privateDBdb;privatestaticLoginServiceservice;privateLoginService(){db=DB.getInstance();}publicstaticLoginServicegetInstatnce(){if(service==null){service=newLoginService();}returnservice;}publicbooleanlogin(Loginlo){Stringsql="select*fromt_loginwhereusername=?andpassword=?";ResultSetrs=db.executeQueryByParam(sql,lo.getUsername(),lo.getPassword());try{if(rs.next()){returntrue;}}catch(SQLExceptione){e.printStackTrace();}finally{db.close();}returnfalse;publicbooleanregister(Loginlo){Stringsql="insertintot_login(username,password)values(?,?)";intcount=db.executeUpdate(sql,lo.getUsername(),lo.getPassword());db.close();if(count>0){returntrue;}else{returnfalse;}}}(AddView.java).ccut.view;.ccut.service.GradeService;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.InputMismatchException;importjava.util.Scanner;publicclassAddViewimplementsOperation{//@SuppressWarnings("resource")@Overridepublicvoidoperation(GradeServiceservice)throwsInputMismatchException{Scannerscan=newScanner(System.in);while(true){System.out.println("pleaseinputname、math、Chinese、English、timetoADD,ifreturninput0:");Stringname=scan.next();if("0".equals(name)){break;}floatmath0=scan.nextFloat();floatChinese0=scan.nextFloat();floatEnglish0=scan.nextFloat();Stringtime0=scan.next();SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-dd");Datetime=newDate();try{time=format.parse(time0);}catch(ParseExceptione){e.printStackTrace();}booleanflag=service.insertOneGrade(name,math0,Chinese0,English0,newjava.sql.Date(time.getTime()));if(flag){System.out.println("addsuccess~~~~~~");//scan.close();return;}else{System.out.println("addfailure,tryagain~~~~~~");}}}}(DeleteView.java).ccut.view;.ccut.service.GradeService;importjava.util.InputMismatchException;importjava.util.Scanner;publicclassDeleteViewimplementsOperation{//@SuppressWarnings("resource")@Overridepublicvoidoperation(GradeServiceservice)throwsInputMismatchException{Scannerscan=newScanner(System.in);while(true){System.out.println("pleaseinputgrade'idtoDELETE,ifreturninput0:");intid=scan.nextInt();if(id==0){break;}booleanflag=service.deleteGradeById(id);if(flag){System.out.println("deletesuccess~~~~~~");//scan.close();return;}else{System.out.println("deletefailure~~~~~~");}(MainView.java).ccut.view;.ccut.controller.Controller;.ccut.po.Grade;.ccut.po.Login;.ccut.service.LoginService;.ccut.service.GradeService;importjava.util.InputMismatchException;importjava.util.List;importjava.util.Scanner;publicclassMainView{publicstaticvoidstart(){Scannerscan=newScanner(System.in);while(true){LoginServiceservice;System.out.println("pleaseinputyouraccountandpasswordtologin,enter1forregisteronenewuser.");Stringusername=scan.next();Stringpassword;while("1".equals(username)){System.out.println("pleaseinputaccount:");StringnewUsername=scan.next();StringnewPwd;while(true){System.out.println("pleaseinputpassword:");newPwd=scan.next();System.out.println("pleaseinputconfirmationpassword:");StringconfirmPwd=scan.next();if(newPwd.equals(confirmPwd)){break;}else{System.out.println("passwordisnotequalsconfirmationpassword,inputagain!");}}service=LoginService.getInstatnce();Loginlo=newLogin();lo.setUsername(newUsername);lo.setPassword(newPwd);booleanf=service.register(lo);if(f){System.out.println("registersuccess!");System.out.println("pleaseinputyouraccount:");username=scan.next();}else{System.out.println("registerfailure!tryagain~~~");}}System.out.println("pleaseinputyourpassword:");password=scan.next();service=LoginService.getInstatnce();Loginlo=newLogin();lo.setUsername(username);lo.setPassword(password);booleanflag=service.login(lo);if(flag){Controllermv=newController();try{mv.controller();break;}catch(InputMismatchExceptione){System.out.println("inputexception,tryagain!");}}else{System.out.println("loginfailure!pleaseinputagain~~~~~~");}}scan.close();}publicstaticvoidshowTable(){TOC\o"1-5"\h\zSystem.out.println("");System.out.println("id|name|math|Chinese|English|time");System.out.println("");}publicstaticvoidshowGrade(Gradeg){System.out.print(""+g.getId()+"");System.out.print(g.getName()+"");System.out.print(g.getMath()+"");System.out.print(g.getChinese()+"");System.out.print(g.getEnglish()+"");System.out.println(g.getTime());}publicstaticvoidshowMain(){System.out.println("welcometoyou!");showTable();GradeServicegradeService=GradeService.getInstance();List<Grade>grades=gradeService.getAllGrades();for(Gradeg:grades){showGrade(g);}}}(ModifyView.java).ccut.view;.ccut.controller.Controller;.ccut.po.Grade;.ccut.service.GradeService;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.InputMismatchException;importjava.util.Scanner;//@SuppressWarnings("unused")publicclassModifyViewimplementsOperation{@Overridepublicvoidoperation(GradeServiceservice)throwsInputMismatchException{//@SuppressWarnings("resource")Scannerscan=newScanner(System.in);while(true){System.out.println("pleaseinputgrade'idtoMODIFY,ifreturninput0:");intid=scan.nextInt();if(id==0){return;}else{Gradegrade=service.getGradeById(id);if(grade!=null){MainView.showTable();MainView.showGrade(grade);System.out.println("pleaseinputnewname:");StringnewName=scan.next();System.out.println("pleaseinputnewmath:");floatnewMath=scan.nextFloat();System.out.println("pleaseinputnewChinese:");floatnewChinese=scan.nextFloat();System.out.println("pleaseinputnewEnglish:");floatnewEnglish=scan.nextFloat();System.out.println("pleaseinputnewtime:");StringnewTime=scan.next();SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-dd");Datetime;java.sql.DatesqlTime=null;try{time=format.parse(newTime);sqlTime=newjava.sql.Date(time.getTime());}catch(ParseExceptione){e.printStackTrace();}booleanflag=service.updat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论