中铁建设集团有限公司招聘官网_html5设计_免费的个人网站空间_app免费开发平台有哪些 4 系统设计

4.1系统概要设计

本学生宿舍管理系统选择B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式。适合在互联网上进行操作,只要用户能连网,任何时间、任何地点都可以进行系统的操作使用。系统工作原理图如图4-1所示:

图4-1 系统工作原理图

4.2系统结构设计

整个系统是由多个功能模块组合而成的,要将所有的功能模块都一一列举出来,然后进行逐个的功能设计,使得每一个模块都有相对应的功能设计,然后进行系统整体的设计。

学生宿舍管理系统结构图如图4-2所示。

图4-2 系统功能结构图

4.3系统顺序图设计

4.3.1登录模块顺序图

登录模块主要满足了管理员以及用户的权限登录,登录模块顺序图如图4-3所示。

图4-3 登录顺序图

4.3.2添加信息模块顺序图

管理员以及用户登录后均可进行添加信息操作,添加信息模块顺序图如图4-4所示。

图4-4 添加信息顺序图

4.4数据库设计

一个好的数据库可以关系到程序开发的优劣,数据库设计离不开表结构的设计,还有表与表之间的联系,以及系统开发需要设计的数据表内容等信息。在进行数据库设计期间,要结合实际情况来对数据库进行针对性的开发设计[12]。

4.4.1数据库E-R图设计

本学生宿舍管理系统采用的是mysql数据库,数据存储快,因为学生宿舍管理系统,主要的就是对信息的管理,信息内容比较多,这就需要好好的设计一个好的数据库,分类要清楚,不能添加信息的时候,造成信息太过混乱,设计好的数据库首先就需要先把各个实体之间的关系表达明确,系统的E-R图如下图所示:

(1) 管理员登录信息实体属性图如下图4-5所示

图4-5管理员登录信息实体属性图

(2)学生注册实体属性如下图4-6所示

图4-6学生注册实体属性图

3、报修信息管理实体图如图4-7所示:

图4-7报修信息管理实体图

4.4.2数据库表设计

将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。

dormitory_allocation

字段名称

类型

长度

不是null

主键

字段说明

dormitory_allocation_id

int

11

主键

宿舍分配ID

building

varchar

64

楼栋

dormitory_no

varchar

64

宿舍号

student

int

11

学生

bed

varchar

64

床位

check_in_time

date

0

入住时间

housemaster

int

11

宿管

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

dormitory_building_information

字段名称

类型

长度

不是null

主键

字段说明

dormitory_building_information_id

int

11

主键

宿舍楼信息ID

building

varchar

64

楼栋

number_of_layers

varchar

64

层数

total_number_of_dormitory

varchar

64

总宿舍数

housemaster

int

11

宿管

type

varchar

64

类型

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

dormitory_information

字段名称

类型

长度

不是null

主键

字段说明

dormitory_information_id

int

11

主键

宿舍信息ID

building

varchar

64

楼栋

dormitory_no

varchar

64

宿舍号

number_of_beds

int

11

床位数

number_of_people_checked_in

int

11

已入住人数

empty_bed

varchar

64

空床位

housemaster

int

11

宿管

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

housekeeper

字段名称

类型

长度

不是null

主键

字段说明

housekeeper_id

int

11

主键

宿管人员ID

hanguan_job_number

varchar

64

宿管工号

name_of_the_housekeeper

varchar

64

宿管姓名

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

user_id

int

11

用户ID

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

item_repair

字段名称

类型

长度

不是null

主键

字段说明

item_repair_id

int

11

主键

物品报修ID

building

varchar

64

楼栋

dormitory_no

varchar

64

宿舍号

student

int

11

学生

housemaster

int

11

宿管

item_name

varchar

64

物品名称

repair_content

text

0

报修内容

examine_state

varchar

16

审核状态

examine_reply

varchar

16

审核回复

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

leave_a_message

字段名称

类型

长度

不是null

主键

字段说明

leave_a_message_id

int

11

主键

宿管留言ID

housemaster

int

11

宿管

name_of_the_housekeeper

varchar

64

宿管姓名

theme

varchar

64

主题

related_pictures

varchar

255

相关图片

message_content

text

0

留言内容

examine_state

varchar

16

审核状态

examine_reply

varchar

16

审核回复

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

notice_announcement

字段名称

类型

长度

不是null

主键

字段说明

notice_announcement_id

int

11

主键

