1、西安文理学院 计算机科学系课程设计报告设计名称: 软件课程设计 设计题目: 学生成绩管理系统 学生学号: 14102080217 专业班级: 软件工程二班 学生姓名: 陈健 学生成绩: 指导教师(职称): 杨全() 课题工作时间: 2011.4.11至 2011.4.21 说明:1、报告中的任务书、进度表由指导教师在课程设计开始前填写并发给每个学生;四、五两项(中英文摘要)由学生在完成综合设计后填写。2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。3、指导教师评语一栏由指导教师就学生在整个设计期间的平时表现、设计完成情况、报告的质量及答辩情况,给出客观、全面的评价。4、所有学生
2、必须参加课程设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。答辩小组成员应由2人及以上教师组成。5、报告正文字数一般应不少于3000字,也可由指导教师根据本门综合设计的情况另行规定。6、平时表现成绩低于6分的学生,取消答辩资格,其本项综合设计成绩按不及格处理。学生姓名陈健学号专业班级08级软件二班设计题目基于C/S模式的学生成绩记录查询系统内容概要:学生成绩记录查询系统(C/S)的设计与实现。具体要求如下:1) 创建学生信息(学生的新增、删除、修改、查询);2) 课程成绩维护(成绩的新增、删除、修改、查询);3) 按学号或姓名查询课程成绩;4) 显示某课程60分以下、6079、8089
3、、90分以上各分数段的学生信息;5) 报表输出(根据用户需要打印有关资料);6)判断用户标识和口令,并进行权限管理;7)修改当前用户的密码及用户管理。备注:每个学生信息包括:学号、姓名、课程名、成绩。文献资料:1 张海藩.软件工程导论. 清华大学出版社, 2010 2 沈洪, 施明利. VB程序设计案例汇编. 清华大学出版社, 20103 孟德欣. VB程序设计. 清华大学出版社, 20114 石志国. VB.NET数据库编程. 清华大学出版社, 20095 张友生. 软件体系结构原理、方法与实践. 清华大学出版社, 2010设计要求:1. 采用客户/服务器方式作为系统开发结构; 2. 后台数
4、据库(服务器)采用Microsoft SQL Server 2000;3. 用户使用界面(客户端)采用高级程序设计语言(如VB 6.0)进行开发;4. 程序必须上机调试运行通过,并获得满意的结果;5. 提交打印稿的课程设计报告。工作期限:设计工作自2011 年4 月11 日至2011年4 月21 日止。指导教师: 杨全 系主任: 日 期:2011 年 4 月 11 日计算机科学系课程设计进度安排表 专业: 姓名: 学号: 日期内 容备注5月31日 6月 1日分析题目,查阅相关资料 6月2 日 6月3 日拟定整体方案,编写程序 6月4 日 6月6 日程序编写 6月7 日 6月8 日调试程序 6月
5、9 日6月10 日整理报告 6月11 日 6月11日答辩 月 日 月 日 月 日 月 日 月 日 月 日月 日 月日 月 日 月 日 月 日 月 日 月 日 月 日 月 日 月 日 月 日 月 日指导教师签名: 2010年5 月 28 日指导教师评语指导教师: (签字)日 期: 2010 年 6 月 10 日答辩记录表学生姓名: 学号: 班级:软件二班 答辩地点: 答辩内容记录:答辩成绩合计分值各项分值评分标准实际得分合计得分备注2510在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。15在规定时间内能准确、完整、流利地回答教师所提出的问题。答辩小组成员(签字):
6、 2010 年 6 月 11 日成绩评定表学生姓名: 陈健 学号: 班级: 类别合计分值各项分值评分标准实际得分合计得分备注平时表现1010按时参加设计指导,无违反纪律情况。完成情况3020按设计任务书的要求完成了全部任务,能完整演示其设计内容,符合要求。10能对其设计内容进行详细、完整的介绍,并能就指导教师提出的问题进行正确的回答。报告质量3510报告文字通顺,内容翔实,论述充分、完整,立论正确,结构严谨合理;报告字数符合相关要求,工整规范,整齐划一。5课题背景介绍清楚,综述分析充分。5设计方案合理、可行,论证严谨,逻辑性强,具有说服力。5符号统一;图表完备、符合规范要求。5能对整个设计过程
7、进行全面的总结,得出有价值的结论或结果。5参考文献数量在2篇以上,格式符合要求,在正文中正确引用。答辩情况2510在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。15在规定时间内能准确、完整、流利地回答教师所提出的问题。总评成绩: 分 指导教师: (签字)日 期: 2010 年 6 月 15 日摘 要摘 要:随着计算机技术的飞速发展和高等教育体制改革的不断深入,传统教育管理方法、手段以及工作效率已不能适应新的发展需要,无法很好地完成教学管理工作。提高教学管理水平的主要途径是更新管理者的思想,增强对管理活动的科学认识。基于Java与SQL server数据库技术建立
8、一个高校成绩管理系统该系统为管理员、学生和教师提供了查询、修改、增加记录、删除等功能,功能比较落齐全,基本上能满足学生和老师的要求。关键词:Java;需求分析;概要设计;学生成绩管理系统;The Design And Realization Of the educational administration management system Based On JAVAAuthor: ChenJian Tutor:YangQuan Abstract: Fly technically along with the calculator to develop soon and the higher
9、 education system reform of continuously thorough, traditional education management the method, means and work efficiencies have already cant adapt the new development demand, cant complete the teaching management work nicely.The main path that raises the educational administration management level
10、is a thought that renews the governor, strengthenning the science understanding to manage the activity.According to the JAVA build up that system of an educational administration of high school management systems pursue studies with the database technique to living to provided the search, modify, sa
11、ve, increase the record and select elective courses etc. with teacher function, the function relatively falls well-found, can satisfy the request between student and teacher basically.Keyword:JAVA; The need analysis; The essentiadesign; Database; Detailed design 目录前言x1 需求分析x1.1 功能需求分析x1.2 性能需求分析xi1.
12、3 数据库需求分析数据流图xi1.3.1 数据结构xi1.3.2 数据流:xi2概要结构设计xii2.1系统功能结构设计xii2.1.1模块的功能设计xii2.2 概要结构设计xiii3详细设计及实现143.1用户登陆模块143.1.1 代码实现143.2 管理员界面163.2.1 代码实现:173.3 用户界面193.3.1 代码实现:193.4 添加模块233.4.1 添加模块代码实现:243.5 删除模块273.5.1 代码实现:27总 结29致 谢30参考文献30前言 学生成绩管理工作是高校教育工作的一项重要内容。教务管理工作是指学校管理人员按照一定教育方针,运用先进的管理手段,组织
13、、协调 、指挥并指导各用户活动,以便高效率、高质量地完成各项教学任务,完成国家所制定的教育目标。学生成绩管理工作是学校教学工作的中枢,是保证高校教学机制正常运转的枢纽,它是一项目的性、计划性、适用性、创造性和科学性很强的工作。学生成绩工作关系到高校教学秩序的稳定。随着计算机技术的飞速发展和高等教育体制改革的不断深入,传统教育管理方法、手段以及工作效率已不能适应新的发展需要,无法很好地完成教学管理工作。提高教务管理水平的主要途径是更新管理者的思想,增强对管理活动的科学认识。同时,运用先进的信息技术,开发高校综合成绩管理信息系统,是深化教务体制改革的有利措施。JAVA以GUI的编程方式、面向对象的
14、程序设计、众多的GUI组件和强大的数据库应用开发支持,在竞争激励的开发工具市场中越来越羸得程序设计者的青睐。JAVA是Windows系统下的可视化集成开发工具,提供了强大的可视化组件功能,使程序员能够快速、高效地开发出Windows系统下的应用程序,特别是在数据库和网络方面,JAVA与其它开发工具相比更是胜出一筹。可视化主要是指开发图形用户界面,而只需调用GUI组件即可。1 需求分析1.1 功能需求分析 该学生成绩管理系统具备三方面的功能:一方面是学生用户,学生通过输入学号和密码进下该系统后,可以进行一些基础查询(学生信息查询、班级信息查询、课程信息查询)、成绩管理(成绩查询、计算平均分)重新
15、登陆系统;一方面老师进入该系统则比学生多一些权限:成绩输入、成绩查询。具体功能的详细描述如下1.1.1 选择学生基本维护菜单命令,即可进入 学生基本维护功能窗体,在其中输入学生的相关信息,如果需要添加或修改学生信息,则单击相应的按纽,输入新信息后单击添加就可以了。需要删除一条信息,则只要选择这条信息再点击 删除。在搜索条件中输入相关的条件,单击 查询就可查找信息。1.1.2 选择学生信息查询菜单命令,即可进入学生信息查询功能窗体,在其中的下拉列表中选择你要看的信息,则在下面的表格中显示你要的信息。1.1.3 选择成绩管理 添加成绩菜单命令,即可进入 添加成绩功能窗体,此功能权限只有管理员和教师
16、。1.1.4 选择成绩管理 输入成绩菜单命令,即可进入 输入成绩功能窗体,此功能权限只有管理员和教师。 1.1.5 选择成绩管理 修改成绩 界面,此功能规管理员所有。 1.1.6 选择成绩管理 查询成绩界面此界面对学生也是可见的,它的权限规所有用户所有。1.1.7 选择登陆 重新登陆 则会返回登陆界面,为用户提供方便。1.1.8 选择退出将退出整个系统。1.2 性能需求分析时间特性要求:在软件方面,响应时间有点慢,因为是用Eclipse做的,它占用内存比较大,更新处理时间比较快而且迅速。安全性:设立口令号和密码验证方式,防止非法用户登录进行操作。也就是用户只有管理员、学生和教师才能进入这个系统
17、,用户凭口令号和密码进入此系统,系统会自动判断用户是那种类型,分别拥有不同的权限。1.3 数据库需求分析数据流图1.3.1 数据结构在系统中功能模块主要牵涉到的信息包括:是学生信息(Student)、课程信息(Course)、成绩表(SC).学生信息:包含学号(STNO)、姓名(SNAME)、年龄(SAGE)、性别(SSEX)、系别(SDEPT)课程信息:包括课程编号(Cno)、课程名称(Cname)、先行课(Cpno)成绩表;学号(STNO)、课程号(Cno)、成绩(Grade) 1.3.2 数据流:1) 数据流名:口令号说明:根据这个口令号定位到用户管理数据库,以便进行身份验证。数据流来源
18、:登陆界面输入的口令号和密码。数据流去向:其中用户口令信息将存在于整个操作过程中,防止非法登陆。数据流组成:口令号(文本);密码(文本)2) 数据流名:寻找信息说明:根据用户在学生信息维护的时候所填写的信息。数据流来源:学生信息维护界面学生输入包含学号、班级编号、名称等。数据流去向:学号将存在整个操作,其它的存入数据库。数据流组成:学号(文本);姓名(文本)等3) 数据流名:寻找信息说明:根据用户在成绩管理的时候所填写的信息。数据流来源:成绩输入、修改、添加等界面用户输入包含课程编号、课程名称、成绩、教师。数据流去向:学号、班级编号、课程编号将存在整个操作,其它的存入数据库。数据流组成:课程编
19、号(文本)、课程名称(文本)、教师(文本)等。4) 数据流名:返回信息说明:根据用户在学生信息维护的时候所填写的信息存入了数据库之后。数据流来源:由学生信息维护界面学生输入的包含学号、姓名、性别等存入数据库的。数据流去向:学生信息维护界面。数据流组成:学号(文本)、姓名(文本)、班级名称(文本)、性别(文本)等。5) 数据流名:返回信息说明:根据用户在成绩管理的时候所填写的信息存入数据库后。数据流来源:由成绩管理输入的包含班级名称、教师、课程名、成绩存入数据库的。数据流去向:成绩管理的各子界面。数据流组成:班级编号(文本);班级名称(文本);教师(文本)等;2概要结构设计2.1系统功能结构设计
20、2.1.1模块的功能设计根据需求分析阶段得到的功能需求,管理员、学生和教师用户通过输入口令号和密码进下该系统后,可以进行一些学生基础信息查询(学生信息查询、班级信息查询、课程信息查询)、学生信息维护、成绩管理(成绩查询、计算平均分)重新登陆系统、退出。 模块功能大概可以分为如下4个方面:这几个模块学生基础维护、成绩管理、登陆、退出。其中基础维护还要包括学生信息维护、班级信息维护、课程信息维护。成绩管理包括成绩查询、添加成绩、成绩输入等。综上所述,得到客户端功能模块图如下2.1所示。2.2 概要结构设计用户登陆登陆管理员登陆增加信息查询信息查询信息删除信息E-R 图:开课系别 名称含有课名先行课
21、成绩姓名课程选课学号系别年龄学生3详细设计及实现3.1用户登陆模块3.1.1 代码实现package com.kk;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Login extends JFrame private static final long serialVersionUID = 4949257312955311099L;TextField f1;TextField f2;JButton b1;JButton b2;JButton b3;String power;/表示权限Lo
22、gin() Container cp=getContentPane(); cp.setLayout(new GridLayout(4,1); Label l1=new Label(用户名); Label l2=new Label(密 码); Panel p1=new Panel(); Panel p2=new Panel(); Panel p3=new Panel(); f1=new TextField(10); f2=new TextField(10); f2.setEchoChar(*); b1=new JButton(登录); b2=new JButton(重置); b3=new JBu
23、tton(退出); 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(new Enter(); b2.addActionListener(new ReWrite(); b3.addActionListener(new Close();public static void main(String args) Login log=new Login(); log.set
24、Title(系统登录); log.setBounds(200, 200, 300, 300); log.setBackground(Color.blue); log.setVisible(true);class Enter implements ActionListener public void actionPerformed(ActionEvent e) if(f1.getText().equals(1410)&(f2.getText().equals(chenjian) JOptionPane.showMessageDialog(null, 登录成功!用户权限是管理员); power=管
25、理员; XueSheng frame1 = new XueSheng(); frame1.setVisible(true); else if(f1.getText().equals(abc)&(f2.getText().equals(123456) JOptionPane.showMessageDialog(null, 登录成功!登录成功!用户权限是游客); power=游客; Find f2 = new Find(); f2.setVisible(true); else JOptionPane.showMessageDialog(null, 登录失败,请重新登录!); class ReWri
26、te implements ActionListener public void actionPerformed(ActionEvent e) f1.setText(); f2.setText(); f1.requestFocus(); class Close implements ActionListenerpublic void actionPerformed(ActionEvent e) JButton bt=(JButton)e.getSource(); if(bt=b3) System.exit(0); 3.2 管理员界面3.2.1 代码实现:package com.kk;impor
27、t java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.JFrame;public class XueSheng extends JFrame implements ActionListener JButton cx, zj, tc, sc;XueSheng() setBounds(100, 100, 600, 600);JPanel panel2 = new JPanel();setContentPane(panel2);panel2.setLayout(null);JLabel label1
28、= new JLabel(欢迎进入学生信息管理界面);label1.setFont(new Font(BOLD, Font.BOLD, 28);panel2.add(label1);label1.setBounds(50, 20, 400, 100);cx = new JButton(查询);panel2.add(cx);cx.setBounds(50, 200, 80, 50);zj = new JButton(增加);panel2.add(zj);zj.setBounds(150, 200, 80, 50);sc = new JButton(删除);panel2.add(sc);sc.se
29、tBounds(250, 200, 80, 50);tc = new JButton(退出);panel2.add(tc);tc.setBounds(350, 200, 80, 50);cx.addActionListener(this);zj.addActionListener(this);sc.addActionListener(this);tc.addActionListener(this);setVisible(true);public void actionPerformed(ActionEvent e) if (e.getSource() = cx) Find f = new Fi
30、nd(); if(e.getSource()=zj) AddFI f = new AddFI(); if(e.getSource()=sc) Delet d = new Delet(); if(e.getSource()=tc)shutDown();private void shutDown()this.dispose();3.3 用户界面3.3.1 代码实现:package com.kk;import java.awt.*;import java.awt.event.*;import java.sql.Connection;import java.sql.DriverManager;impo
31、rt java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import javax.swing.*;public class Find extends JFrame implements ActionListener JTextField t1;String STNO, r1, r2, r3, r4, r5, r6;JButton b1, b2;XueSheng xue;Find() super(查询学生信息);Container c1 = this.getContentPane()
32、;setBackground(new Color(215, 215, 215);c1.setLayout(new GridLayout(3, 2);JPanel pp = new JPanel();JLabel label0 = new JLabel(请输入你的学号);label0.setForeground(Color.blue);pp.add(label0);JPanel p1 = new JPanel();t1 = new JTextField(10);p1.add(new Label();p1.add(t1);c1.add(p1);JPanel p2 = new JPanel();b1
33、 = new JButton(查询);b2 = new JButton(退出);b1.addActionListener(this);b2.addActionListener(this);p2.add(b1);p2.add(b2);c1.add(p2);this.setVisible(true);this.setBounds(200, 200, 400, 300);public void actionPerformed(ActionEvent e) try if (e.getSource() = b1) try STNO = t1.getText();Class.forName(com.mic
34、rosoft.sqlserver.jdbc.SQLServerDriver).newInstance();String url = jdbc:sqlserver:/localhost:1433; DatabaseName=ss;String userName = sa; / 默认用户名String userPwd = sa;Connection cn = DriverManager.getConnection(url, userName,userPwd);String str = select Student.SNAME,Student.SAGE,Student.SSEX,Student.ST
35、NO,Course.Cname,SC.Grade from Student,Course ,SC where Student.STNO = SC.STNO and SC.Cno = Course.Cno and Student.STNO =+STNO+;PreparedStatement ps = cn.prepareStatement(str);ResultSet rs = ps.executeQuery();System.out.println(STNO= + STNO);if (rs.next() r1 = rs.getString(STNO);r2 = rs.getString(SNA
36、ME);r3 = rs.getString(SAGE);r4 = rs.getString(SSEX);r5 = rs.getString(Cname);r6 = rs.getString(Grade); else JOptionPane.showMessageDialog(null, 你输入的学号有误);cn.close(); catch (SQLException g) System.out.println(Error + g.getErrorCode();System.out.println(Merrage= + g.getMessage(); catch (Exception f) f
37、.printStackTrace();File f = new File();this.dispose();if (e.getSource() = b2) t1.setText();t1.repaint(); catch (NumberFormatException ex) JOptionPane.showMessageDialog(null, 数据转换错误);class JFrame implements ActionListener JTextField tt1, t2, t3, t4, t5, t6;JButton b3;File() super(查询学生信息);Container c2
38、 = this.getContentPane();setBackground(new Color(215, 215, 215);c2.setLayout(new GridLayout(3, 1);tt1 = new JTextField(r1);t2 = new JTextField(r2);t3 = new JTextField(r3);t4 = new JTextField(r4);t5 = new JTextField(r5);t6 = new JTextField(r6);tt1.setEditable(false);t2.setEditable(false);t3.setEditab
39、le(false);t4.setEditable(false);t5.setEditable(false);t6.setEditable(false);JPanel pp1 = new JPanel();JLabel label2 = new JLabel(学号为 + STNO + 学生的信息);pp1.add(label2);label2.setFont(new Font(BOLD, Font.BOLD, 28);c2.add(pp1);JPanel pp2 = new JPanel(new GridLayout(6, 2);pp2.add(new JLabel(学号, SwingConstants.CENTER);t