版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java课程设计Java课程设计 基于数据结构的学籍管理系统专业计算机科学与技术学生姓名 xxx班级D计算机xx学号13207043xx指导教师刘骞 目 录1 课程设计及目的12 总体设计12.1 专业.txt2 2.2 ManagerWindow类设计22.3 Student类设计22.4 StudentPicture类设计22.5 InputStudent类设计22.6 Inquest类设计22.7 ModifySituation类设计22.8 Delete类设计22.9 JavaClip类设计23 ManagerWindow详细设计24 Student详细设计65 JavaClip详细设
2、计76 系统运行和调试87 总结108 整体代码10 基于数据结构的学籍管理系统的设计1、 课程设计要求及目的目的是通过课程设计的综合训练,培养学生实际分析问题、编程和动手能力,是学生对数据结构进行更深一层的了解。让同学们学会如何去查找资料和整合处理这些资料的能力,也为以后的大学毕业设计论文打下一个初步的基础。这个课程设计是比较难得,分成了几个部分,五个学生一组,通过讨论完成课程设计。培养团队协作精神;最终帮助学生系统掌握课程的主要内容,更好的完成教学任务。设计基于数据结构的学籍管理系统的设计,具体要求如下:(1) 录入学生基本信息功能的界面。用户可以通过菜单选项让程序呈现“录入学生基本信息”
3、功能的界面,通过该界面可以录入学生的学号、姓名、性别、出生日期、专业和照片等信息。(2) 修改学生基本信息功能的界面。用户可以通过菜单选项让程序呈现“修改学生基本信息”功能的界面,通过该界面可以对已录入的学生信息进行修改。(3) 查询与打印学生基本信息功能的界面。用户可以通过菜单选项让程序呈现“查询与打印学生基本信息”功能的界面,通过该界面,通过该界面可以对已录入的学生信息进行查询与打印。(4) 删除学生基本信息功能的界面。用户可以通过菜单选项让程序呈现“删除学生基本信息”功能的界面,通过该界面可以删除已录入的学生信息。2、 总体设计再设计学籍管理系统时,需要编写7个Java源文件:Manag
4、erWindow.java、InputStudent.java、Inquest.java、ModifySituation.java、Delete.java、Student.java和StudentPicture.java。学籍管理系统除了需要编写的7个Java源文件所给出的类外,还需要Java系统提供的一些重要的类,如JMenuItem,HashMap和File等类。学籍管理系统所用到的一些重要的类以及之间的组合关系如下图:StudentStudentPictureStudentPictureManagerWindowInputStudentFileModifySituationDeleteI
5、nquestHashMapStudentPictureJavaClipManagerWindowHashMapInquestDeleteModifySituationFileInputStudentJavaClipStudentPicture2.1专业.txt学籍管理系统通过使用名字为“专业.txt”的文本文件来生成专业名称列表,以便灵活、有效的录入专业信息。允许用户自己编写“专业.txt”文件,只要将该文件和应用程序存放到同一目录即可。2.2 ManagerWindow.java(主类)ManagerWindow类负责创建学籍管理系统的主窗口,该类含有main方法,程序从该类开始执行。Man
6、agerWindow类的成员变量中有4种重要类型的对象:InputStudent、Inquest、ModifySituation和Delete对象。2.3 Student.javaStudent类所创建的对象是InputStudent类的成员之一,负责封装学生的基本信息。2.4 StudentPicture.javaStudentPicture类所创建的对象是InputStuden、Inquest和ModifySituation类的成员之一,负责显示学生的照片。2.5 InputStudent.javaInputStudent类创建的对象是ManagerWindow类的重要成员之一,负责提供录
7、入学生基本信息的界面。2.6 Inquest.javaInquest类创建的对象是ManagerWindow类的重要成员之一,负责提供查询学生基本信息及打印基本信息的界面。2.7 ModifySituation.javaModifySituation类创建的对象是ManagerWindow类的重要成员之一,负责提供修改学生基本信息的界面。2.8 Delete.javaDelete类创建的对象是ManagerWindow类的重要成员之一,提供删除学生基本信息的界面。2.9 JavaClip.java JavaClip类提供了程序背景音乐,可以在无聊的录入程序舒缓心情。3、 ManagerWind
8、ow详细设计1、 效果图 图(1)ManagerWindow创建的窗口在进行录入、修改和删除时的效果2、图ManagerWindow类是javax.swing包中JFrame的一个子类,并实现了ActionListener接口,标明该类的主要成员变量和方法的UML图。JFrameActionListenerManagerWindow基本信息录入:InputStudent基本信息修改:ModifySituation基本信息查询与打印:Inquest基本信息删除:Delete基本信息:HashMap<String,Student>file:File录入,修改,查询,删除,欢迎界面:JM
9、enuItemManagerWindow():无类型actionPerformed(ActionEvent):voidmain(String):void 图(2)ManagerWindow类的UML图1) 成员变量l “基本信息录入”是InputStudent对象,负责提供录入信息的界面。l “基本信息修改”是ModifySituation对象,负责提供修改信息的界面.l “基本信息查询与打印”是Inquest对象,负责提供查询与打印信息的界面。l “基本信息删除”是Delete对象,负责提供删除信息的界面。l “基本信息”是HashMap<String,Stundent>创建的散
10、列映射,用于存储键/值数据对,其中的键必须是一个String对象,键对应的值必须是Student对象。l File是File文件对象,程序将“基本信息”散列映射写入该文件中。l “录入”、“修改”、“查询”、“删除”、和“欢迎界面”是JMenuItem创建的菜单项,这些菜单项都将当前窗口注册为自己的ActionEvent时间监视器。2)方法l ManagerWindow()是构造方法,负责完成窗口的初始化。l actionPerformed(ActionEvent)方法是ManagerWindow类实现的ActionListener接口中的方法。ManagerWindow创建的窗口是“录入”“
11、修改”、“查询与打印”、“删除”和“欢迎界面”菜单项的ActionEvent事件监视器,当用户选择其中某个菜单项时,窗口将执行actionPerformed(ActionEvent)方法进行相应的操作。l main方法是程序运行的入口方法。(3)代码如下37import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.HashMap;public class ManagerWindow extends JFrame implements ActionListene
12、r InputStudent 基本信息录入; ModifySituation 基本信息修改; Inquest 基本信息查询与打印; Delete 基本信息删除; JMenuBar bar; JMenu fileMenu; JMenuItem 录入,修改,查询与打印,删除,欢迎界面; HashMap<String,Student> 基本信息=null; File file=null; CardLayout card=null; JLabel label=null; JPanel pCenter; public ManagerWindow() 录入=new JMenuItem(&quo
13、t;录入学生基本信息"); 修改=new JMenuItem("修改学生基本信息"); 查询与打印=new JMenuItem("查询与打印学生基本信息"); 删除=new JMenuItem("删除学生基本信息"); 欢迎界面=new JMenuItem("欢迎界面"); bar=new JMenuBar(); fileMenu=new JMenu("菜单选项"); fileMenu.add(录入); fileMenu.add(修改); fileMenu.add(查询与打印); fi
14、leMenu.add(删除); fileMenu.add(欢迎界面); bar.add(fileMenu); setJMenuBar(bar); label=new JLabel("学籍管理系统",JLabel.CENTER); label.setIcon(new ImageIcon("welcome.jpg"); label.setFont(new Font("隶书",Font.BOLD,36); label.setHorizontalTextPosition(SwingConstants.CENTER); label.setFor
15、eground(Color.red); 基本信息=new HashMap<String,Student>(); 录入.addActionListener(this); 修改.addActionListener(this); 查询与打印.addActionListener(this); 删除.addActionListener(this); 欢迎界面.addActionListener(this); card=new CardLayout(); pCenter=new JPanel(); pCenter.setLayout(card); file=new File("基本信
16、息.txt"); if(!file.exists() try FileOutputStream out=new FileOutputStream(file); ObjectOutputStream objectOut=new ObjectOutputStream(out); objectOut.writeObject(基本信息); objectOut.close(); out.close(); catch(IOException e) 基本信息录入=new InputStudent(file); 基本信息修改=new ModifySituation(file); 基本信息查询与打印=
17、new Inquest(file); 基本信息删除=new Delete(file); pCenter.add("欢迎界面",label); pCenter.add("录入界面",基本信息录入); pCenter.add("修改界面",基本信息修改); pCenter.add("删除界面",基本信息删除); add(pCenter,BorderLayout.CENTER); validate(); setVisible(true); setBounds(100,50,460,280); setDefaultClos
18、eOperation(JFrame.DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) int n=JOptionPane.showConfirmDialog(null,"确认退出吗?","确认对话框", JOptionPane.YES_NO_OPTION ); if(n=JOptionPane.YES_OPTION) System.exit(0); ); validate(); public void a
19、ctionPerformed(ActionEvent e) if(e.getSource()=录入) 基本信息录入.clearMess(); card.show(pCenter,"录入界面"); else if(e.getSource()=修改) 基本信息修改.clearMess(); card.show(pCenter,"修改界面"); else if(e.getSource()=查询与打印) 基本信息查询与打印.clearMess(); 基本信息查询与打印.setLocation(getBounds().x+getBounds().width,get
20、Bounds().y); 基本信息查询与打印.setVisible(true); else if(e.getSource()=删除) card.show(pCenter,"删除界面"); else if(e.getSource()=欢迎界面) card.show(pCenter,"欢迎界面"); public static void main(String args) new ManagerWindow(); JavaClip a=new JavaClip(); a.P(); 4、Student类详细设计1.效果图Student创建的对象负责处理和学生有
21、关的数据。没有可显示的效果图。2.UML图 Student类创建的对象“学生”是InputStudent的重要成员之一,负责处理和学生有关的数据。标明Student类的主要成员变量和方法以及和InputStudent类之间组合关系的UML图。 StudentInputStudent学生:StudentNumber,name,discipling,grade,borth,sex:StringimagePic:FilesetNumber(String):voidgetNumber():StringsetImagePic(File):voidgetImagePic():File 图(3)Studen
22、t类的UML图以下是UML图中有关数据和方法的详细说明。成员变量l .discipling.grade.borth和sex是String对象,它们的值分别表示学生的“学号”、“姓名”、“专业”、“年级”、“出生日期”和“性别”。l imagePic是File对象,用于存放学生的照片图像的引用。 方法l setNumber(String)和gerNumber()方法分别用来设置number和获取number的值。l setImagerPic(File)和gerImagPic()方法分别用来设置imagePic和获取imagePic的引用。 代码(Student.java):
23、import java.io.*;public class Student implements Serializable String number,name,discipling,grade,borth,sex; File imagePic; public void setNumber(String number) this.number=number; public String getNumber() return number; public void setName(String name) =name; public String getName() retur
24、n name; public void setDiscipling(String discipling) this.discipling=discipling; public String getDisciping() return discipling; public void setGrade(String grade) this.grade=grade; public String getGrade() return grade; public void setBorth(String borth) this.borth=borth; public String getBorth() r
25、eturn borth; public void setSex(String sex) this.sex=sex; public String getSex() return sex; public void setImagePic(File image) imagePic=image; public File getImagePic() return imagePic; 5、JavaClip类详细设计效果图: JavaClip类实现的是背景音乐的播放,没有效果图。代码:import java.applet.AudioClip; import java.io.*; import java.ap
26、plet.Applet;import java.awt.Frame;import .MalformedURLException;import .URL; public class JavaClip extends Frame public JavaClip() super(); public void P() try URL cb; File f = new File("E:chaper10123456.wav"); /引号里面的是音乐文件所在的绝对鹿筋 cb = f.toURL(); AudioClip aau; aau = Applet.newAudioClip(cb)
27、; /aau.play(); aau.loop(); /循环播放 aau.play() 单曲 aau.stop()停止播放 JavaClip frame=new JavaClip(); /frame.setBounds(0, 0, 300, 200); /frame.setVisible(true); catch (MalformedURLException e) e.printStackTrace(); 6、系统运行与调试整个学籍管理系统使用了jdka.6版本调试和运行。运行过程如下:(1) 运行主类出现如下图片:然后单击菜单选项-录入学生基本信息出现如下图片; 单击录入-确认录入: 单击菜
28、单选项-修改学生基本信息: 单击开始修改,修改你要修改的内容,录入修改:单击菜单选项-查询与打印学生基本信息:单击删除学生信息:7、总结一周的课程设计很快结束了,从中收获了很多的知识和快乐。对于Java这门语言,其实还是了解的太少,虽然上了一学期的课,但是学的是基础的知识,可是说是沧海一粟,所以面对课程设计这个大骨头,着实让我们措手不及。虽然书上有源代码,但是从书上到电脑上就是一个很大的工程,可能是我打过最多的一次吧!然后就是痛苦的调试代码阶段,因为是手打的代码,所以错误是层出不穷,在经历了千辛万苦过后,在代码运行成功的时候,我们几个都笑的很开心,感觉自己的辛苦没有白费,心里似乎还有一点点小小
29、的自豪,虽然代码是书上的吧,但是也是我们一步一步弄出来的。大家的不放弃,互相鼓励,也让我感受到了一个team的精神。然后就是大家分析代码的阶段,就相当于一群四级都没过的孩子,在看英语六级试卷,百度成了我们的唯一看的懂的东西,终于在大家的努力下,看懂了大概的原理。总之,这次课程设计使我收获很多、学会很多、比以往更有耐心很多。感谢学校及老师给我们这次课程设计的机会,最真挚的感谢我们的辅导老师 ,在设计过程中,老师精心的辅导和不厌其烦地的态度才使得我们以顺利的完成这次设计,他那无私的奉献的精神照耀着我们对学习的热爱,同时也增加我们对知识的追求和欲望度。8、整体代码import java.awt.*;
30、import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.HashMap;public class ManagerWindow extends JFrame implements ActionListener InputStudent 基本信息录入; ModifySituation 基本信息修改; Inquest 基本信息查询与打印; Delete 基本信息删除; JMenuBar bar; JMenu fileMenu; JMenuItem 录入,修改,查询与打印,删除,欢迎界面; HashM
31、ap<String,Student> 基本信息=null; File file=null; CardLayout card=null; JLabel label=null; JPanel pCenter; public ManagerWindow() 录入=new JMenuItem("录入学生基本信息"); 修改=new JMenuItem("修改学生基本信息"); 查询与打印=new JMenuItem("查询与打印学生基本信息"); 删除=new JMenuItem("删除学生基本信息"); 欢迎
32、界面=new JMenuItem("欢迎界面"); bar=new JMenuBar(); fileMenu=new JMenu("菜单选项"); fileMenu.add(录入); fileMenu.add(修改); fileMenu.add(查询与打印); fileMenu.add(删除); fileMenu.add(欢迎界面); bar.add(fileMenu); setJMenuBar(bar); label=new JLabel("学籍管理系统",JLabel.CENTER); label.setIcon(new Imag
33、eIcon("welcome.jpg"); label.setFont(new Font("隶书",Font.BOLD,36); label.setHorizontalTextPosition(SwingConstants.CENTER); label.setForeground(Color.red); 基本信息=new HashMap<String,Student>(); 录入.addActionListener(this); 修改.addActionListener(this); 查询与打印.addActionListener(this)
34、; 删除.addActionListener(this); 欢迎界面.addActionListener(this); card=new CardLayout(); pCenter=new JPanel(); pCenter.setLayout(card); file=new File("基本信息.txt"); if(!file.exists() try FileOutputStream out=new FileOutputStream(file); ObjectOutputStream objectOut=new ObjectOutputStream(out); obje
35、ctOut.writeObject(基本信息); objectOut.close(); out.close(); catch(IOException e) 基本信息录入=new InputStudent(file); 基本信息修改=new ModifySituation(file); 基本信息查询与打印=new Inquest(file); 基本信息删除=new Delete(file); pCenter.add("欢迎界面",label); pCenter.add("录入界面",基本信息录入); pCenter.add("修改界面"
36、,基本信息修改); pCenter.add("删除界面",基本信息删除); add(pCenter,BorderLayout.CENTER); validate(); setVisible(true); setBounds(100,50,460,280); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) int n=JOptionPane.showConfir
37、mDialog(null,"确认退出吗?","确认对话框", JOptionPane.YES_NO_OPTION ); if(n=JOptionPane.YES_OPTION) System.exit(0); ); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=录入) 基本信息录入.clearMess(); card.show(pCenter,"录入界面"); else if(e.getSource()=修改) 基本信息修改.clearM
38、ess(); card.show(pCenter,"修改界面"); else if(e.getSource()=查询与打印) 基本信息查询与打印.clearMess(); 基本信息查询与打印.setLocation(getBounds().x+getBounds().width,getBounds().y); 基本信息查询与打印.setVisible(true); else if(e.getSource()=删除) card.show(pCenter,"删除界面"); else if(e.getSource()=欢迎界面) card.show(pCent
39、er,"欢迎界面"); public static void main(String args) new ManagerWindow(); import java.io.*;public class Student implements Serializable String number,name,discipling,grade,borth,sex; File imagePic; public void setNumber(String number) this.number=number; public String getNumber() return number
40、; public void setName(String name) =name; public String getName() return name; public void setDiscipling(String discipling) this.discipling=discipling; public String getDisciping() return discipling; public void setGrade(String grade) this.grade=grade; public String getGrade() return grade;
41、 public void setBorth(String borth) this.borth=borth; public String getBorth() return borth; public void setSex(String sex) this.sex=sex; public String getSex() return sex; public void setImagePic(File image) imagePic=image; public File getImagePic() return imagePic; import javax.swing.*;import java
42、.io.*;import java.awt.*;public class StudentPicture extends JPanel File imageFile; Toolkit tool; public StudentPicture() tool=getToolkit(); public void setImage(File imageFile) this.imageFile=imageFile; repaint(); public void paintComponent(Graphics g) super.paintComponent(g); int w=getBounds().widt
43、h; int h=getBounds().height; if(imageFile!=null) Image image=tool.getImage(imageFile.getAbsolutePath(); g.drawImage(image,0,0,w,h,this); else g.drawString("没有选择照片图像",20,30); import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;import javax.swin
44、g.filechooser.*;public class InputStudent extends JPanel implements ActionListener Student 学生=null; StudentPicture pic; HashMap<String,Student> 基本信息表=null; JTextField 学号,姓名,年级,出生; JButton 选择照片; JComboBox 专业; JRadioButton 男,女; ButtonGroup group=null; JButton 录入,重置; FileInputStream inOne=null; O
45、bjectInputStream inTwo=null; FileOutputStream outOne=null; ObjectOutputStream outTwo=null; File systemFile,imagePic; public InputStudent(File file) systemFile=file; pic=new StudentPicture(); 学号=new JTextField(5); 姓名=new JTextField(5); 专业=new JComboBox(); try FileReader inOne=new FileReader("专业.
46、txt"); BufferedReader inTwo= new BufferedReader(inOne); String s=null; int i=0; while(s=inTwo.readLine()!=null) 专业.addItem(s); inOne.close(); inTwo.close(); catch(IOException exp) 专业.addItem("数学"); 专业.addItem("计算机科学与技术"); 年级=new JTextField(5); 出生=new JTextField(5); 选择照片=new
47、JButton("选择"); group=new ButtonGroup(); 男=new JRadioButton("男",true); 女=new JRadioButton("女",false); group.add(男); group.add(女); 录入=new JButton("录入"); 重置=new JButton("重置"); 录入.addActionListener(this); 选择照片.addActionListener(this); 重置.addActionListener(this); Box box1=Box.createHorizontalBox(); box1.add(new JLabel("学号:",JLabel.CENTER); box1.add(学号); Box box2=Box.createHorizontalBox(); box2.add(new JLabel("姓名:",JLabel.CENTER); box2.add(姓名); Box box3=Box.createHoriz
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度第三人民医院保安服务合同
- 2024年度电子商务平台合作经营合同
- 常州人工智能技术研发合同2024年度
- 二零二四年度电梯配套设备采购合同
- 服装加工合同协议书
- 二零二四年度租赁合同:盘扣式脚手架租赁及安装工程协议
- 电梯清包合同(2篇)
- 医保工作人员信息与网络安全保密协议书(2篇)
- 取别人银行卡免责协议书(2篇)
- 合资办学的协议书(2篇)
- 2024-2025学年统编版(2024)道德与法治小学一年级上册教学设计(表格版)
- 2024-2025学年辽宁省沈阳七中七年级上学期期初数学试题及答案
- 学校食品安全主体责任制度
- 2024年广州市海珠区海幢街道办事处招考聘用雇员9人高频500题难、易错点模拟试题附带答案详解
- 电除颤并发症的处理及预防
- 2024-2030年ICT技术行业市场发展分析及发展趋势与投资前景研究报告
- 佳能EOS700D使用说明书
- 人工智能医疗与生命科学行业研究报告
- 12CJ35 珍珠岩吸声板吊顶与墙面构造-崔申珍珠岩吸声板
- 2024广西专业技术人员继续教育公需科目参考答案(100分)
- 人教新课标二年级数学上册2.2.1 《不退位减》说课稿3
评论
0/150
提交评论