通知公告ID

title

varchar

64

标题

publisher

varchar

64

发布人

published_on

date

0

发布时间

relevant_attachments

varchar

255

相关附件

content

text

0

内容

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

sign_in_information

字段名称

类型

长度

不是null

主键

字段说明

sign_in_information_id

int

11

主键

签到信息ID

building

varchar

64

楼栋

dormitory_no

varchar

64

宿舍号

student

int

11

学生

bed

varchar

64

床位

housemaster

int

11

宿管

sign_in_name

varchar

64

签到名称

sign_in_time

datetime

0

签到时间

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

student_message

字段名称

类型

长度

不是null

主键

字段说明

student_message_id

int

11

主键

学生留言ID

student

int

11

学生

student_name

varchar

64

学生姓名

housemaster

int

11

宿管

theme

varchar

64

主题

related_pictures

varchar

255

相关图片

message_content

text

0

留言内容

examine_state

varchar

16

审核状态

examine_reply

varchar

16

审核回复

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

student_sign_in

字段名称

类型

长度

不是null

主键

字段说明

student_sign_in_id

int

11

主键

学生签到ID

building

varchar

64

楼栋

dormitory_no

varchar

64

宿舍号

student

int

11

学生

bed

varchar

64

床位

housemaster

int

11

宿管

sign_in_name

varchar

64

签到名称

sign_in_photo

varchar

255

签到照片

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

student_users

字段名称

类型

长度

不是null

主键

字段说明

student_users_id

int

11

主键

学生用户ID

student_number

varchar

64

学号

student_name

varchar

64

学生姓名

gender

varchar

64

性别

class_name

varchar

64

班级名称

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

user_id

int

11

用户ID

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

5系统详细设计

5.1管理员功能模块

管理员登录,通过填写注册时输入的用户、密码、权限以及验证码进行登录,如图5-1所示。

图5-1管理员登录界面图

登录代码如下:

 /**

     * 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostMapping("login")

    public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {

        log.info("[执行登录接口]");

        String username = data.get("username");

        String email = data.get("email");

        String phone = data.get("phone");

        String password = data.get("password");

        List resultList = null;

        QueryWrapper wrapper = new QueryWrapper<User>();

        Map<String, String> map = new HashMap<>();

        if(username != null && "".equals(username) == false){

            map.put("username", username);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        else if(email != null && "".equals(email) == false){

            map.put("email", email);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        else if(phone != null && "".equals(phone) == false){

            map.put("phone", phone);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }else{

            return error(30000, "账号或密码不能为空");

        }

        if (resultList == null || password == null) {

            return error(30000, "账号或密码不能为空");

        }

        //判断是否有这个用户

        if (resultList.size()<=0){

            return error(30000,"用户不存在");

        }

        User byUsername = (User) resultList.get(0);

        Map<String, String> groupMap = new HashMap<>();

        groupMap.put("name",byUsername.getUserGroup());

        List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));

        if (groupList.size()<1){

            return error(30000,"用户组不存在");

        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态

        if (!StringUtils.isEmpty(userGroup.getSourceTable())){

            String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());

            if (res==null){

                return error(30000,"用户不存在");

            }

            if (!res.equals("已通过")){

                return error(30000,"该用户审核未通过");

            }

        }

        //查询用户状态

        if (byUsername.getState()!=1){

            return error(30000,"用户非可用状态,不能登录");

        }

        String md5password = service.encryption(password);

        if (byUsername.getPassword().equals(md5password)) {

            // 存储Token到数据库

            AccessToken accessToken = new AccessToken();

            accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));

            accessToken.setUser_id(byUsername.getUserId());

            tokenService.save(accessToken);

            // 返回用户信息

            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));

            user.put("token", accessToken.getToken());

            JSONObject ret = new JSONObject();

            ret.put("obj",user);

            return success(ret);

        } else {

            return error(30000, "账号或密码不正确");

        }

}

    public String select(Map<String,String> query,Map<String,String> config){

        StringBuffer sql = new StringBuffer("select ");

        sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");

        sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));

        if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){

            sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");

        }

        if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){

            sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");

        }

        if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){

            int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;

            int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;

            sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);

        }

        log.info("[{}] - 查询操作,sql: {}",table,sql);

        return sql.toString();

}

    public List selectBaseList(String select) {

        List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);

        List<E> list = new ArrayList<>();

        for (Map<String,Object> map:mapList) {

            list.add(JSON.parseObject(JSON.toJSONString(map),eClass));

        }

        return list;

}

管理员登录进入学生宿舍管理系统可以查看系统首页、系统用户(管理员、宿管人员、学生用户)模块管理(宿舍信息、宿舍分配、学生留言、宿管留言、签到信息、通知公告、宿舍楼信息、学生签到、物品报修)等信息,如图5-2所示。

图5-2管理员功能界面图

管理员功能界面代码如下:

  public Map<String, Object> error(Integer code, String message) {

        Map<String, Object> map = new HashMap<>();

        map.put("error", new HashMap<String, Object>(4) {{

            put("code", code);

            put("message", message);

        }});

        return map;

}

用户管理,在用户管理页面中可以添加昵称、用户名、学生学号、学生姓名、学生性别、学生年龄等信息,还可以根据需要在学生列表查询进行修改或删除等详细操作,如图5-3所示。

图5-3用户管理界面图

用户管理代码如下:

/**

 * 用户组:用于用户前端身份和鉴权(UserGroup)表实体类

 *

 * @author xxx

 *@since 202X-XX-XX

 */

