学生在线考试系统

软件开发流程

需求分析文档、概要设计文档、详细设计文档、编码和测试、安装和调试、维护和升级

软件需求分析文档

(1)学员系统

  • 用户模块:登录、修改密码、退出
  • 考试模块:开始考试、查询成绩、导出成绩

(2)管理员系统

  • 学员管理模块:增加学员、删除学员、修改学员、查询学员
  • 考题管理模块:增加考题、删除考题、修改考题、查找考题、导入考题

框架图如下所示
学生考试系统的需求分析图

软件的概要设计

  • 在线考试系统采用C(Client客户端)/S(Sever服务器)架构进行设计具体如下:
    – 客户端-主要用于提供字符串界面供用户选择并将处理结果显示出来
    – 服务器-主要用于针对字符界面的选择实现真正业务功能的处理
    – 数据库-主要用于进行数据的存取。

框架图详解如下:
在线考试系统概要设计图

软件的详细设计

  • 客户端和服务器之间采用基于tcp协议的编程模型进行通信。
    – 客户端的对象流输出流程连接服务器的对象输入流
    – 服务器的对象输出流连接客户端的对象输入流
  • 客户端采用消息类型作为具体业务的代表,伴随着账户信息等一并发送给服务器
    – 当客户端发来的消息类型为“managerCheck”时,则表示要实现管理员账户信息的校验功能
    – 当客户端发来的消息类型为“userCheck”时,则表示要实现学员账户信息的校验功能。
  • 服务器采用消息类型作为是否校验成功地标志发送给客户端
    – 当客户端收到的消息类型为success时,则表示账户信息正确。
    – 当客户端收到的消息类型为false时,则表示账户信息错误。

软件的编码流程

(1)管理员登录功能

  • 编写基于tcp协议的服务器端,也就是初始化服务器;
  • 编程基于tcp协议的客户端,来连接服务器;
  • 编写客户端的字符界面并提示客户进行业务的选择;
  • 将客户的选择和输入的相关信息通过对象输出流发送给服务器;
  • 服务器通过对象输入流接收客户端发来的消息并进行功能处理,将处理结果发送给客户端;
  • 客户端通过对象输入流接收服务器的处理结果并给出提示;

(2)学员管理系统的功能

  • 当项目启动时,将文件中所有的学员账户信息全部读取出来放到一个List集合中。
  • 当客户端输入要增加学员的用户名和密码信息,通过对象输入流发送给服务器。
  • 服务器接收客户端发来的消息,判断集合中是否存在该学员账户信息并实现具体添加功能。
  • 服务器将增加学员功能的处理结果发送给客户端,客户端给出对应的提示。
  • 当项目退出时,将集合中的所有学员账户信息整体写入到文件中

服务器初始化代码:

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**

 * 编程实现服务器的初始化和关闭
 */
public class ServerInitClose {
   
    /**
     * 自定义成员变量来记录Socket和流对象
     */
    private Socket s;
    private ServerSocket ss;
    private ObjectInputStream ois;
    private ObjectOutputStream oos;
    /**
     * 自定义成员方法实现服务器的初始化操作
     */
    public void SeverInit() throws IOException {
   
        //1.创建ServerSocket类型的对象并提供端口号
        ss = new ServerSocket(8888);
        //2.等待客户端的连接请求,调用accept()方法
        System.out.println("等待客户端的连接请求....");
        s = ss.accept();
        System.out.println("客户端连接成功!");
        //3.使用输入输出流进行通信
        ois = new ObjectInputStream(s.getInputStream());
        oos = new ObjectOutputStream(s.getOutputStream());
        System.out.println("服务器初始化成功!");
    }
    /**
     * 自定义成员方法实现服务器的关闭操作
     */
    public void serverClose() throws IOException {
   
        //4.关闭socket并释放有关的资源
        //调用初始化方法里面的变量(属于局部变量),不可以直接调用,
        //此时有两种解决方案:第一种是使用参数传递的方式,
        // 第二种是将变量提升为成员变量
        oos.close();
        ois.close();
        s.close();
        ss.close();
        System.out.println("服务器成功关闭!");
    }
}

服务器端界面接收消息并返回处理结果封装类

import java.io.IOException;

/**
 * 编程实现服务器主功能
 */
public class ServerView {
   
    /**
     * 使用合成复用原则
     */
    private ServerInitClose sic;
    private ServerDao sd;
    /**
     * 通过构造方法实现成员变量的初始化
     *
     * @param sic
     */
    public ServerView(ServerInitClose sic, ServerDao sd) {
   
        this.sic = sic;
        this.sd = sd;
    }

    /**
     * 自定义成员方法实现客户端发来消息的接收并处理
     */
    public void serverReceive() throws IOException, ClassNotFoundException {
   
        UserMessage tum = (UserMessage) sic.getOis().readObject();
        System.out.println("接收到的功能是:" + tum)
  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值