1、 沈 阳 工 程 学 院课 程 设 计 (面向对象程序设计)设计题目: 学生基本信息管理系统 系 别 信息学院 班级 组长姓名 组员姓名 指导教师 职称 起止日期:2014年12月1日起至2014年12月12日止沈 阳 工 程 学 院课程设计任务书(面向对象程序设计)课程设计题目: 学生基本信息管理系统 系 别 信息学院 班级 组长姓名 组员姓名 指导教师 职称 课程设计进行地点: 实训F 任 务 下 达 时 间: 2014 年 11月19 日起止日期: 2014年12月1日起至2014年12月12日止教研室主任 朱克敌 2014年 11月15日批准 1课程设计的原始资料及依据面向对象程序设计
2、课程设计的前驱条件是要求学生们必须具备“程序设计基础”、“面向对象程序设计”、“软件工程导论”等计算机专业基础理论知识,本次课程设计需要在符合这种前提条件下实施。首先,成立项目小组并推举有责任心的学生担当项目组长,全组成员在组长的带领下,采用自选和老师指定相结合的方式确定了本次课程设计的题目。本次课程设计要求学生首先查阅课程相关的资料,进一步加深对课程内容的理解,运用所学知识和所掌握的分析与设计的方法,完成一个较完整的面向对象程序设计,在此基础上利用Java语言对其进行实现,实现一个功能较为完善、界面友好、操作性强的应用程序,使学生们真正地锻炼了设计和编程能力。2课程设计的主要内容及要求要求参
3、加课程设计的学生们要重新认真复习面向对象程序设计的理论知识和技能,熟练掌握Java编程工具,灵活运用所学理论知识和技能应用于该项目的设计与开发中,加深理解面向对象程序设计的编程技巧和方法。具体要求如下:1成立项目开发小组并选举项目组长。2根据设计要求小组选定设计题目。3每天要求项目组长要至少组织召开一次会议,总结、汇报和布置任务。4每次会议要求保留会议记录并存档。5发挥团队合作精神共同完成如下内容: (1) 开发背景 (2) 系统分析 (3) 系统设计 (4) 代码实现6组长要根据能力合理地分配任务,每个组员都要积极参与每项工作。7组长要对每个组员进行公正客观地评价。8要求项目组共同对课程设计
4、成果进行装订成册。3对设计说明书撰写内容、格式、字数的要求1课程设计说明书(论文)是体现和总结课程设计成果的载体,要求认真完成。2所有文档撰写格式均要求参照沈阳工程学院毕业设计(论文)撰写规范执行。3给定模板中的文字字体、大小、格式、页眉页脚等各种设置不可随意改变。4课程设计说明书(论文)应严格按着装订顺序进行装订,顺序如下: 课程设计封面 任务书 成绩评定表 课程设计报告书 报告封面目录第1章 开发背景1.1开发背景1.2可行性分析第2章 系统分析2.1需求分析 2.1.1功能需求 2.1.2性能需求2.2项目计划书 2.2.1项目开发体制 2.2.2任务分配与进度第3章 系统设计3.1系统
5、功能结构3.2程序结构设计 3.2.1程序输入输出设计(包括:页面、文件) 3.2.2类设计说明(包括:类、方法)第4章 代码实现4.1 XXXX功能实现 4.1.1功能说明(需要抓图) 4.1.2 主要代码4.2 XXXX功能实现4.2.1功能说明(需要抓图)4.2.2 主要代码致谢参考文献附录:程序代码会议记录(每天1份)项目个人总结(每人1份)4设计完成后应提交成果的种类、数量、质量等方面的要求(1)每组提交一份课程设计报告。(2)每组提交一份课程设计成品(CD盘)。5时间进度安排顺序阶段日期计 划 完 成 内 容备注112.01确定任务、安排工作、查阅资料212.02需求分析、系统设计
6、312.03-12.09系统设计、编写代码412.10程序调试与修改512.11撰写课程设计报告、总结612.12成果分享、答辩6.主要参考资料(文献)1 Java程序设计精编教程 耿祥义 张跃平 著 清华大学出版社2 Java面向对象程序设计 耿祥义等 著 清华大学出版社3 软件工程导论 张海藩等著 清华大学出版社4 。 沈 阳 工 程 学 院 面向对象程序设计 课程设计成绩评定表学院系: 信息学院物联网工程系 班级: 物联网132 项目组长:李晓飞项目组员: 齐晓宇 湛慧琴 高隆昇 指 导 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分调研论证能独立查阅文献,收集资料;能制定
7、课程设计方案和日程安排。0.15432工作能力态度工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作, 0.25432工作量按期圆满完成规定的设计任务,工作量饱满,难度适宜。0.25432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.55432指导教师评审成绩(加权分合计乘以12) 分加权分合计指 导 教 师 签 名: 年 月 日评 阅 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分查阅文献查阅文献有一定广泛性;有综合归纳资料的能力0.25432工作量工作量饱满,难度适中。0.55432说明
8、书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.35432评阅教师评审成绩(加权分合计乘以8)分加权分合计评 阅 教 师 签 名: 年 月 日课 程 设 计 总 评 成 绩分 面向对象程序设计课程设计报告书题目: 学生基本信息管理系统 班级: 物联网132 组长: 李晓飞(07) 组员: 齐晓宇(03)、湛慧琴(04)、高隆昇(17) 目录第一章 开发背景- 1 -1.1 开发背景- 1 -1.2 可行性分析- 1 -第二章 系统分析- 2 -2.1系统分析- 2 -2.1.1功能需求- 2 -2.1.2性能需求- 2 -
9、2.2 项目计划书- 2 -2.2.1项目开发体制- 2 -2.2.2任务分配与进度- 3 -第三章 系统设计- 4 -3.1 系统功能结构- 4 -3.2 程序结构设计- 4 -3.2.1程序输入输出设计- 4 -3.2.2类设计说明- 4 -第4章 代码实现- 6 -4.1 菜单显示功能实现- 6 -4.1.1功能说明- 6 -4.1.2 主要代码- 6 -4.2 录入功能实现- 9 -4.2.1功能说明- 9 -4.2.2 主要代码- 10 -4.3 修改功能实现- 14 -4.3.1功能说明- 14 -4.3.2 主要代码- 15 -4.4查询功能实现- 19 -4.4.1 功能说明-
10、 19 -4.4.2 主要代码- 19 -4.5 删除功能实现- 23 -4.5.1 功能说明- 23 -4.5.2主要代码- 24 -4.6.学生信息类的定义- 27 -致谢- 28 -参考文献- 30 -附录:程序代码- 31 - 会议记录- 50 - 个人总结- 51 -第一章 开发背景1.1 开发背景在一些学校等机构,随着学生数量的不断增加,学生的信息不断增多,人工管理信息的难度也越来越大。而且效率也是很低的。所以如何自动高效地管理信息是这些年来许多人所研究的。随着这些年电脑计算机的速度质的提高,成本的下降,IT互联网大众趋势的发展。我们使用电脑的高效率才处理数据信息成为可能。 学生学
11、籍管理系统的出现,正是管理人员与信息数据,计算机的进入互动时代的体现。友好的人机交互模式,清晰简明的图形界面,高效安全的操作使得我们对成千上万的信息的管理得心应手。1.2 可行性分析Java语言是当前最为流行的程序设计语言之一,诸多优秀的的特性使其成为被业界广泛认可和采用的工具。本系统运行在通用的Windows操作系统上,具有Windows相似的操作界面。具有简单易学,使用方便等特点,只需在计算机上进行相关的简单的设置即可,懂得计算机基本操作的人员经过短期培训培训即可熟练操作,熟悉计算机操作的人员不需要再经过专门的培训即可熟练操作。学生学籍管理系统, Java作为前台系统的语言。提供了对学生信
12、息添加,查询,修改,删除的功能。实现了最基本的信息管理。第二章 系统分析2.1系统分析2.1.1功能需求系统实现的功能: 界面操作实现学生学籍信息的添加、删除、查询、修改功能,在文本文件中的的信息的动态处理。删除操作:管理员特权!如果系统用的时间比较长的话,那么学生信息和班级信息不可能一直不变。如果出现了学生离校或者班级编排方式不同,则有可能出现多余的信息,此时可以通过此方法将多余的信息删除掉。其中包括删除学生信息和班级信息。 修改操作:管理员特权!在管理员添加信息的时候,出错是难以避免的,而有时候一个学生的信息只是错了个班级。如果将其删除然后再重新添加费时又费力。相反可以通过此方法对一条记录
13、中的个别错误进行修改。这样可以节约很多添加和删除操作。其中包括修改学生信息和班级信息。 主函数:主要用于整体框架的构建。并通过输入说明将方法分解开来,因此,用户可以完成准确的操作. 2.1.2性能需求Java语言是当前最为流行的程序设计语言之一,诸多优秀的的特性使其成为被业界广泛认可和采用的工具。本设计可以帮助同学掌握和应运所学的面向对象程序设计学生学籍信息管理系统的编程内容,培养同学们建立对象模型,处理对象和对象集关系和对图形用回界面设计编程以及文件和流的编程问题的能力,训练同学为解决实际问题而创建较完整的简单面向对象和管理系统编程应运程序的独立编程能力.本设计是一个常见的学生信息管理系统应
14、运程序. 系统实现的功能: 界面操作实现学生学籍信息的添加、删除、查询、修改功能,在文本文件中的信息的动态处理。对于初学者,能够以所学的知识编出这样的程序是正常的要求,对于程序的功能等各方面要尽可能的完善、流畅。因此,该系统要包含平常的各种功能以及能够对用户操作不当做出相应提示。 2.2 项目计划书2.2.1项目开发体制组长:李晓飞组员:齐晓宇、湛慧琴、高隆昇2.2.2任务分配与进度 对于这次课程设计,经过组内会议确定如下:李晓飞同学负责程序的主界面的编写、学生信息添加以及定义学生信息类,齐晓宇同学负责学生信息的删除,湛慧琴同学负责学生信息的查询,高隆昇同学负责学生信息的修改。在充分了解了编写
15、的目的以后,我们四个人各自开始了自己的任务。在李晓飞定义了学生信息的格式以后,大家都埋头苦干,都希望能早点完成这次课程设计任务进度如下表:顺序阶段日期计 划 完 成 内 容备注112.01确定任务、安排工作、查阅资料组内四人查阅大量资料212.02需求分析、系统设计开始设计312.03-12.09系统设计、编写代码412.10程序调试与修改512.11撰写课程设计报告、总结612.12成果分享、答辩第三章系统设计3.1 系统功能结构 系统结构功能图如图3.1查看信息添加信息修改信息删除信息退 出学籍管理系统图 3.1系统流程图3.2 程序结构设计3.2.1程序输入输出设计(包括:页面、文件)
16、预期的程序设计可以实现简单的学生信息的查询、添加、修改和删除功能,用户可以根据菜单的向导首先存储学生的学籍信息,接着,他可以根据菜单的选项进行查询、修改以及添加信息的操作,有的功可能会弹出一个新的窗口以便用户操作。学生的信息以文本文档的格式存储在程序源代码的目录中。程序运行以后的页面设计由李晓飞设计,最终录入的学生成绩会保存在文件名为“学生基本信息.txt”的文本文档里。 3.2.2类设计说明(包括:类、方法)本学籍管理系统共有6个java源文件。类之间的主要关系如图3.2所示。StudentManager(主类)StudentSituationInquestDeleteModifySitua
17、tionStudent图3.2StudentManager.java该java文件的类负责创建学籍管理系统主窗口。该类含有main方法,程序从该类开始执行。StudentSituation.java该文件的类负责创建学籍管理系统的学生信息录入界面。ModifySituation.java该文件的类负责创建学籍管理系统的学生信息修改界面。Inquest.java该文件的类负责创建学籍管理系统的学生信息查询界面。Delete.java该文件的类负责创建学籍管理系统的学生信息删除界面。Student.java负责创建存放学生信息的对象。第4章 代码实现4.1 菜单显示功能实现 4.1.1功能说明(需
18、要抓图)菜单窗口主要是起到一个向导的作用,用户根据菜单上功能的显示,选择相应的操作。图4.1 4.1.2 主要代码import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.Hashtable;public class StudentManager extends JFrame implements ActionListener StudentSituation 基本信息录入=null; /创建基本信息录入界面 ModifySituation 基本信息修改=nu
19、ll; /创建基本信息修改界面 Inquest 基本信息查询=null; Delete 基本信息删除=null; JMenuBar bar; JMenu fileMenu; JMenuItem 录入,修改,查询,删除,退出; Container con=null; Hashtable 基本信息=null; /存放基本信息的散列表 File file=null; /存放散列表的文件 CardLayout card=null; /卡片式布局 JLabel label=null; /欢迎语标签 JPanel pCenter; public StudentManager() 录入=new JMenuI
20、tem(录入学生基本信息); 修改=new JMenuItem(修改学生基本信息); 查询=new JMenuItem(查询学生基本信息); 删除=new JMenuItem(删除学生基本信息); 退出=new JMenuItem(退出信息管理系统); bar=new JMenuBar(); fileMenu=new JMenu(菜单选项); fileMenu.add(录入); fileMenu.add(修改); fileMenu.add(查询); fileMenu.add(删除); fileMenu.add(退出); bar.add(fileMenu); setJMenuBar(bar);
21、label=new JLabel(欢迎使用学生基本信息管理系统,JLabel.CENTER); label.setFont(new Font(TimesRoman,Font.BOLD,24); label.setForeground(Color.red); 基本信息=new Hashtable(); 录入.addActionListener(this); 修改.addActionListener(this); 查询.addActionListener(this); 删除.addActionListener(this); 退出.addActionListener(this); card=new
22、CardLayout(); con=getContentPane(); pCenter=new JPanel(); pCenter.setLayout(card); file=new File(基本信息.txt); if(!file.exists() try FileOutputStream out=new FileOutputStream(file); ObjectOutputStream objectOut=new ObjectOutputStream(out); objectOut.writeObject(基本信息); objectOut.close(); out.close(); ca
23、tch(IOException e) 基本信息录入=new StudentSituation(file); 基本信息修改=new ModifySituation(file); 基本信息查询=new Inquest(this,file); 基本信息删除=new Delete(file); pCenter.add(欢迎语界面,label); pCenter.add(录入界面,基本信息录入); pCenter.add(修改界面,基本信息修改); pCenter.add(删除界面,基本信息删除); con.add(pCenter,BorderLayout.CENTER); con.validate()
24、; addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); setVisible(true); setBounds(100,50,420,380); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=录入) card.show(pCenter,录入界面); else if(e.getSource()=修改) card.show(pCenter,修改界面); els
25、e if(e.getSource()=查询) /“基本信息查询”窗口设置为独立窗口,以便于用户进行查询 基本信息查询.setVisible(true); else if(e.getSource()=删除) card.show(pCenter,删除界面); else if(e.getSource()=退出) dispose(); public static void main(String args) new StudentManager(); 4.2 录入功能实现4.2.1功能说明(需要抓图)在菜单项中点击“录入学生信息”按钮,用户可将学生的信息填入,之后点击添加,程序会将信息存储在名为“基本
26、信息.txt”的文件中。图4.2 录入基本信息图4.3 存储信息的文本文档4.2.2 主要代码import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class StudentSituation extends JPanel implements ActionListener Hashtable 基本信息表=null; /存放学生基本信息的散列表 JTextField 学号,姓名,专业,年级,出生; /输入基本信息的文本条 JRadioBu
27、tton 男,女; Student 学生=null; ButtonGroup group=null; JButton 录入,重置; FileInputStream inOne=null; ObjectInputStream inTwo=null; FileOutputStream outOne=null; ObjectOutputStream outTwo=null; File file=null; /存放散列表的文件 public StudentSituation(File file) this.file=file; 学号=new JTextField(10); 姓名=new JTextFi
28、eld(10); 专业=new JTextField(10); 年级=new JTextField(10); 出生=new JTextField(10); group=new ButtonGroup(); 男=new JRadioButton(男,true); 女=new JRadioButton(女,false); group.add(男); group.add(女); 录入=new JButton(录入); 重置=new JButton(重置); 录入.addActionListener(this); 重置.addActionListener(this); Box box1=Box.cre
29、ateHorizontalBox(); /创建6个水平Box容器 box1.add(new JLabel(学号:,JLabel.CENTER); box1.add(学号); Box box2=Box.createHorizontalBox(); box2.add(new JLabel(姓名:,JLabel.CENTER); box2.add(姓名); Box box3=Box.createHorizontalBox(); box3.add(new JLabel(性别:,JLabel.CENTER); box3.add(男); box3.add(女); Box box4=Box.createHo
30、rizontalBox(); box4.add(new JLabel(专业:,JLabel.CENTER); box4.add(专业); Box box5=Box.createHorizontalBox(); box5.add(new JLabel(年级:,JLabel.CENTER); box5.add(年级); Box box6=Box.createHorizontalBox(); box6.add(new JLabel(出生:,JLabel.CENTER); box6.add(出生);/创建一个垂直Box容器,其中从上向下排列6个水平Box容器 Box boxH=Box.createVe
31、rticalBox(); boxH.add(box1); boxH.add(box2); boxH.add(box3); boxH.add(box4); boxH.add(box5); boxH.add(box6); boxH.add(Box.createVerticalGlue(); /垂直Box容器内的组件靠上对齐 JPanel pCenter=new JPanel(); pCenter.add(boxH); setLayout(new BorderLayout(); add(pCenter,BorderLayout.CENTER); JPanel pSouth=new JPanel();
32、 pSouth.add(录入); pSouth.add(重置); add(pSouth,BorderLayout.SOUTH); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=录入) String number=; number=学号.getText(); if(number.length()0)/如果已输入学号 try inOne=new FileInputStream(file); inTwo=new ObjectInputStream(inOne); 基本信息表=(Hashtable)inT
33、wo.readObject();/首先到文件中读取Hashtable/对象 inOne.close(); inTwo.close(); catch(Exception ee) if(基本信息表.containsKey(number) /如果该学号对应的学生基本信息已经存在 /弹出警告对话框 String warning=该生基本信息已存在,请到修改页面修改!; JOptionPane.showMessageDialog(this,warning,警告,JOptionPane.WARNING_MESSAGE); else/否则,弹出确认对话框 String m=基本信息将被录入!; int ok
34、=JOptionPane.showConfirmDialog(this,m,确认,JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE); if(ok=JOptionPane.YES_OPTION) String name=姓名.getText(); String discipling=专业.getText(); String grade=年级.getText(); String borth=出生.getText(); String sex=null; if(男.isSelected() sex=男.getText(); else
35、 sex=女.getText(); 学生=new Student(); 学生.setNumber(number); 学生.setName(name); 学生.setDiscipling(discipling); 学生.setGrade(grade); 学生.setBorth(borth); 学生.setSex(sex); try outOne=new FileOutputStream(file); outTwo=new ObjectOutputStream(outOne); 基本信息表.put(number,学生); outTwo.writeObject(基本信息表); outTwo.close(); outOne.close(); 学号.setText(null);