精华内容
下载资源
问答
  • 我上传了文件,里面有完整的课程设计代码及实验报告,可以直接下载。...能够正确运用软件测试技术和策略,熟练的进行系统的单元测试、集成测试、系统测试、确认测试的方法,掌握测试用例的设计。 ...

    我上传了文件,里面有完整的课程设计代码及实验报告,可以直接下载。(点击我的头像一次或者两次,可以看到我的资源)。

    信息工程学院上机实验报告

    (第  3  次)

    一、实验名称

     

    毕业生管理信息系统

     

    二、实验目的及要求(本次上机实验所涉及并要求掌握的知识点)

     

    能够正确运用软件测试技术和策略,熟练的进行系统的单元测试、集成测试、系统测试、确认测试的方法,掌握测试用例的设计。

     

    三、实验环境(本次上机实践所使用的平台和相关软件)

     

    JAVA、C、C++等以及MYSQL或SQL Server 开发环境

     

    四、实验设计

    (1)系统流程

     

    图1.所示为系统的基本流程

    (2)登陆界面代码

    package 毕业生管理;

    import java.awt.BorderLayout;

    import java.awt.Container;

    import java.awt.GridLayout;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JOptionPane;

    import javax.swing.JPanel;

    import javax.swing.JPasswordField;

    import javax.swing.JTextField;

     

    public class LogIn {

    public static void main(String[] args) {

    My f = new My();

     

    f.setTitle("登陆");

    f.setLocation(300, 200);

    f.setSize(300, 150);

    f.setVisible(true);

    }

    }

     

    class My extends JFrame implements ActionListener {

    Connect op = new Connect();

    Container c = getContentPane();

    JPanel p1 = new JPanel();

    JPanel p2 = new JPanel();

    JLabel userName = new JLabel(" 用户 :");

    JLabel password = new JLabel(" 密码 :");

    JTextField nameField = new JTextField();

    JPasswordField passField = new JPasswordField();

    JButton confirm = new JButton(" 确认 ");

     

    public My() {

    c.add(p1, BorderLayout.CENTER);

    c.add(p2, BorderLayout.SOUTH);

    p1.setLayout(new GridLayout(2, 2, 50, 10));

    p1.add(userName);

    p1.add(nameField);

    p1.add(password);

    p1.add(passField);

    p2.add(confirm);

    confirm.addActionListener(this);

    }

     

    @Override

    public void actionPerformed(ActionEvent e) {

    if (e.getSource() == confirm) {

    String name = nameField.getText();

    String passwood = passField.getText();

    boolean i = op.logCheck(name, passwood);

    if (i) {

    this.dispose();

    HomePage f = new HomePage();

    f.setTitle("就业信息管理系统");

    f.setLocation(300, 200);

    f.setSize(580, 300);

    f.setVisible(true);

    } else {

    JOptionPane.showMessageDialog(null,

    "请输入正确的用户名和密码!",

    "提示", JOptionPane.INFORMATION_MESSAGE);

    }

    }

    }

    }

     

    (3)主页面布局代码

    package 毕业生管理;

    import java.awt.BorderLayout;

    import java.awt.Container;

    import java.awt.GridLayout;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JOptionPane;

    import javax.swing.JPanel;

    import java.awt.Font;

    @SuppressWarnings("serial")

     

    class HomePage extends JFrame implements ActionListener {

    Container c = getContentPane();

    JPanel page1 = new JPanel();

    JPanel page2 = new JPanel();

    JPanel page3 = new JPanel();

    JLabel welcome = new JLabel("   欢  迎  来  到  毕  业  信  息  管  理  系  统 ");

    JLabel space1 = new JLabel("                      ");

    JLabel space2 = new JLabel("                      ");

    JButton stu = new JButton("学生信息列表");

    JButton emp = new JButton("就业信息列表");

    JButton adm = new JButton("管理人员列表");

    Font font1 = new Font("00", Font.BOLD, 20);

    Font font2 = new Font("00", Font.ITALIC, 20);

     

    public HomePage() {

    c.add(page1, BorderLayout.CENTER);

    c.add(page2, BorderLayout.EAST);

    c.add(page3, BorderLayout.WEST);

    //两侧的两个空白内容,调整页面的作用

    page2.add(space1);

    page3.add(space2);

    page1.setSize(500, 500);

    //容器的布局管理器

    page1.setLayout(new GridLayout(4, 0, 50, 20));

    page1.add(welcome);

    page1.add(stu);

    page1.add(emp);

    page1.add(adm);

    welcome.setFont(font1);

    stu.setFont(font1);

    emp.setFont(font1);

    adm.setFont(font1);

    stu.addActionListener(this);

    emp.addActionListener(this);

    adm.addActionListener(this);

    }

     

    public void actionPerformed(ActionEvent e) {

    if (e.getSource() == stu) {

    this.dispose();

    RetrievalStu page1 = new RetrievalStu();

    page1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    page1.setTitle("学生信息检索");

    page1.setLocation(200, 100);

    page1.setSize(815, 600);

    page1.setVisible(true);

    }

    if (e.getSource() == emp) {

    this.dispose();

    RetrievalEmp page3 = new RetrievalEmp();

    page3.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    page3.setTitle("就业信息检索");

    page3.setLocation(200, 100);

    page3.setSize(815, 600);

    page3.setVisible(true);

    }

    if (e.getSource() == adm) {

    //只有权限值是"一"才可以进入设置

    if(Connect.limits.equals("1") ) {

    this.dispose();

    RetrievalAdm page2 = new RetrievalAdm();

    page2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    page2.setTitle("管理人员检索");

    page2.setLocation(200, 100);

    page2.setSize(815, 600);

    page2.setVisible(true);

    }

    else {

    JOptionPane.showMessageDialog(null,"权限不足!",

    "提示", JOptionPane.INFORMATION_MESSAGE);

    }

    }

    }

    }

    (4)毕业生信息添加代码

    package 毕业生管理;

    import java.awt.BorderLayout;

    import java.awt.Container;

    import java.awt.GridLayout;

    import java.awt.event.*;

    import java.util.ArrayList;

    import javax.swing.*;

     

    public class AddStu extends JFrame implements ActionListener {

    Connect op = new Connect();

    Container c = getContentPane();

    JPanel p1 = new JPanel();

    JLabel stuNumber = new JLabel("学号:");

    JLabel stuName = new JLabel("姓名:");

    JLabel stusex = new JLabel("性别:");

    JLabel college = new JLabel("学院:");

    JLabel professional = new JLabel("专业::");

    JLabel classed = new JLabel("年级:");

    JLabel nation = new JLabel("民族");

    JTextField numberField = new JTextField();

    JTextField nameField = new JTextField();

    JTextField sexField = new JTextField();

    JTextField collegeField = new JTextField();

    JTextField professionalField = new JTextField();

    JTextField classedField = new JTextField();

    JTextField nationField = new JTextField();

    JButton cancel = new JButton("取消");

    JButton confirm = new JButton("确认");

     

    public AddStu(){

    c.add(p1, BorderLayout.NORTH);

    p1.setLayout(new GridLayout(8, 2, 20, 10));

    p1.add(stuNumber);

    p1.add(numberField);

    p1.add(stuName);

    p1.add(nameField);

    p1.add(stusex);

    p1.add(sexField);

    p1.add(college);

    p1.add(collegeField);

    p1.add(professional);

    p1.add(professionalField);

    p1.add(classed);

    p1.add(classedField);

    p1.add(nation);

    p1.add(nationField);

    p1.add(cancel);

    p1.add(confirm);

    cancel.addActionListener(this);

    confirm.addActionListener(this);

    }

     

    public void actionPerformed(ActionEvent e) {

    if (e.getSource() == cancel) {

    this.dispose();

    }

    if (e.getSource() == confirm) {

    this.dispose();

    InfoStu stu = new InfoStu(numberField.getText(),

    nameField.getText(), sexField.getText(),

    collegeField.getText(), professionalField.getText(),

    classedField.getText(),nationField.getText());

    ArrayList<String> strArray = new ArrayList<String>();

    strArray = op.addstuJudgement();

    int n = 0;

    int replicate = 0;

    while (n < Integer.parseInt(strArray.get(0))) {

    n++;

    if (numberField.getText().equals(strArray.get(n))) {

    replicate++;

    }

    }

    if (replicate == 0) {

    //保存学生

    op.addStuSave(stu);

    JOptionPane.showMessageDialog(null, "增加学生信息成功! ",

    "提示", JOptionPane.INFORMATION_MESSAGE);

    } else {

    JOptionPane.showMessageDialog(null,

    "学生已存在!", "提示",

    JOptionPane.INFORMATION_MESSAGE);

    }

    }

    }

    }

    (5)毕业生信息删除代码

    package 毕业生管理;

    import java.awt.BorderLayout;

    import java.awt.Container;

    import java.awt.GridLayout;

    import java.awt.event.*;

    import javax.swing.*;

    @SuppressWarnings("serial")

     

    public class DeleteStu extends JFrame implements ActionListener {

    Connect op = new Connect();

    Container c = getContentPane();

    JPanel p1 = new JPanel();

    JLabel stuNumber = new JLabel("学生学号");

    JTextField numberField = new JTextField();

    JButton cancel = new JButton("取消");

    JButton delete = new JButton("确认");

     

    public DeleteStu() {

    c.add(p1, BorderLayout.NORTH);

    p1.setLayout(new GridLayout(2, 2, 20, 10));

    p1.add(stuNumber);

    p1.add(numberField);

    p1.add(cancel);

    p1.add(delete);

    cancel.addActionListener(this);

    delete.addActionListener(this);

    }

     

    public void actionPerformed(ActionEvent e) {

    if (e.getSource() == cancel) {

    this.dispose();

    }

    if (e.getSource() == delete) {

    InfoStu info = new InfoStu(numberField.getText());

    this.dispose();

    if (op.deleteStuCheck(numberField.getText()) != 0) {

    JOptionPane.showMessageDialog(null,

    "删除学生失败!",

    "提示", JOptionPane.INFORMATION_MESSAGE);

    } else {

    if (op.deletestu( info ) == 1) {

    JOptionPane.showMessageDialog(null,

    "删除学生成功!", "提示",

    JOptionPane.INFORMATION_MESSAGE);

    } else {

    JOptionPane.showMessageDialog(

    null,

    "删除学生失败 . 学生不存在!",

    "提示", JOptionPane.INFORMATION_MESSAGE);

    }

    }

    }

    }

    }

    (6)毕业生信息编辑代码

    package 毕业生管理;

    import java.awt.BorderLayout;

    import java.awt.Container;

    import java.awt.GridLayout;

    import java.awt.event.*;

    import java.util.ArrayList;

    import javax.swing.*;

     

    public class Editstu extends JFrame implements ActionListener {

    Connect op = new Connect();

    Container c = getContentPane();

    JPanel p1 = new JPanel();

    JLabel stuNumber = new JLabel("学号:");

    JLabel stuName = new JLabel("姓名:");

    JLabel stusex = new JLabel("性别:");

    JLabel college = new JLabel("学院:");

    JLabel professional = new JLabel("专业::");

    JLabel classed = new JLabel("年级:");

    JLabel nation = new JLabel("民族");

    JTextField numberField = new JTextField();

    JTextField nameField = new JTextField();

    JTextField sexField = new JTextField();

    JTextField collegeField = new JTextField();

    JTextField professionalField = new JTextField();

    JTextField classedField = new JTextField();

    JTextField nationField = new JTextField();

    JButton cancel = new JButton("取消");

    JButton save = new JButton("保存");

     

    public Editstu(String number) {

    //得到number,与数据库核对一下

    numberField.setText(number);

    InfoStu stu = new InfoStu(number);

    ArrayList<String> strArray = new ArrayList<String>();

    strArray = op.outputStu(stu);

    System.out.println(strArray);

    numberField.setText(number);

    nameField.setText(strArray.get(1));

    sexField.setText(strArray.get(2));

    collegeField.setText(strArray.get(3));

    professionalField.setText(strArray.get(4));

    classedField.setText(strArray.get(5));

    nationField.setText(strArray.get(6));

    c.add(p1, BorderLayout.NORTH);

    p1.setLayout(new GridLayout(8, 2, 20, 10));

    p1.add(stuNumber);

    p1.add(numberField);

    p1.add(stuName);

    p1.add(nameField);

    p1.add(stusex);

    p1.add(sexField);

    p1.add(college);

    p1.add(collegeField);

    p1.add(professional);

    p1.add(professionalField);

    p1.add(classed);

    p1.add(classedField);

    p1.add(nation);

    p1.add(nationField);

    p1.add(cancel);

    p1.add(save);

    cancel.addActionListener(this);

    save.addActionListener(this);

    }

    //执行操作

    public void actionPerformed(ActionEvent e) {

    if (e.getSource() == cancel) {

    this.dispose();

    }

    if (e.getSource() == save) {

    InfoStu stu  = new InfoStu(numberField.getText(),nameField.getText(), sexField.getText(),

    collegeField.getText(), professionalField.getText(),

    classedField.getText(),nationField.getText());

    if (!sexField.getText().equals("男") &&

    !sexField.getText().equals("女")) {

    JOptionPane.showMessageDialog(

    null,

    "性别只能为“男”、“女”!",

    "提示", JOptionPane.INFORMATION_MESSAGE);

    } else {

    this.dispose();

    op.inputstu(stu);

    JOptionPane.showMessageDialog(null,

    "编辑学生信息成功!", "提示",

    JOptionPane.INFORMATION_MESSAGE);

    }

    }

    }

    }

    (7)毕业生就业信息添加代码

    package 毕业生管理;

    import java.awt.BorderLayout;

    import java.awt.Container;

    import java.awt.GridLayout;

    import java.awt.event.*;

    import java.util.ArrayList;

    import javax.swing.*;

    @SuppressWarnings("serial")

     

    public class AddEmp extends JFrame implements ActionListener {

    Connect op = new Connect();

    Container c = getContentPane();

    JPanel p1 = new JPanel();

    JLabel EmpNumber = new JLabel("学号:");

    JLabel EmpTime = new JLabel("时间:");

    JLabel EmpUnit = new JLabel("单位:");

    JLabel EmpNature = new JLabel("性质:");

    JLabel EmpJob = new JLabel("职务::");

    JLabel EmpAddress = new JLabel("地址:");

    JTextField numberField = new JTextField();

    JTextField timeField = new JTextField();

    JTextField unitField = new JTextField();

    JTextField jobField = new JTextField();

    JTextField natureField = new JTextField();

    JTextField addressField = new JTextField();

    JButton cancel = new JButton("取消");

    JButton confirm = new JButton("确认");

     

    public AddEmp(){

    c.add(p1, BorderLayout.NORTH);

    p1.setLayout(new GridLayout(7, 2, 20, 10));

    p1.add(EmpNumber);

    p1.add(numberField);

    p1.add(EmpTime);

    p1.add(timeField);

    p1.add(EmpUnit);

    p1.add(unitField);

    p1.add(EmpNature);

    p1.add(natureField);

    p1.add(EmpJob);

    p1.add(jobField);

    p1.add(EmpAddress);

    p1.add(addressField);

    p1.add(cancel);

    p1.add(confirm);

    cancel.addActionListener(this);

    confirm.addActionListener(this);

    }

     

    public void actionPerformed(ActionEvent e) {

    if (e.getSource() == cancel) {

    this.dispose();

    }

    if (e.getSource() == confirm) {

    this.dispose();

    InfoEmp emp = new InfoEmp(numberField.getText(),

    timeField.getText(), unitField.getText(),

    natureField.getText(), jobField.getText(),

    addressField.getText());

    ArrayList<String> strArray = new ArrayList<String>();

    strArray = op.addEmpJudgement();

    System.out.println(strArray);

    int n = 0;

    int replicate = 0;

    while (n < Integer.parseInt(strArray.get(0))) {

    n++;

    if (numberField.getText().equals(strArray.get(n))) {

    replicate++;

    }

    }

    if (replicate == 0) {

    if( op.addEmpSave(emp) )

    JOptionPane.showMessageDialog(null,"增加就业信息成功","提示",

    JOptionPane.INFORMATION_MESSAGE);

    else

    JOptionPane.showMessageDialog(null,"增加就业信息失败","提示",

    JOptionPane.INFORMATION_MESSAGE);

    } else {

    JOptionPane.showMessageDialog(null,"该生就业信息已存在","提示",

    JOptionPane.INFORMATION_MESSAGE);

    }

    }

    }

    }

    (8)毕业生就业信息删除功能代码

    package 毕业生管理;

    import java.awt.BorderLayout;

    import java.awt.Container;

    import java.awt.GridLayout;

    import java.awt.event.*;

    import javax.swing.*;

    @SuppressWarnings("serial")

     

    public class DeleteEmp extends JFrame implements ActionListener {

    Connect op = new Connect();

    Container c = getContentPane();

    JPanel p1 = new JPanel();

    JLabel EmpNumber = new JLabel("学号");

    JTextField numberField = new JTextField();

    JButton cancel = new JButton("取消");

    JButton delete = new JButton("确认");

     

    public DeleteEmp() {

    c.add(p1, BorderLayout.NORTH);

    p1.setLayout(new GridLayout(2, 2, 20, 10));

    p1.add(EmpNumber);

    p1.add(numberField);

    p1.add(cancel);

    p1.add(delete);

    cancel.addActionListener(this);

    delete.addActionListener(this);

    }

    public void actionPerformed(ActionEvent e) {

    if (e.getSource() == cancel) {

    this.dispose();

    }

    if (e.getSource() == delete) {

    InfoStu reader = new InfoStu(numberField.getText());

    this.dispose();

    if (op.deleteEmpCheck(numberField.getText()) != 0) {

    JOptionPane.showMessageDialog(null,

    "删除就业信息失败!",

    "提示", JOptionPane.INFORMATION_MESSAGE);

    } else {

    if (op.deleteEmp(reader) == 1) {

    JOptionPane.showMessageDialog(null,

    "删除就业信息成功!", "提示",

    JOptionPane.INFORMATION_MESSAGE);

    } else {

    JOptionPane.showMessageDialog(null,

    "删除失败. 该学生不存在!",

    "提示", JOptionPane.INFORMATION_MESSAGE);

    }

    }

    }

    }

    }

    (9)毕业生就业信息编辑功能代码

    package 毕业生管理;

    import java.awt.BorderLayout;

    import java.awt.Container;

    import java.awt.GridLayout;

    import java.util.ArrayList;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JOptionPane;

    import javax.swing.JPanel;

    import javax.swing.JTextField;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    @SuppressWarnings("serial")

     

    public class EditEmp extends JFrame implements ActionListener {

    Connect op = new Connect();

    Container c = getContentPane();

    JPanel p1 = new JPanel();

    JLabel EmpNumber = new JLabel("学号:");

    JLabel EmpTime = new JLabel("时间:");

    JLabel EmpUnit = new JLabel("单位:");

    JLabel EmpNature = new JLabel("性质:");

    JLabel EmpJob = new JLabel("职业::");

    JLabel EmpAddress = new JLabel("地址:");

    JTextField NumberField = new JTextField();

    JTextField TimeField = new JTextField();

    JTextField UnitField = new JTextField();

    JTextField NatureField = new JTextField();

    JTextField JobField = new JTextField();

    JTextField AddressField = new JTextField();

    JButton cancel = new JButton("Cancel");

    JButton save = new JButton("Save!!");

     

    public EditEmp(String number) {

    NumberField.setText(number);

    InfoEmp emp = new InfoEmp(number);

    ArrayList<String> strArray = new ArrayList<String>();

    strArray = op.outputEmp(emp);

    NumberField.setText(number);

    TimeField.setText(strArray.get(1));

    UnitField.setText(strArray.get(2));

    NatureField.setText(strArray.get(3));

    JobField.setText(strArray.get(4));

    AddressField.setText(strArray.get(5));

    c.add(p1, BorderLayout.NORTH);

    p1.setLayout(new GridLayout(7, 2, 20, 10));

    p1.add(EmpNumber);

    p1.add(NumberField);

    p1.add(EmpTime);

    p1.add(TimeField);

    p1.add(EmpUnit);

    p1.add(UnitField);

    p1.add(EmpNature);

    p1.add(NatureField);

    p1.add(EmpJob);

    p1.add(JobField);

    p1.add(EmpAddress);

    p1.add(AddressField);

    p1.add(cancel);

    p1.add(save);

    cancel.addActionListener(this);

    save.addActionListener(this);

    }

    //执行操作

    public void actionPerformed(ActionEvent e) {

    System.out.println("进入 actionPerformed 函数");

    if (e.getSource() == cancel) {

    this.dispose();

    }

    if (e.getSource() == save) {

    InfoEmp emp1 = new InfoEmp(NumberField.getText(),TimeField.getText(), UnitField.getText(),

    NatureField.getText(), JobField.getText(),

    AddressField.getText());

    op.inputEmp(emp1);

    JOptionPane.showMessageDialog(null,

    "编辑学生信息成功!", "提示",

    JOptionPane.INFORMATION_MESSAGE);

    this.dispose();

    }

    }

    }

    (10)毕业生就业情况查询(以地区划分)功能代码

    package 毕业生管理;

    import java.awt.BorderLayout;

    import java.awt.Container;

    import java.awt.Dimension;

    import java.awt.GridLayout;

    import javax.swing.JButton;

    import javax.swing.JLabel;

    import javax.swing.JOptionPane;

    import javax.swing.JPanel;

    import javax.swing.JScrollPane;

    import javax.swing.JTable;

    import javax.swing.JTextField;

    import javax.swing.table.DefaultTableModel;

    import javax.swing.JFrame;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import java.util.ArrayList;

    @SuppressWarnings("serial")

     

    public class MajorSearch extends JFrame implements ActionListener {

    Connect op = new Connect();

    Container c = getContentPane();

    JPanel p1 = new JPanel();

    JLabel major = new JLabel("地区:");

    JTextField majorField = new JTextField();

    JButton cancel  = new JButton("取消");

    JButton confirm = new JButton("确认");

    Object[] province = {"安徽","澳门","北京","重庆","福建","甘肃","广东",

    "广西","贵州","海南","河北","河南","黑龙江","湖北",

    "湖南","吉林","江苏","江西","辽宁","内蒙古",

    "宁夏","青海","山东","山西","陕西","上海","四川",

    "台湾","天津","西藏","香港","新疆","云南","浙江"};

    Object[][] ob = new Object[40][26];

    JTable table = new JTable(ob, province);

    JScrollPane scrollPane = new JScrollPane(table);

     

    public MajorSearch(){

    c.add(p1, BorderLayout.NORTH);

    p1.setLayout(new GridLayout(2, 2, 20, 10));

    p1.add(major);

    p1.add(majorField);

    p1.add(cancel);

    p1.add(confirm);

    cancel.addActionListener(this);

    confirm.addActionListener(this);

    String[] s = {"地址","人数"};

    for (int i = 0; i < 5; i++) {

    DefaultTableModel employee = new DefaultTableModel(ob, s);

    for (int n = 0; n < 20; n++) {

    for (int m = 0; m < 6; m++) {

    ob[n][m] = this.ob[n][m];

    }

    table.setModel(employee);

    table.invalidate();

    }

    }

    c.add(p1, BorderLayout.CENTER);

    p1.setLayout(null);

    scrollPane.setBounds(0, 0, 800,450);

    p1.add(scrollPane);

    table.setPreferredScrollableViewportSize(new Dimension(400, 300));

    }

     

    public void actionPerformed(ActionEvent e) {

    if (e.getSource() == cancel) {

    this.dispose();

    }

    if (e.getSource() == confirm) {

    this.dispose();

    JPanel p1 = new JPanel();

    p1.setLocation(300, 200);

    p1.setSize(300, 200);

    p1.setVisible(true);

    Object[] s = { "地址", "人数" };

    Object[][] ob = new Object[40][2];

    JTable table = new JTable(ob, s);

    JScrollPane scrollPane = new JScrollPane(table);

    ob = op.majorSearchEmp( majorField.getText() );

    System.out.println(ob);

    for (int i = 0; i < 5; i++) {

    DefaultTableModel employee = new DefaultTableModel(ob, s);

    for (int n = 0; n < 20; n++) {

    for (int m = 0; m < 2; m++) {

    ob[n][m] = this.ob[n][m];

    }

    table.setModel(employee);

    table.invalidate();

    }

    }

    }

    }

    }

    (11)用户管理添加功能代码

    package 毕业生管理;

    import java.util.ArrayList;

    import java.awt.BorderLayout;

    import java.awt.Container;

    import java.awt.GridLayout;

    import javax.swing.JButton;

    import javax.swing.JLabel;

    import javax.swing.JOptionPane;

    import javax.swing.JPanel;

    import javax.swing.JPasswordField;

    import javax.swing.JTextField;

    import javax.swing.JFrame;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    @SuppressWarnings("serial")

     

    public class AddAdm extends JFrame implements ActionListener {

    Connect op = new Connect();

    Container c = getContentPane();

    JPanel p1 = new JPanel();

    JLabel AdmNumber = new JLabel("账户:");

    JLabel AdmPassWord = new JLabel("密码:");

    JLabel AdmLimit = new JLabel("权限:");

    JTextField NumberField = new JTextField();

    JTextField PassWordField = new JTextField();

    JTextField LimitField = new JTextField();

    JButton cancel = new JButton("取消");

    JButton confirm = new JButton("确认");

     

    public AddAdm(){

    c.add(p1, BorderLayout.NORTH);

    p1.setLayout(new GridLayout(4, 2, 20, 10));

    p1.add(AdmNumber);

    p1.add(NumberField);

    p1.add(AdmPassWord);

    p1.add(PassWordField);

    p1.add(AdmLimit);

    p1.add(LimitField);

    p1.add(cancel);

    p1.add(confirm);

    cancel.addActionListener(this);

    confirm.addActionListener(this);

    }

     

    public void actionPerformed(ActionEvent e) {

    if (e.getSource() == cancel) {

    this.dispose();

    }

    if (e.getSource() == confirm) {

    this.dispose();

    InfoAdm adm = new InfoAdm(NumberField.getText()

    ,PassWordField.getText(),LimitField.getText());

    ArrayList<String> strArray = new ArrayList<String>();

    strArray = op.addAdmJudgement();

    int n = 0;

    int replicate = 0;

    while (n < Integer.parseInt(strArray.get(0))) {

    n++;

    if (NumberField.getText().equals(strArray.get(n))) {

    replicate++;

    }

    }

    if (replicate == 0) {

    op.addAdmSave(adm);

    JOptionPane.showMessageDialog(null, "增加管理信息成功! ",

    "提示", JOptionPane.INFORMATION_MESSAGE);

    } else {

    JOptionPane.showMessageDialog(null,

    "该管理已经存在!", "提示",

    JOptionPane.INFORMATION_MESSAGE);

    }

    }

    }

    }

    (12)用户管理删除功能代码

    package 毕业生管理;

    import java.awt.BorderLayout;

    import java.awt.Container;

    import java.awt.GridLayout;

    import java.awt.event.*;

    import javax.swing.*;

    @SuppressWarnings("serial")

     

    public class DeleteAdm extends JFrame implements ActionListener {

    Connect op = new Connect();

    Container c = getContentPane();

    JPanel p1 = new JPanel();

    JLabel stuNumber = new JLabel("用户名");

    JTextField numberField = new JTextField();

    JButton cancel = new JButton("取消");

    JButton delete = new JButton("删除");

     

    public DeleteAdm() {

    c.add(p1, BorderLayout.NORTH);

    p1.setLayout(new GridLayout(2, 2, 20, 10));

    p1.add(stuNumber);

    p1.add(numberField);

    p1.add(cancel);

    p1.add(delete);

    cancel.addActionListener(this);

    delete.addActionListener(this);

    }

     

    public void actionPerformed(ActionEvent e) {

    if (e.getSource() == cancel) {

    this.dispose();

    }

    if (e.getSource() == delete) {

    InfoAdm adm = new InfoAdm(numberField.getText());

    this.dispose();

    if (op.deleteAdmCheck(numberField.getText()) != 0) {

    JOptionPane.showMessageDialog(null,"删除失败!",

    "提示", JOptionPane.INFORMATION_MESSAGE);

    } else {

    if (op.deleteAdm(adm) == 1) {

    JOptionPane.showMessageDialog(null,"删除成功!",

    "提示",JOptionPane.INFORMATION_MESSAGE);

    } else {

    JOptionPane.showMessageDialog(null,

    "删除失败.用户不存在!",

    "提示", JOptionPane.INFORMATION_MESSAGE);

    }

    }

    }

    }

    }

    (13)用户管理权限编辑功能代码

    package 毕业生管理;

    import java.awt.BorderLayout;

    import java.awt.Container;

    import java.awt.GridLayout;

    import java.util.ArrayList;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JOptionPane;

    import javax.swing.JPanel;

    import javax.swing.JPasswordField;

    import javax.swing.JTextField;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    @SuppressWarnings("serial")

     

    public class EditAdm extends JFrame implements ActionListener {

    Connect op = new Connect();

    Container c = getContentPane();

    JPanel p1 = new JPanel();

    JLabel AdmNumber  = new JLabel("账户:");

    JLabel AdmPassWord  = new JLabel("密码:");

    JLabel AdmLimits  = new JLabel("权限:");

    JTextField NumberField = new JTextField();

    JTextField LimitsField = new JTextField();

    JTextField PassWordField = new JTextField();

    JButton cancel = new JButton("取消");

    JButton save = new JButton("保存");

     

    public EditAdm(String number) {

    NumberField.setText(number);

    InfoAdm adm = new InfoAdm(number);

    ArrayList<String> strArray = new ArrayList<String>();

    strArray = op.outputAdm(adm);

    System.out.println(strArray);

    NumberField.setText(number);

    PassWordField.setText(strArray.get(1));

    LimitsField.setText(strArray.get(2));

    c.add(p1, BorderLayout.NORTH);

    p1.setLayout(new GridLayout(7, 2, 20, 10));

    p1.add(AdmNumber);

    p1.add(NumberField);

    p1.add(AdmPassWord);

    p1.add(PassWordField);

    p1.add(AdmLimits);

    p1.add(LimitsField);

    p1.add(cancel);

    p1.add(save);

    cancel.addActionListener(this);

    save.addActionListener(this);

    }

    //执行操作

     

    public void actionPerformed(ActionEvent e) {

    if (e.getSource() == cancel) {

    this.dispose();

    }

    if (e.getSource() == save) {

    InfoAdm adm = new InfoAdm(NumberField.getText(), PassWordField.getText(),

    LimitsField.getText());

    // 权限值智能设置成123,1全权限 - 2半权限 3 仅可以查看

    if (!PassWordField.getText().equals("1") || !PassWordField.getText().equals("2")

    || !PassWordField.getText().equals("3")) {

    JOptionPane.showMessageDialog(null,

    "权限只能为 0 或 1 !",

    "Warning", JOptionPane.INFORMATION_MESSAGE);

    } else {

    op.inputAdm(adm);

    JOptionPane.showMessageDialog(null,

    "编辑管理信息成功!", "Information",

    JOptionPane.INFORMATION_MESSAGE);

    this.dispose();

    }

    }

    }

    }

    展开全文
  • 一般将软件开发分为可行性分析(计划)、需求分析、软件设计(概要设计、详细设计)、编码(含单元测试)、测试、运行维护等几个阶段。开发模式是线性。 适用于:需求明确或很少变更项目,如二次开发或升级型...
    1. 瀑布模型:是一个经典的软件生命周期模型,也叫预测型生命周期模型、完全计划驱动型生命周期。在这个模型里,在项目生命周期的尽早时间,要确定项目范围以及交付此范围所需要的时间和成本。
      1. 一般将软件开发分为可行性分析(计划)、需求分析、软件设计(概要设计、详细设计)、编码(含单元测试)、测试、运行维护等几个阶段。开发模式是线性的。
      2. 适用于:需求明确或很少变更的项目,如二次开发或升级型的项目,有利于大型软件开发人员的组织和管理;开发人员比较弱或缺乏经验。
      3. 以下情况优先选择瀑布模型:项目需求明确、充分了解拟交付的产品、有厚实的行业实践基础、或者整批一次性交付产品有利于干系人。
      4. 瀑布模型中每项开发活动具有以下特点:
        1. 从上一项开发活动接受其成果作为本次活动的输入;
        2. 利用这一输入,实施本次活动应完成的工作内容;
        3. 给出本次活动的工作成果,作为输出传给下一项开发活动;
        4. 对本次活动的实施工作成果进行评审。若其工作成果得到确认,则继续进行下一项开发活动;否则返回前一项,甚至更前的活动。
        5. 尽量减少多个阶段间的反复,以相对来说较小的费用来开发软件。
    2. 迭代模型:传统的软件开发工作大部分强调过程的串行执行,也就是一个活动需要在前一个活动完成后才开始,从而形成一个过程串,该过程串就组成了软件项目的生命周期。在迭代模型中,每个阶段都执行一次传统的、完整的串行过程串,执行一次过程串就是一次迭代。
      1. 以下情况优先选择迭代模型:组织需要管理不断变化的目标和范围,组织需要降低项目的复杂性,或者,产品的部分交付有利于一个或多个干系人,且不会影响最终或整批可交付成果的交付。
      2. 大型复杂项目通常采用迭代方式来实施,这使项目团队可以在迭代过程中综合考虑反馈意见和经验教训,从而降低项目风险。
      3. RUP(Rational Unified Process),即统一软件开发过程。是迭代模型的一种。
    3. 敏捷方法:是一种以人为核心,迭代,循序渐进的开发方法,适用于一开始并没有或不能完整地确定出需求和范围的项目,或者需要应对快速变化的环境,或者需求和范围难以事先确定,或者能够以有利于干系人的方式定义较小的增量改进。
      1. 敏捷方法也叫做适应型生命周期或变更驱动方法。
      2. 在软件项目的敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。
      3. 敏捷方法的目的:在于应对大量变更,获取干系人的持续参与。敏捷方法里迭代很快(2~4周迭代1次)而且所需要的时间和资源是固定的。
    4. V模型:
      1. V模型的价值:非常明确地标明了测试过程中存在的不同级别,并且清楚的描述了这些测试阶段和开发各阶段的对应关系;
      2. 单元测试的目的:针对编码过程中可能存在的各种错误,例如用户输入验证过程中的边界值的错误;
      3. 集成测试的目的:针对详细设计中可能存在的问题,尤其是检查各单元与其他程序部分之间的接口上可能存在的错误;
      4. 系统测试的目的:针对概要设计,检查系统作为一个整体是否有效的得到运行,例如在产品设置中是否能到达预期的高性能;
      5. 验收测试:通常由业务专家或用户进行,以确认产品真正符合用户业务上的需求。
    5. 原型化模型:是为了弥补瀑布模型的不足能产生的。
      1. 原型化模型减少了瀑布模型中因软件需求不明确而给开发工作带来的风险。
    6. 螺旋模型:是一个演化软件过程模型,将原型实现的迭代特征与线性顺序(瀑布)模型中控制和系统化的方面结合起来。使得软件的增量版本的快速开发成为可能。
      1. 螺旋模型强调了风险分析,特别适用于庞大而复杂的、高风险的系统。
    展开全文
  • JAVA实训学生信息管理系统6.18日志 1、数据访问接口实现类,对每一项实现六步走策略(插入、更新、删除) (1)获取数据库连接 (2)定义SQL字符串 (3)创建预备语句对象 (4)设置占位符值 (5)执行SQL,返回...

    JAVA实训学生信息管理系统6.18日志
    1、数据访问接口实现类,对每一项实现六步走策略(插入、更新、删除)
    (1)获取数据库连接
    (2)定义SQL字符串
    (3)创建预备语句对象
    (4)设置占位符的值
    (5)执行SQL,返回插入记录数
    (6)关闭预备语句对象
    在这里插入图片描述
    2、创建net.lfh.student.test包,在里面创建测试类TestCollegeDaoImpl
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    3、编写单元测试testUpdate()方法
    在这里插入图片描述
    4、运行单元测试方法testUpdate()
    在这里插入图片描述
    在学习JAVA过程中让我体会到了运行成功的乐趣,但是一个单词,一个标点符号的错误也会导致错误,所以在之后的学习中,我会认真一些,不再那么马虎。

    展开全文
  • Java第三次实训课程主要讲述如何创建数据访问接口和数据访问接口类,以及对访问数据接口类测试。 ...*将单元测试JUnit4添加到类路径,才能使用测试注解符@Test 将鼠标移到@Test,按+组合键,弹出

    Java第三次实训课程主要讲述如何创建数据访问接口和数据访问接口类,以及对访问数据接口类的测试。

    一,创建数据访问接口。

    分别创建数据访问接口:CollegeDao、StatusDao、StudentDao与UserDao,并将这些接口放到net.hw.student.dao包里。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    二,创建数据访问接口数据类。

    1,创建学校数据访问接口类
    在这里插入图片描述
    在这里插入图片描述

    2.对CollegeDaoImpl进行单元测试

    在这里插入图片描述
    *将单元测试JUnit4添加到类路径,才能使用测试注解符@Test
    将鼠标移到@Test,按+组合键,弹出快捷菜单,选择第一项 Add ‘JUnit4’ to classpath
    执行单元测试方法testFindById()
    在这里插入图片描述

    学生数据访问接口实现类

    1),创建学生数据访问接口实现类StudentDaoImpl
    在这里插入图片描述
    2),单元测试:对StudentDaoImpl进行单元测试
    在这里插入图片描述
    创建用户数据访问接口实现类
    1),创建用户数据访问接口实现类UserDaoImpl
    在这里插入图片描述
    2).单元测试:对UserDaoImpl进行单元测试
    在这里插入图片描述

    展开全文
  • 基于WEB仓库管理系统主要用于实现仓库出入库管理,基本功能包括:入库模块、出库模块、商品查看模块、用户注册模块、个人信息管理模块等。本系统结构如下: 入库模块:入库新商品,或者是入库已有商品。 出库...
  • 文章目录七、实现步骤(八)创建服务接口实现类1、创建学校服务接口实现类单元测试:对CollegeServiceImpl进行单元测试(1)编写测试方法testFindCollegeById() 七、实现步骤 (八)创建服务接口实现类 在...
  • 设计课题一:班级成绩管理系统 一、 问题描述: 对一个有N个学生班级,每个学生有M门课程。该系统实现对班级成绩录入、显示、修改、排序、保存等操作管理。 二、功能要求: 1、本系统采用一个结构体数组,...
  • 在原来精华网基础上增加在线测试这一功能模块,实现教师出题、学生在线考试(自由测试、单元测试、模拟考试)、错题本,以及相关的系统维护功能。 2.2 软件结构 在线测试功能主要包括三部分:教师出题、学生在线...
  • 软件测试经典面试题 (超实用)

    热门讨论 2012-02-16 13:48:08
    85、基于WEB信息管理系统测试时应考虑因素有哪些? 25 86、软件测试项目从什么时候开始,?为什么? 26 87、需求测试注意事项有哪些? 26 88、简述一下缺陷生命周期 26 89、你在你所在公司是怎么开展测试工作...
  • 相比较于其他自动化测试框架或者单元测试框架来将,ZenTaoATF主要特点如下: 1. 简单 1.1 程序简单 整个自动化测试框架只有一个zt文件,使用php开发,安装和运行都非常方便。 1.2 语法简单 ZenTaoATF语法...
  • 至于单元测试,这种怪兽级别应用,能不能拆分出来单元啊?</li><li>不可避免超长启动时间 3分钟以内都算是快。启动后,程序员抽支烟再回来不在少数。大量时间在等待,...
  • 网上购物系统

    2012-12-18 17:53:18
    运用SUN工具进行编写测试用例,进行单元测试和集成测试。以小巧体积和人性化界面完成简单手机文件管理功能。     本系统经过测试,运行稳定,可投入使用。 关键词 j2me 手机...
  • DevOps ACA 软件代码与质量管理(六)

    千次阅读 2021-03-07 10:13:55
    单元基础测试 软件代码与质量管理 1.版本控制 1. 版本控制-定义 在软件工程学,版本控制是指追踪和控制软件变更实践; 版本控制系统是用来辅助进行版本控制工具; 版本控制系统的发展历史 – cvS – ...
  • 根据运行结束后收集到的信息和打点时的信息来统计出当前测试用例对源码覆盖情况。 一个煎蛋栗子 以如下Node.js项目结构为例 <pre><code> . ├── LICENSE ├── README.md ├── index.js ├── node_...
  • 本书针对大多数日常oracle database 11g数据库管理任务,全面覆盖dba行业知识,并将理论与实践相结合,旨在为初中级dba提供高效运行数据库所需方方面面知识,帮助他们从oracle公司发行大量资料中找到自己...
  • 火炬博客系统5

    2008-01-13 11:11:50
    Spring能有效地组织中间层对象,通过Bean容器为业务对象、DAO对象和资源对象提供了IOC类型装配能力,将Struts和Hibernate集成起来,使用Spring构建应用程序易于单元测试。Spring为数据存取提供了一个一致框架...
  • 火炬博客系统7

    2008-01-13 11:16:25
    Spring能有效地组织中间层对象,通过Bean容器为业务对象、DAO对象和资源对象提供了IOC类型装配能力,将Struts和Hibernate集成起来,使用Spring构建应用程序易于单元测试。Spring为数据存取提供了一个一致框架...
  • 火炬博客系统6

    2008-01-13 11:14:11
    Spring能有效地组织中间层对象,通过Bean容器为业务对象、DAO对象和资源对象提供了IOC类型装配能力,将Struts和Hibernate集成起来,使用Spring构建应用程序易于单元测试。Spring为数据存取提供了一个一致框架...
  •  jsp中用system.out.print如果是在eclipse中调试话,eclipse会自动拦截系统输出流,然后输出在控制台中,而http输出流则不受影响,php好像无此功能,有一个syslog()函数,在windows下要到事件管理查看,...
  • ShopMX网店系统 V1.1

    2010-09-13 17:58:47
    ShopMX采用.NET+MSSQL进行开发,拥有先进标签技术和模板引擎,通过网站后台可轻松管理实现网店多种风格切换,只需要懂得简单网页制作朋友就可以轻松制作属于自己独特风格网店系统。 使用ShopMX系统,将获得...
  • 测试简单:ROS有一个内建的单元/组合集测试框架,称为“rostest”。这使得集成调试和分解调试很容易。 扩展性:ROS适合于大型实时系统与大型的系统开发项目。 ROS的概念 ROS有三个层次的概念:分别为Filesystem ...
  • 它可以按照预先设定模式在一个环境自动运作,不需要人为的管理,可以应用在科学勘探、无人驾驶机动车、无人工厂、仓库、服务机器人等等。智能小车能够实时显示时间、速度、里程,具有自动寻迹、寻光、避障功能...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    传统手工方式对图书信息管理已越来越不能适应社会发展需要,尤其是随着计算机网络和Internet普及,运用先进的信息管理系统对信息进行科学化和网络化管理,已成为图书信息管理系统发展趋势。 系统研发...
  • Junit_Recipes中文教程

    热门讨论 2011-05-31 10:19:12
    1.1.3单元测试的框架 1.1.4进入JUnit 1.1.5理解测试驱动开发 1.2开始使用JUnit 1.2.1下载和安装Juni 1.2.2编写一个简单测试 1.2.3理解TestCase类 1.2.4失败信息 1.2.5 JUnit怎样表示一个失败...
  • rubygems v1.8.4

    2019-10-28 11:13:53
    RubyGems 1.8.3 修复了4个bug: 修复了est_gem_package_tar_output 独立测试问题 修复了某个ruby版本的系统的测试失败问题 修复了滚动输出重构后遗留下某些有害调用问题 修复了 Syck 解析错误 (Psych)
  • 地理信息产业是信息产业一个重要组成部分,地理信息技术是IT技术一个重要分支,地理信息系统软件是一类特殊计算机信息系统软件,它是以各类空间数据及其属性为基础,为各种应用目的服务一类计算机信息系统。...
  • rubygems v1.8.4.zip

    2019-07-06 05:50:47
    特点: 能远程安装包 包之间依赖关系的管理 简单可靠卸载(uninstallation) 查询机制,能查询本地和远程服务器信息 能保持一个包不同版本 基于Web查看接口,能查看你安装gem的信息。 RubyGems 1.8.3 ...

空空如也

空空如也

1 2 3 4 5
收藏数 95
精华内容 38
关键字:

信息管理系统里的单元测试