@TableName("user_group")

@Data

@EqualsAndHashCode(callSuper = false)

public class UserGroup implements Serializable {

    private static final long serialVersionUID = 968356951391304707L;

    /**

     * 用户组ID:[0,8388607]

     */

    @TableId(value = "group_id", type = IdType.AUTO)

    private Integer groupId;

    /**

     * 显示顺序:[0,1000]

     */

    @TableField(value = "display")

    private Integer display;

    /**

     * 名称:[0,16]

     */

    @TableField(value = "name")

    private String name;

    /**

     * 描述:[0,255]描述该用户组的特点或权限范围

     */

    @TableField(value = "description")

    private String description;

    /**

     * 来源表:

     */

    @TableField(value = "source_table")

    private String sourceTable;

    /**

     * 来源字段:

     */

    @TableField(value = "source_field")

    private String sourceField;

    /**

     * 注册位置:

     */

    @TableField(value = "register")

    private String register;

    /**

     * 创建时间:

     */

    @TableField(value = "create_time")

    private Timestamp createTime;

    /**

     * 更新时间:

     */

    @TableField(value = "update_time")

    private Timestamp updateTime;

}

    /**

     * 所在用户组:[0,32767]决定用户身份和权限

     */

    @TableField(value = "user_group")

private String userGroup;

/**

 * 用户组:用于用户前端身份和鉴权(UserGroup)表控制层

 *

 */

@RestController

@RequestMapping("user_group")

public class UserGroupController extends BaseController<UserGroup, UserGroupService> {

    /**

     * 服务对象

     */

    @Autowired

    public UserGroupController(UserGroupService service) {

        setService(service);

    }

}

宿管用户添加,在宿管用户页面中可以添加宿管信息账号、昵称、手机认证、宿管工号、宿管年龄、手机号码等信息,还可以根据需要在宿管查询页面进行修改或删除等详细操作,如图5-4所示。

图5-4宿管添加界面图

宿舍管理,在宿舍管理页面中可以添加宿舍名称、宿舍号、楼栋、单元、宿舍类型、入住人数等信息,还可以根据需要进行修改或删除等操作,如图5-5所示。

图5-5宿舍管理界面图

宿舍楼信息,在宿舍楼信息查询页面中可以添加楼栋、层数、总宿舍数、宿管、类型等信息,还可以根据需要进行修改或删除等操作,如图5-6所示。

图5-6宿舍楼信息界面图

宿舍分配信息管理,在宿舍分配管理页面可对宿舍名称、宿舍号、楼栋、单元、宿舍类型、学生学号、学生姓名、床位数进行详情或分配等详细操作,如图5-7所示。

图5-7宿舍分配信息界面图

学生留言,在学生留言页面中可以查看学生学号、学生姓名、宿管、主题、相关图片、留言内容等信息进行查看、回复、审核或详细等操作,如图5-8所示。

图5-8学生留言界面图

通知公告,在通知公告页面中可以标题、发布人、发布时间、相关附件、内容等信息进行编辑删除或详细等操作,如图5-9所示。

图5-9通知公告界面图

5.2宿管功能模块

宿管进入系统可查看管理功能分为学生管理、宿舍信息、宿舍分配、学生留言、宿管留言、签到信息、通知公告、宿舍楼信息、学生签到、物品报修。如图5-10所示。

