java学生成绩管理系统报告_第1页
java学生成绩管理系统报告_第2页
java学生成绩管理系统报告_第3页
java学生成绩管理系统报告_第4页
java学生成绩管理系统报告_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

-7-重庆邮电大学计算机科学与技术学院设计名称:Java程序设计报告设计题目:学生成绩管理系统学生学号:专业班级:学生姓名:目录 一、需求分析 -3-1.1功能需求分析 -4-1.2性能需求分析 -4-1.3数据库需求分析――数据流图 -5-1.3.1数据结构 -5-1.3.2数据流: -5-二、概要结构设计 -6-2.1系统功能结构设计 -6-2.1.1模块的功能设计 -6-2.2概要结构设计 -7-三、详细设计及实现 83.1用户登陆模块 83.1.1代码实现 83.2管理员界面 133.2.1代码实现: 133.3用户界面 163.3.1代码实现: 163.4添加模块 243.4.1添加模块代码实现: 243.5删除模块 303.5.1代码实现: 31心得体会: 34参考文献 35 一、需求分析编写目的:学生成绩管理系统模块是为了实现学校人力资源的优化和学生成绩管理的科学管理而设计的,通过使用本系统,可以更加有效的管理学生信息,其大包括学生的基本信息,成绩信息并且具有信息的增加,查询,修改等功能。需求分析说明书是为软件的开发者能更好的理解开发的需求,避免由于对问题认识的不清或错误理解而增加更多的开发成本。需求分析是软件系统生存期中定义阶段的最后一个步骤;是作为整个软件开发范围的指南,是软件开发人员开发出正确的符合用户要求的软件的重点;是为明确软件需求、安排项目规划与进度、组织软件开发与测试,撰写本文档。该文档将最终交给软件具体开发人员进行具体的开发,其针对的对象是软件开发人员。解决了实现该系统需求的程序模块设计问题。包括如何把该系统划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及数据结构、模块结构的设计等。在以下的概要设计报告中将对在本阶段中对系统所做的所有概要设计进行详细的说明。详细设计中,程序设计员可参考此概要设计报告,在概要设计对学生信息管理系统所做的模块结构设计的基础上,对系统进行详细设计。在以后的软件测试以及软件维护阶段也可参考此说明书,以便于了解在概要设计过程中所完成的各模块设计结构,或在修改时找出在本阶段设计的不足或错误。此需求规格说明书是对用户需求分析的结果,明确系统应具有的功能及性能与界面方面的需求,使系统分析员及软件开发组成员能清楚地了解用户的需求,并在此基础上完成后续工作和开发工作。学生信息管理系统将由两部分组成:置于学生信息的前台程序,以及置于管理员的数据库服务器。1.1功能需求分析该学生成绩管理系统具备三方面的功能:一方面是学生用户,学生通过输入学号和密码进下该系统后,可以进行一些基础查询(学生信息查询、班级信息查询、课程信息查询)、成绩管理(成绩查询、计算平均分)重新登陆系统;一方面老师进入该系统则比学生多一些权限:成绩输入、成绩查询。具体功能:1、选择[学生基本维护]菜单命令,即可进入[学生基本维护]功能窗体,在其中输入学生的相关信息,如果需要添加或修改学生信息,则单击相应的按纽,输入新信息后单击[添加]就可以了。需要删除一条信息,则只要选择这条信息再点击[删除]。在搜索条件中输入相关的条件,单击[查询]就可查找信息。2、选择[学生信息查询]菜单命令,即可进入[学生信息查询]功能窗体,在其中的下拉列表中选择你要看的信息,则在下面的表格中显示你要的信息。3、选择[成绩管理][添加成绩]菜单命令,即可进入[添加成绩]功能窗体,此功能权限只有管理员和教师。4、选择[成绩管理][输入成绩]菜单命令,即可进入[输入成绩]功能窗体,此功能权限只有管理员和教师。5、选择[成绩管理][修改成绩]界面,此功能规管理员所有。6、选择[成绩管理][查询成绩]界面此界面对学生也是可见的,它的权限规所有用户所有。7、选择[登陆][重新登陆]则会返回登陆界面,为用户提供方便。8、选择[退出]将退出整个系统。1.2性能需求分析时间特性要求:在软件方面,响应时间有点慢,因为是用Eclipse做的,它占用内存比较大,更新处理时间比较快而且迅速。安全性:设立口令号和密码验证方式,防止非法用户登录进行操作。也就是用户只有管理员、学生和教师才能进入这个系统,用户凭口令号和密码进入此系统,系统会自动判断用户是那种类型,分别拥有不同的权限。1.3数据库需求分析――数据流图1.3.1数据结构在系统中功能模块主要牵涉到的信息包括:是学生信息(Student)、课程信息(Course)、成绩表(SC).学生信息:包含学号(STNO)、姓名(SNAME)、年龄(SAGE)、性别(SSEX)、系别(SDEPT)课程信息:包括课程编号(Cno)、课程名称(Cname)、先行课(Cpno)成绩表;学号(STNO)、课程号(Cno)、成绩(Grade)1.3.2数据流:1)数据流名:口令号说明:根据这个口令号定位到用户管理数据库,以便进行身份验证。数据流来源:登陆界面输入的口令号和密码。数据流去向:其中用户口令信息将存在于整个操作过程中,防止非法登陆。数据流组成:口令号(文本);密码(文本)数据流名:寻找信息说明:根据用户在学生信息维护的时候所填写的信息。数据流来源:学生信息维护界面学生输入包含学号、班级编号、名称等。数据流去向:学号将存在整个操作,其它的存入数据库。数据流组成:学号(文本);姓名(文本)等数据流名:寻找信息说明:根据用户在成绩管理的时候所填写的信息。数据流来源:成绩输入、修改、添加等界面用户输入包含课程编号、课程名称、成绩、教师。数据流去向:学号、班级编号、课程编号将存在整个操作,其它的存入数据库。数据流组成:课程编号(文本)、课程名称(文本)、教师(文本)等。数据流名:返回信息说明:根据用户在学生信息维护的时候所填写的信息存入了数据库之后。数据流来源:由学生信息维护界面学生输入的包含学号、姓名、性别等存入数据库的。数据流去向:学生信息维护界面。数据流组成:学号(文本)、姓名(文本)、班级名称(文本)、性别(文本)等。数据流名:返回信息说明:根据用户在成绩管理的时候所填写的信息存入数据库后。数据流来源:由成绩管理输入的包含班级名称、教师、课程名、成绩存入数据库的。数据流去向:成绩管理的各子界面。数据流组成:班级编号(文本);班级名称(文本);教师(文本)等;二、概要结构设计2.1系统功能结构设计2.1.1模块的功能设计根据需求分析阶段得到的功能需求,管理员、学生和教师用户通过输入口令号和密码进下该系统后,可以进行一些学生基础信息查询(学生信息查询、班级信息查询、课程信息查询)、学生信息维护、成绩管理(成绩查询、计算平均分)重新登陆系统、退出。模块功能大概可以分为如下4个方面:这几个模块学生基础维护、成绩管理、登陆、退出。其中基础维护还要包括学生信息维护、班级信息维护、课程信息维护。成绩管理包括成绩查询、添加成绩、成绩输入等。综上所述,得到客户端功能模块图如下2.2所示。2.2概要结构设计用户登陆管理员登陆登陆用户登陆管理员登陆登陆删除信息增加信息查询信息删除信息增加信息查询信息查询信息查询信息开课 开课E-R图:学生年龄系别课程系别名称学生年龄系别课程系别名称含有含有先行课成绩课名学号姓名选课先行课成绩课名学号姓名选课三、详细设计及实现3.1用户登陆模块3.1.1代码实现packagestu_manager;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassLoginextendsJFrame{privatestaticfinallongserialVersionUID=4949257312955311099L;TextFieldf1;TextFieldf2;JButtonb1;JButtonb2;JButtonb3;Stringpower;//表示权限Login(){Containercp=getContentPane();cp.setLayout(newGridLayout(4,1));Labell1=newLabel("用户名");Labell2=newLabel("密码");Panelp1=newPanel();Panelp2=newPanel();Panelp3=newPanel();f1=newTextField(10);f2=newTextField(10);f2.setEchoChar('*');b1=newJButton("登录");b2=newJButton("重置");b3=newJButton("退出");p1.add(l1);p1.add(f1);p2.add(l2);p2.add(f2);p3.add(b1);p3.add(b2);p3.add(b3);cp.add(p1);cp.add(p2);cp.add(p3);b1.addActionListener(newEnter());b2.addActionListener(newReWrite());b3.addActionListener(newClose());}publicstaticvoidmain(String[]args){Loginlog=newLogin();log.setTitle("系统登录");log.setBounds(200,200,300,300);log.setBackground(Color.blue);log.setVisible(true);}classEnterimplementsActionListener{publicvoidactionPerformed(ActionEvente){if((f1.getText()).equals("tang")&&(f2.getText()).equals("051141")){JOptionPane.showMessageDialog(null,"登录成功!用户权限是管理员");power="管理员";XueShengframe1=newXueSheng();frame1.setResizable(true);}elseif((f1.getText()).equals("tang")&&(f2.getText()).equals("123456")){JOptionPane.showMessageDialog(null,"登录成功!登录成功!用户权限是游客");power="游客";Findf2=newFind();f2.setVisible(true);}elseJOptionPane.showMessageDialog(null,"登录失败,请重新登录!");}}classReWriteimplementsActionListener{publicvoidactionPerformed(ActionEvente){f1.setText("");f2.setText("");f1.requestFocus();}}classCloseimplementsActionListener{publicvoidactionPerformed(ActionEvente){JButtonbt=(JButton)e.getSource();if(bt==b3)System.exit(0);}}}3.2管理员界面3.2.1代码实现:packagestu_manager;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjavax.swing.JFrame;publicclassXueShengextendsJFrameimplementsActionListener{ JButtoncx,zj,tc,sc; XueSheng(){ setBounds(100,100,600,600); JPanelpanel2=newJPanel(); setContentPane(panel2); panel2.setLayout(null); JLabellabel1=newJLabel("欢迎进入学生信息管理界面"); label1.setFont(newFont("BOLD",Font.BOLD,28)); panel2.add(label1); label1.setBounds(50,20,400,100); cx=newJButton("查询"); panel2.add(cx); cx.setBounds(50,200,80,50); zj=newJButton("增加"); panel2.add(zj); zj.setBounds(150,200,80,50); sc=newJButton("删除"); panel2.add(sc); sc.setBounds(250,200,80,50); tc=newJButton("退出"); panel2.add(tc); tc.setBounds(350,200,80,50); cx.addActionListener(this); zj.addActionListener(this); sc.addActionListener(this); tc.addActionListener(this); setVisible(true); } publicvoidactionPerformed(ActionEvente){ if(e.getSource()==cx){ Findf=newFind(); }if(e.getSource()==zj){ AddFIf=newAddFI();}if(e.getSource()==sc){ Deletd=newDelet();}if(e.getSource()==tc){ shutDown(); } } privatevoidshutDown(){ this.dispose(); }}3.3用户界面3.3.1代码实现:packagestu_manager;importjava.awt.*;importjava.awt.event.*;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjavax.swing.*;publicclassFindextendsJFrameimplementsActionListener{ JTextFieldt1; StringSTNO,r1,r2,r3,r4,r5,r6; JButtonb1,b2; XueShengxue; Find(){ super("查询学生信息"); Containerc1=this.getContentPane(); setBackground(newColor(215,215,215)); c1.setLayout(newGridLayout(3,2)); JPanelpp=newJPanel(); JLabellabel0=newJLabel("请输入你的学号"); label0.setForeground(Color.blue); pp.add(label0); JPanelp1=newJPanel(); t1=newJTextField(10); p1.add(newLabel("")); p1.add(t1); c1.add(p1); JPanelp2=newJPanel(); b1=newJButton("查询"); b2=newJButton("退出"); b1.addActionListener(this); b2.addActionListener(this); p2.add(b1); p2.add(b2); c1.add(p2); this.setVisible(true); this.setBounds(200,200,400,300); } publicvoidactionPerformed(ActionEvente){ try{ if(e.getSource()==b1){ try{ STNO=t1.getText(); Class.forName( "com.microsoft.sqlserver.jdbc.SQLServerDriver") .newInstance(); Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=ss"; StringuserName="sa";//默认用户名 StringuserPwd="051141"; Connectioncn=DriverManager.getConnection(url,userName, userPwd); Stringstr="selectStudent.SNAME,Student.SAGE,Student.SSEX,Student.STNO,Course.Cname,SC.GradefromStudent,Course,SCwhereStudent.STNO=SC.STNOandSC.Cno=Course.CnoandStudent.STNO='"+STNO+"'"; PreparedStatementps=cn.prepareStatement(str); ResultSetrs=ps.executeQuery(); System.out.println("STNO="+STNO); if(rs.next()){ r1=rs.getString("STNO"); r2=rs.getString("SNAME"); r3=rs.getString("SAGE"); r4=rs.getString("SSEX"); r5=rs.getString("Cname"); r6=rs.getString("Grade"); }else{ JOptionPane.showMessageDialog(null,"你输入的学号有误"); } cn.close(); }catch(SQLExceptiong){ System.out.println("Error"+g.getErrorCode()); System.out.println("Merrage="+g.getMessage()); }catch(Exceptionf){ f.printStackTrace(); } Filef=newFile(); this.dispose(); } if(e.getSource()==b2){ t1.setText(""); t1.repaint(); } }catch(NumberFormatExceptionex){ JOptionPane.showMessageDialog(null,"数据转换错误"); } } classFileextendsJFrameimplementsActionListener{ JTextFieldtt1,t2,t3,t4,t5,t6; JButtonb3; File(){ super("查询学生信息"); Containerc2=this.getContentPane(); setBackground(newColor(215,215,215)); c2.setLayout(newGridLayout(3,1)); tt1=newJTextField(r1); t2=newJTextField(r2); t3=newJTextField(r3); t4=newJTextField(r4); t5=newJTextField(r5); t6=newJTextField(r6); tt1.setEditable(false); t2.setEditable(false); t3.setEditable(false); t4.setEditable(false); t5.setEditable(false); t6.setEditable(false); JPanelpp1=newJPanel(); JLabellabel2=newJLabel("学号为"+STNO+"学生的信息"); pp1.add(label2); label2.setFont(newFont("BOLD",Font.BOLD,28)); c2.add(pp1); JPanelpp2=newJPanel(newGridLayout(6,2)); pp2.add(newJLabel("学号",SwingConstants.CENTER)); tt1.setText(STNO); pp2.add(tt1); pp2.add(newJLabel("姓名",SwingConstants.CENTER)); pp2.add(t2); pp2.add(newJLabel("年龄",SwingConstants.CENTER)); pp2.add(t3); pp2.add(newJLabel("性别",SwingConstants.CENTER)); pp2.add(t4); pp2.add(newJLabel("课程",SwingConstants.CENTER)); pp2.add(t5); pp2.add(newJLabel("成绩",SwingConstants.CENTER)); pp2.add(t6); c2.add(pp2); JPanelpp3=newJPanel(); b3=newJButton("返回"); b3.addActionListener(this); pp3.add(b3); c2.add(pp3); this.setBounds(200,200,600,400); setVisible(true); } publicvoidactionPerformed(ActionEventf){ if(f.getSource()==b3){ this.dispose(); } } }}3.4添加模块3.4.1添加模块代码实现:packagestu_manager;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.sql.*;publicclassAddFIextendsJFrameimplementsActionListener{ JTextFieldSTNOText,SNAMEText,SAGEText,SSEXText,SDEPTText; JButtonb1,b2,b3; StringSTNO,SNAME,SAGE,SSEX,SDEPT; publicAddFI(){ Containerc=this.getContentPane(); c.setLayout(newGridLayout(3,1)); JPanelcenter=newJPanel(newGridLayout(5,2)); JPanellow=newJPanel(newFlowLayout()); JLabellabel1=newJLabel("添加學生信息",SwingConstants.CENTER); label1.setFont(newFont("TRUE",Font.TRUETYPE_FONT,20)); c.add(label1); STNOText=newJTextField(30); SNAMEText=newJTextField(30); SSEXText=newJTextField(30); SAGEText=newJTextField(30); SDEPTText=newJTextField(30); center.add(newJLabel("学号",SwingConstants.CENTER)); center.add(STNOText); center.add(newJLabel("姓名",SwingConstants.CENTER)); center.add(SNAMEText); center.add(newJLabel("性别",SwingConstants.CENTER)); center.add(SSEXText); center.add(newJLabel("年龄",SwingConstants.CENTER)); center.add(SAGEText); center.add(newJLabel("系别",SwingConstants.CENTER)); center.add(SDEPTText); c.add(center); b1=newJButton("添加"); b2=newJButton("清除"); b3=newJButton("退出"); low.add(b1); low.add(b2); low.add(b3); c.add(low); //為按鈕添加jianting b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); this.setBounds(200,200,600,400); this.setVisible(true); this.setTitle("添加學生信息"); } publicvoidactionPerformed(ActionEvente){ if(e.getSource()==b1){ addFI(); } if(e.getSource()==b2){ clearForm(); } if(e.getSource()==b3){ shutdown(); } } privatevoidaddFI(){ STNO=STNOText.getText(); SNAME=SNAMEText.getText(); SSEX=SSEXText.getText(); SAGE=SAGEText.getText(); SDEPT=SDEPTText.getText(); if(STNO.length()==0||SNAME.length()==0||SAGE.length()==0 ||SDEPT.length()==0||SSEX.length()==0) JOptionPane.showMessageDialog(this,"请添加完全信息"); else{ try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver") .newInstance(); Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=ss"; StringuserName="sa";//默认用户名 StringuserPwd="051141"; Connectioncn=DriverManager.getConnection(url,userName, userPwd); Stringstr="INSERTINTOStudentVALUES(?,?,?,?,?)"; PreparedStatementps=cn.prepareStatement(str); ps.setString(1,STNO); ps.setString(2,SNAME); ps.setString(3,SSEX); ps.setString(4,SAGE); ps.setString(5,SDEPT); ps.executeUpdate(); cn.close(); JOptionPane.showMessageDialog(this,"添加成功"); clearForm(); }catch(SQLExceptione){ System.out.println("ECode"+e.getErrorCode()); System.out.println("EM="+e.getMessage()); }catch(Exceptione){ e.printStackTrace(); } } } privatevoidclearForm(){ STNOText.setText(""); SNAMEText.setText(""); SAGEText.setText(""); SSEXText.setText(""); SDEPTText.setText(""); } privatevoidshutdown(){ this.dispose(); }}3.5删除模块3.5.1代码实现:packagestu_manager;importjava.awt.*;importjava.awt.event.*;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.SQLException;importjavax.swing.*;publicclassDeletextendsJFrameimplementsActionListener{ JButtonyes; JButtoncancle; JTextFieldtext1; StringSTNO; Delet(){ Containerc=this.getContentPane(); c.setLayout(newGridLayout(3,1)); c.setFont(newFont("true",Font.TRUETYPE_FONT,13)); JPanelp1=newJPanel(); JPanelp2=newJPanel(); JLabellabel1=newJLabel("删除学生信息",SwingConstants.CENTER); label1.setFont(newFont("true",Font.TRUETYPE_FONT,13)); label1.setForeground(Color.red); c.add(label1); JLabellabel2=newJLabel("请输入学号"); text1=newJTextField(10); p1.add(label2); p1.add(text1); c.add(p1); yes=newJButton("确定"); cancle=newJButton("退出"); p2.add(yes); p2.add(cancle); c.add(p2); yes.addActionListener(this); cancle.addActionListener(this); this.setTitle("删除学生信息"

温馨提示

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

评论

0/150

提交评论