[学生信息系统管理第二篇]包结构设计与类结构设计

本文详细介绍了系统架构的划分,包括实体类、公共类、服务器功能类和客户端功能类的职责。针对每个包内的类,如Teacher、Student、SysConstants等进行了深入解析,并阐述了它们在客户端与服务器间数据传递、系统配置读取、服务线程初始化及业务逻辑处理等方面的具体作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一篇大概框架已经介绍了,这里主要对包和使用到的九个类进行分工细化.各位看官且听我一一介绍~~
对于包的分布,我们就用四个包来搞定:
A.com.yping.entity,用来存放实体类,例如教师类;
B.com.yping.util,存放公共类,例如系统使用的常量数据;
C.com.yping.server,存放服务器功能类;
D.com.yping.client,存放客户端功能类;
然后,我们对这四个包里都有哪些类进行详解:
A.entity包:
A.1 Teacher类,因为要通过网络传输对象,故使用序列化
package com.yping.entity;
import java.io.Serializable;

public class Teacher implements Serializable {

private int id; //教员编号
private String userName; //登录用户名
private String passWord; //登录密码
private String nickName; //教员姓名
//此处先省略getter/setter
}

A.2 Student类
package com.yping.entity;
import java.io.Serializable;

public class Student implements Serializable {
private int stuId; //学员编号
private String stuName; //学员姓名
private int teacherId; //教员姓名
private int stuAge; //学员年龄
private int stuSex; //学员性别
private String comments; //学员评语
//此处先省略setter/getter
}

B.util包:
B.1 SysConstants类,负责提供系统使用的常量数据
public class SysConstants {

public static final String SYS_PROPERTYNAME="sys.properties";
public static final String SYS_LISTENERPORT="PORT";
public static final String SYS_HOSTNAME="HOST";
public static final String SYS_SUCCESS="SUCCESS";
public static final String SYS_ERROR="ERROR";
public static final String SYS_LOGIN="LOGIN";
public static final String SYS_FIND="FIND";
public static final String SYS_UPDATE="UPDATE";
public static final String SYS_DELETE="DELETE";

}

B.2 Datas类,负责在客户端与服务器间传递数据
  package com.yping.util;
import java.io.Serializable;
import java.util.List;

import com.yping.entity.Student;
import com.yping.entity.Teacher;

public class Datas implements Serializable {
private String flag; //传递的标识
private Teacher teacher; //教员对象
private Student student; //学员对象
private List<Student> studentList; //学员集合
//此处先省略getter/setter
}

B.3 Tools类,负责读取sys.properties配置文件中的信息.
 import java.io.IOException;
import java.util.Properties;


public class Tools {
static
{
try{
p.load(Tools.class.getClassLoader().getResourceAsStream(SysConstants.SYS_PROPERTYNAME));
}catch(IOException e){
e.printStackTrace();
}
}
public static String getValue(String key)
{
return p.getProperty(key);
}
private static Properties p=new Properties();
}

C.Server包:
C.1 ServerContextListener服务器线程类.加载服务端服务,包括服务端socket初始化,启动一个线程用来监听来自客户端的请求连接.
 package com.yping.server;

public class ServerContextListener extends Thread {

public static void main(String[] args) {
//启动服务线程
new ServerContextListener().start();

}
public void run(){
//服务器socket初始化
//处理客户端发送的请求方法
//向客户端发送响应
}
}

C.2 ServerService类,服务器里提供的服务类,处理相关的业务逻辑.
package com.yping.server;

import com.yping.entity.Teacher;
import com.yping.entity.Student;
import java.util.*;

public class ServerService {

private static Teacher teacher=null; //教员对象
private static List<Student> studentList=null; //学员集合

static{
//初始化教员对象和学员集合
}
public Teacher doLogin(String userName,String passWord)
{
//服务器端的登录方法
return null;
}
public List<Student> findStudentByTeacher(int id)
{
//查询学员信息
return null;
}
public void deleteStudent(int id)
{
//删除学员信息
return null;
}
public void updateStudent(Student student)
{
//更新学员信息
return null;
}
}

D.client包:
D.1 ClientBusiness类,客户端业务类,包括客户端socket初始化,向服务器发送请求,实现客户端与服务器之间的业务调用.
package com.yping.client;

import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;

public class ClientBusiness {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

}

public Datas doLogin(String userName,String passWord)
{
//通过Socket调用服务器的登录服务

return null;
}
public Datas doFind(int teacherId)
{
//通过Socket调用服务器的查询学员信息服务
return null;
}
public Datas doUpdate(int stuId,String comments)
{
//通过Socket调用服务器的修改学员信息服务
return null;
}
public Datas doDelete(int stdId)
{
//通过Socket调用服务器的删除学员信息服务
return null;
}
public void initSocket()
{
//实例化Socket对象
}
public void closeSocket()
{
//关闭Socket连接
}
private Socket incoming=null;
private ObjectInputStream objInputStream=null;
private ObjectOutputStream objOutputStream=null;
}

D.2 Client类,客户端界面类,生成客户操作界面,调用ClientBusiness类的业务方法.
这一篇如果排版得不好,还请各位多多包涵!有好的建议还望不吝赐教~接下会每一篇都会详细地说明各个类之间的关系,及具体的功能实现,代码编写.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值