图5-10宿管功能界面图

宿舍管理,宿管员可在宿舍管理页面添加宿舍名称、宿舍号、楼栋、床位数、宿舍类型、入住人数、宿管等,如图5-11所示。

图5-11宿舍管理界面图

签到信息,签到信息登记页面可查看楼栋、宿舍号、学生、床位、宿管、签到名称等信息进行删除或详细等操作,如图5-12所示。

图5-12签到信息管理界面图

5.3学生功能模块

学生登录系统功能页面可查询宿舍分配、学生留言、签到信息、通知公告、学生签到、物品报修等功能。如图5-13所示。

图5-13学生功能界面图

物品报修信息,在物品报修页面中可以填写学生、宿管、物品名称、报修内容等操作。如图5-14所示。

图5-14物品报修管理界面图

6 系统测试

一个系统设计好后,就会进入测试阶段,测试的目标是检验设计好的网站是否可以正常无误的运行,尽可能的发现网站的问题,已使后期网站投入使用后网站尽少出错。

6.1 测试定义

系统测试主要是判断系统是否可以正常运行,功能模块是否可以实现操作。程序代码中是否有错误出现。测试程序是开发过程中的一个主要问题。就算系统完成的再好,再进行程序测试时也会也会发现一个重来没有被发现的错误信息。

测试不仅是系统开发的开始,而且应该贯穿整个系统的整个生命周期。评估系统质量的方法不局限于系统编码和过程,应该与软件设计工作和历史需求分析密切相关。系统错误,不一定是代码错误,可能是阶段的设计摘要和设计细节存在问题,问题也可能出现在需求分析阶段[13]。从实际情况来看,最初的问题很可能是一个小错误,根据按钮的原理,按钮后的按钮位错将是所有位错。该系统的原因也同样适用,随着后续的开发工作,误差将越来越严重。因此就应该对系统进行测试,在一开始就发现系统中存在的问题,就能保证以后系统能够正常稳定的运行。在测试系统中,开发人员应该站在用户的角度来处理测试工作,而现在主要的测试方法是黑盒测试。测试的目的可以概括为以下几点:首先,用户界面和用户需求是一致的,设置界面和设计风格统一;第二,创新设计接口规范设计标准,具有独特的审美特征;最后,人类传统的接口以满足审美需求,不能盲目地追求一种独特的,合理的规划布局,符合审美标准。

6.2 测试目的

测试的目的在于要对系统的稳定和可操作性能进行对照检查。对于软件的开发利用最终的目的在最后的测试和试用,这是一个不可缺少的重要环节。对于软件开发者而言,在对每一个单独的功能进行编排时候,都要有单独的测试,并通过测试阶段才可以研发多个功能性软件,这样既缩短了研发时间,也可以在的单个的早期测试中发现问题,以免融合后的软件,在查找问题时就很难快速解决或者急速定位问题。

学生宿舍管理系统开发设计完成后,需要对其进行系统测试,测试的主要目的就是发现并找出系统中存在的问题,并及时的进行解决,确保系统可以正常稳定的运行下去,在进行系统测试的时候,在一定要非常的认真、仔细,切记不能粗心,不能放过一个漏洞,测试时候一定不要着急,要按照之前指定好的测试步骤一步一步进行,并且将测试的结果进行详细的记录,我们在进行测试的时候做好选择自动化的测试,这样既可以节省时间而且也能确保测试的准确性,如果采用人工测试的方法就不会这么的方便,由于人工测试有很多不确定的因素,在测试过程中很可能会出现一些问题,用机器测试就不会出现任何的问题,而且机器不会疲惫会一直二等工作下去。在测试的时候一定要非常专注,时刻关注着测试的结果,一但发现异常及时进行修改,最后,测试完之后的文档应该保存下来,方便以后测试时用到。系统测试的方法有很多,对于本学生宿舍管理系统的测试,我们使用了测试用得最多的黑盒测试方法来对该系统进行测试。

6.3测试方案

对测试计划的把握是测试方案的重中之重。所有的技术难点应该都被包含在这个测试计划之中。而且我们要保证能与目标形成一致性,以至于能够测试出一些主要存在的错误和一些错误的漏洞。可以完美解决这些问题就只有白盒测试或者黑盒测试[14]。

构造测试是白盒测试的另一个名字,了解与分析程序的结构以及性能功用的,从而我们可以得到最终想要的结果并且观察出是不是每一条程序都能得到。

