java课程设计说明书班级通讯录 .doc
计算机科学与技术学院课程设计说明书题 目: 班级通讯录课 程: JAVA课程设计院 (部): 计算机科学与技术学院专 业: 软件工程班 级: 082学生姓名: 学 号: 指导教师: 完成日期: 2009-12-22山东建筑大学计算机科学与技术学院课程设计任务书设计题目 班级通讯录已知技术参数和设计要求JDK1.6开发环境,windowsXP操作系统,实现一个班级通讯录管理系统,并实现对学生信息的添加、删除、修改和查询等操作。设计内容与步骤1. 程序设计、实现、调试2. 编写课程设计说明书设计工作计划与进度安排1. 设计工作4学时2. 实现与调试12学时3. 课程设计说明书4学时设计考核要求1. 考勤20%2. 课程设计说明书50%3. 答辩30%指导教师(签字): 教研室主任(签字):需求分析作为大二学生,学校活动与我们息息相关,而大量的人员流动产生的庞大冗杂的信息却使学生会等工作人员不知所措,通过这个小型用户管理软件的开发,可以在某种程度上解决这些问题。该软件提供了班级通讯录的添加、删除、改、查询。通讯录信息主要包括:姓名、班级、手机、家庭电话、电子邮件、通讯录地址、邮编。一、班级通讯录本程程序为班级通讯录管理系统,用户可以进行学生信息的添加、删除、修改、查询。1.设计内容设计GUI的班级通讯录管路系统,实现学生信息的添加、删除、修改、查询。2安装使用环境说明安装Netbeans IDE,要求JDK为1.6版本以上;安装完成后创建Java项目。3设计要求界面良好,实现用户信息的添加、删除、修改、查询等操作。4总体设计班级通讯录系统共有5个java源文件。类之间的主要关系如下图所示。Tongxunlu(主界面)StudentManger LinkListStudentNodeTongxunlu.java该类负责创建用户管理系统主窗口,该类有main方法,整个程序从该类开始执行。StudentManger.java 该类负责学生管理,可实现学生的添加、删除、修改、查询等。 LinkList.java 该类负责创建结点链表。Node.java该类创建结点,实现结点的有关信息。5具体设计Tongxunlu.java该类的成员变量及方法如下表:成员变量描述变量类型变量名称姓名文本框JTextFieldname1班级文本框JTextFieldclass1手机文本框JTextFieldtelephone1家庭电话文本框JTextFieldtome-tel1电子邮件文本框JTextFieldE_mail1通讯录地址文本框JTextFieldaddress1邮编文本框JTextFieldpostcode1提示及显示信息文本框JTextAreat0提示及显示信息文本框JTextAreat1提示及显示信息文本框JTextAreat2提示及显示信息文本框JTextAreat3提示及显示信息文本框JTextAreat4标题标签JLabel标题姓名标签JLabel姓名班级标签JLabel班级手机标签JLabel手机家庭电话标签JLabel家庭电话电子邮件标签JLabel电子邮件通讯录地址标签JLabel通讯录地址邮编标签JLabel邮编添加按钮JButton添加删除按钮JButton删除修改按钮JButton修改查询按钮JButton查询刷新按钮JButton刷新结束按钮JButton结束方法名称方法功能方法备注Tongxunlu创建窗口构造方法actionPerformed处理ActionEvent事件接口方法Main程序开始运行Tongxunlu.java的代码如下:import java.io.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;import javax.swing.border.EmptyBorder;public class Tongxunlu extends JFrame implements ActionListener private JTextField name1=new JTextField(10);private JTextField class1=new JTextField(10);private JTextField telephone1=new JTextField(10);private JTextField home_tel1=new JTextField(10);private JTextField E_mail1=new JTextField(10);private JTextField address1=new JTextField(10);private JTextField postcode1=new JTextField(10);private JTextArea t0=new JTextArea(10,10);private JTextArea t1=new JTextArea(10,10);private JTextArea t2=new JTextArea(10,10);private JTextArea t3=new JTextArea(10,10);private JTextArea t4=new JTextArea(10,10);StudentManger sM=new StudentManger();private JLabel 标题=new JLabel("班级通讯录");private JLabel 姓名=new JLabel("姓名:");private JLabel 班级=new JLabel("班级:");private JLabel 手机=new JLabel("手机:");private JLabel 家庭电话=new JLabel("家庭电话:");private JLabel 电子邮件=new JLabel("电子邮件:");private JLabel 通讯录地址=new JLabel("通讯录地址:");private JLabel 邮编=new JLabel("邮编:");private JButton 添加=new JButton("添加");private JButton 删除=new JButton("删除");private JButton 修改=new JButton("修改");private JButton 查询=new JButton("查询");private JButton 刷新=new JButton("刷新");private JButton 结束=new JButton("结束");public Tongxunlu()super("班级通讯录");JPanel contentPane=(JPanel)getContentPane();contentPane.setLayout(null);标题.setBounds(160,10,100,30); add(标题);姓名.setBounds(50, 50,100,20); add(姓名);班级.setBounds(50, 80,100,20); add(班级);手机.setBounds(50,110,100,20); add(手机);家庭电话.setBounds(50,140,100,20); add(家庭电话);电子邮件.setBounds(50,170,100,20); add(电子邮件);通讯录地址.setBounds(50,200,100,20); add(通讯录地址);邮编.setBounds(50,230,60,20); add(邮编); name1.setBounds(160, 50,170,20);add(name1);class1.setBounds(160, 80,170,20);add(class1);telephone1.setBounds(160,110,170,20);add(telephone1);home_tel1.setBounds(160,140,170,20); add(home_tel1);E_mail1.setBounds(160,170,170,20);add(E_mail1);address1.setBounds(160,200,170,20);add(address1);postcode1.setBounds(160,230,170,20);add(postcode1); t0.setBounds(10,255,390,20);add(t0);t1.setBounds(10,275,390,20);add(t1); t2.setBounds(10,295,390,20);add(t2);t3.setBounds(10,315,330,20);add(t3);t4.setBounds(10,335,330,20);add(t4);刷新.setBounds(340,335,60,20); add(刷新); 结束.setBounds(340,315,60,20); add(结束); 添加.setBounds( 35,360,60,30); add(添加);删除.setBounds(125,360,60,30); add(删除);修改.setBounds(215,360,60,30); add(修改);查询.setBounds(305,360,60,30); add(查询);tryFileReader fr=new FileReader("c:infor.txt");BufferedReader bf=new BufferedReader(fr);String str=bf.readLine();doint i=str.indexOf("");int I=str.lastIndexOf("");String 姓名=str.substring(0,i);String substr1=str.substring(i+1,I+1);i=substr1.indexOf("");I=substr1.lastIndexOf("");String 班级=substr1.substring(0,i);String substr2=substr1.substring(i+1,I+1);i=substr2.indexOf("");I=substr2.lastIndexOf("");String 手机=substr2.substring(0,i);String substr3=substr2.substring(i+1,I+1);i=substr3.indexOf("");I=substr3.lastIndexOf("");String 家庭电话=substr3.substring(0,i);String substr4=substr3.substring(i+1,I+1);i=substr4.indexOf("");I=substr4.lastIndexOf("");String 电子邮件=substr4.substring(0,i);String substr5=substr4.substring(i+1,I+1);i=substr5.indexOf("");I=substr5.lastIndexOf("");String 通讯录地址=substr5.substring(0,i);String substr6=substr5.substring(i+1,I+1);i=substr6.indexOf("");I=substr6.lastIndexOf("");String 邮编=substr6.substring(0,i);Student 学生=new Student(姓名,班级,手机,家庭电话,电子邮件,通讯录地址,邮编);sM.addStudent(学生);str=bf.readLine();while(str!=null);catch(Exception e)添加.addActionListener(this);删除.addActionListener(this);修改.addActionListener(this);查询.addActionListener(this);刷新.addActionListener(this);结束.addActionListener(this);pack();t0.setText("添加:请在上面文本框中输入学生完整信息,单击添加按钮添加");t1.setText("删除:请在姓名栏里输入学生的姓名,单击删除按钮删除");t2.setText("修改:请在上面文本框中输入学生完整信息,单击修改按钮修改");t3.setText("查询:请在姓名栏里输入学生的姓名,单击查询按钮查询");t4.setText("结束程序请单击结束按钮. 刷新界面单击刷新");setSize(410,420);setVisible(true); public void actionPerformed(ActionEvent event)String command=event.getActionCommand();if(command.equals("添加")tryString n,c,t,h,e,a,p;n=name1.getText();c=class1.getText();t=telephone1.getText();h=home_tel1.getText();e=E_mail1.getText();a=address1.getText();p=postcode1.getText();if(n.equals("")|c.equals("")|t.equals("")|h.equals("")|e.equals("")|a.equals("")|p.equals("")t0.setText("请输入完整学生信息!");t1.setText("");t2.setText("");t3.setText("");t4.setText("");elseStudent s=new Student(n,c,t,h,e,a,p);if(sM.contains(s)t0.setText("已存在该学生信息");t1.setText("");t2.setText("");t3.setText("");t4.setText(""); elsesM.addStudent(s);t0.setText(n+""+c+""+t);t1.setText(h+""+e);t2.setText(a+""+p);t3.setText("添加成功");t4.setText("");catch(Exception e)if(command.equals("删除")String a=name1.getText();Student s=sM.foundStudent(a);if(s=null)t0.setText("不存在该学生信息!");t1.setText("删除失败!");t2.setText("");t3.setText("");t4.setText("");else a=sM.removeStudent(a);t0.setText(s.getNam()+''+s.getCla()+''+s.getTel()+'');t1.setText(s.getHom()+''+s.getE_m()+'');t2.setText(s.getAdd()+''+s.getPos();t3.setText("删除成功!");t4.setText("");if(command.equals("修改")String c,t,h,e,a,p;String n=name1.getText();Student s1=sM.foundStudent(n);if(s1=null)t0.setText("不存在该学生信息!");t1.setText("修改失败!");t2.setText("");t3.setText("");t4.setText("");elsec=class1.getText();t=telephone1.getText();h=home_tel1.getText();e=E_mail1.getText();a=address1.getText();p=postcode1.getText();if(n.equals("")|c.equals("")|t.equals("")|h.equals("")|e.equals("")|a.equals("")|p.equals("")t0.setText("请输入完整学生信息!");t1.setText("");t2.setText("");t3.setText("");t4.setText("");elseStudent s=new Student(n,c,t,h,e,a,p);String rm=sM.removeStudent(n);sM.addStudent(s);t0.setText(n+""+c+""+t);t1.setText(h+""+e);t2.setText(a+""+p);t3.setText("修改成功");t4.setText("");if(command.equals("查询")String a=name1.getText();Student s=sM.foundStudent(a);if(s=null)t0.setText("查询失败!");t1.setText("");t2.setText("");t3.setText("");t4.setText("");elset0.setText(s.getNam()+''+s.getCla()+''+s.getTel()+'');t1.setText(s.getHom()+''+s.getE_m()+'');t2.setText(s.getAdd()+''+s.getPos();t3.setText("查询成功!");t4.setText("");if(command.equals("刷新")name1.setText("");class1.setText("");telephone1.setText("");home_tel1.setText("");E_mail1.setText("");address1.setText("");postcode1.setText("");t0.setText("");t0.setText("添加:请在上面文本框中输入学生完整信息,单击添加按钮添加");t1.setText("删除:请在姓名栏里输入学生的姓名,单击删除按钮删除");t2.setText("修改:请在上面文本框中输入学生完整信息,单击修改按钮修改");t3.setText("查询:请在姓名栏里输入学生的姓名,单击查询按钮查询");t4.setText("结束程序请单击结束按钮. 刷新界面单击刷新");if(command.equals("结束")Node a=sM.head;tryFileWriter f=new FileWriter("c:infor.txt");for(int i=0;i<sM.count;i+)FileWriter fw=new FileWriter("c:infor.txt",true);Student b=(Student)a.value(); fw.write(b.getNam()+''+b.getCla()+''+b.getTel()+''+b.getHom()+''+b.getE_m()+''+b.getAdd()+''+b.getPos()+''); fw.write("rn");a=a.next(); fw.close(); catch(Exception e)System.exit(0);public static void main(String args) Tongxunlu txl=new Tongxunlu();Node.java该类的成员变量及方法如下表:成员变量描述变量类型变量名称结点的内容Nodedata后继结点NodenextElement方法名称方法功能方法备注Node(v,next)构造Node结点构造方法Node(Object v)构造Node结点构造方法Node next()获取next结点普通方法setNext(Node next)设置next结点普通方法value()获取结点内容普通方法setValue(value)设置结点内容普通方法Node.java的代码如下:public class Node protected Object data; protected Node nextElement; public Node(Object v,Node next) data=v; nextElement=next; public Node(Object v) data=v; nextElement=null; public Node next() return nextElement; public void setNext(Node next) nextElement=next; public Object value() return data; public void setValue(Object value) data=value; LinkList.java该类的成员变量及方法如下表:成员变量描述变量类型变量名称链表长度intcount链表头NodeHead方法名称方法功能方法备注LinkList()构造空链表构造方法isEmpty()判断链表是否为空普通方法addToHead(value)在链表头加入结点普通方法addToTail(value)在链表未加入结点普通方法contains(value)判断结点是否存在普通方法remove(Object value)删除特定结点普通方法LinkList.java的代码如下: public class LinkListprotected int count;protected Node head;public LinkList()head=null;count=0;public boolean isEmpty()return count=0;public void addToHead(Object value)head=new Node(value);count+;public void addToTail(Object value)Node temp=new Node(value,null);if(head!=null)Node finger=head;while(finger.next()!=null)finger=finger.next();finger.setNext(temp);else head=temp;count+;public boolean contains(Object value)Node finger=head;while(finger!=null && !finger.value().equals(value)finger=finger.next();return finger!=null;public Object remove(Object value)Node finger=head;Node previous=null;while(finger!=null && !finger.value().equals(value)previous=finger;finger=finger.next();if(finger!=null)if(previous=null)head=finger.next();elseprevious.setNext(finger.next();count-;return finger.value();return null; Student该类的成员变量及方法如下表:成员变量描述变量类型变量名称学生姓名Stringnam班级Stringcla手机Stringtel家庭电话Stringhom电子邮件StringE_m通讯录地址Stringadd邮编Stringpos方法名称方法功能方法备注Student构造学生信息构造方法Student()构造学生信息构造方法getNam()获取学生姓名普通方法getCla()获取学生班级普通方法getTel()获取学生电话普通方法getHom()获取学生家庭电话普通方法getE_m()获取学生电子邮件普通方法getAdd()获取学生地址普通方法getPos()获取邮编普通方法setNam(String newNam)设置学生姓名普通方法setCla(String newCla)设置学生班级普通方法setTel(String newTel) 设置学生电话普通方法setHom(String newHom)设置学生家庭电话普通方法setE_m(String newE_m)设置学生电子邮件普通方法setAdd(String newAdd)设置学生地址普通方法setPos(String newPos)设置邮编普通方法toString()输出学生全部信息普通方法Student.java的代码如下:public class Student private String nam; private String cla; private String tel; private String hom; private String E_m; private String add; private String pos; public Student() public Student(String newNam,String newCla,String newTel,String newHom,String newE_m,String newAdd,String newPos) nam=newNam; cla=newCla; tel=newTel; hom=newHom; E_m=newE_m; add=newAdd; pos=newPos; String getNam() return nam; String getCla() return cla; String getTel() return tel; String getHom() return hom; String getE_m() return E_m; String getAdd() return add; String getPos() return pos; void setNam(String newNam) nam=newNam; void setCla(String newCla) cla=newCla; void setTel(String newTel) tel=newTel; void setHom(String newHom) hom=newHom; void setE_m(String newE_m) E_m=newE_m; void setAdd(String newAdd) add=newAdd; void setPos(String newPos) pos=newPos; public String toString()returnnam+""+cla+""+tel+""+hom+""+E_m+""+add+""+pos; StudentManger该类的成员变量及方法如下表:成员变量描述变量类型变量名称无无无方法名称方法功能方法备注StudentManger()构造学生链表构造方法addStudent(s)增加人员普通方法removeStudent(s)删除人员普通方法foundStudent(sname)查询人员普通方法StudentManger.java的代码如下:public class StudentManger extends LinkListpublic StudentManger()super();