性能测试是黑盒测试别称,程序本身的运作通过程序的进程来观察,主要是看一下程序是不是能够像我们预期的目标那样发展,看一看我们的程序最终能不能完整的得到我们最后想要的功能和储存想得到的数据,到最后看一下我们的这个程序完整性能不能达到要求。

(1)模块测试

单元测试就是模块测试,顾名思义就是测试每个模块所承担的功能是否能够实现,这个测试就是为了找出代码在实际的设计运转中某一些小的程序所出现的偏差,很好地改正这些错误,就说明我们模块测试进行很成功过。

(2)集成测试:

集成测试就是对系统的测试以及对他子系统的一些性能测试,他检查的事系统的包装程序信息。找出其中的问题。他的优势主要有以下这几点:

软件耗费较少。

可以提前发现端口的错误。

更好的地位系统中错误的位置。

从底部往上面进行的方案针对于偏下层的结构,而中间的结构就采用折中的方法。

(3)验收测试:

终于到了结尾性的工作了。就是为了给用户看一下我们的系统功能是否达到了预期的效果。我采用了性能测试也就是黑盒测试对系统进行测试。

其结果是分别是:

有一定的差异在用户的需求。

再者就是结果与之差不了多少。

到了最后了,我们发现的问题都是与用户的需求存在一定的关联。

1、登录测试

 测试点:登录

测试的目标:输入账号密码以及验证码后系统会自动进行验证是否正确。

所用的环境:Windows10和IE浏览器。

输入信息:用户名、密码。

步骤:

(1)首先我们打来浏览器,进入该系统的登录界面。

(2)在进入页面登录部分以后可以进行对用户名、密码进行测试,具体测试输入情况如下表6.1所示。

表6.1 登录测试

情况

用户名输入

密码输入

期望结果

(1)

15546219225

1244566

提示“用户名或者密码错误,或账号未经审核”

(2)

aaaaa

123456

提示“用户名或密码错误,或者账号未经审核”

(3)

15546219225

hangguowei

登陆成功

6.4系统分析

本学生宿舍管理系统设计要求基本都可以达到,此系统具有完整的软件功能,良好的用户界面,能够正确的处理错误信息,而且能够准确的提出错误的种类。但是系统测试时也出现了一些系统的不足和缺陷,所以在今后的日子里我会对其视觉上的不足作出修改,其次系统的代码和数据库出现了非常多的冗余现象,都是因为对编程技术的应用不够熟练,在日后我会加强自己的自身学习和能力,减少这样的冗余现象。

经过对上述的测试结果分析,本学生宿舍管理系统无论是在技术方面,还是操作方面,还是经济方面都是完全可以实行的,并且经过测试,该系统操作简单,所有的功能都可以实现,因此该系统可以满足人们的使用需求,值得被推广。

总体说来,软件通过测试。

">

商城建设方案

局域网怎么搭建、软件开发流程书籍、永久使用、不限域名、缪斯设计官网

企业名录查询?

中铁建设集团有限公司招聘官网_html5设计_免费的个人网站空间_app免费开发平台有哪些

<noscript><a href="http://www.51.la/?466524" target="_blank"><img alt="我要啦免费统计" src="http://img.users.51.la/466524.asp" style="border:none" /></a></noscript></div><script type='text/javascript' src='http://static.gridsumdissector.com/js/Clients/GWD-800014-983F41/gs.js'></script> 邢台市刚刚发生的事大连商城网站建设深圳市有哪些公司店面设计软件简单的网站设计图xjr快速开发平台软件定制 开发公司黄页是什么意思哈尔滨中小企业网站制作seo视频教学网站网络工程师 招聘河北正规网站建设比较广州专业seo公司深圳平台推广网站维护方法网页设计培训费用多少深圳兆富资本非吸案4人被判刑电子商务公司骗局揭秘济南seo官网优化猎头公司靠谱吗国际空间站vs中国空间站在线界面设计深圳建设工程交易服务网龙岗分中心国家企业信息年度申报系统网站推广渠道怎么做个人简历网免费模板域名交易网站哪个好南宁建站公司模板免费ppt课件下载网站线下推广是什么意思贵阳专业网站建设公司

猜你喜欢

  • 友情链接:
  • 制作官网的公司性价比高 国家工商总局查询平台 手机app软件开发用什么语言 天眼查企业查询下载 深圳福田房价 和易企秀类似的软件免费的