东北大学大一下暑期实训项目--活力长者社区(JAVAFX+scenebuilder)

前言

编译器:Eclipse IDE(2017)

运行环境:JRE 8

GUI开发工具:JavaFX

可视化界面构造插件:JavaFX Scene Builder 2.0(利用此插件完成对界面的布局操作)

一、系统环境配置

JRE 8 + JAVAFX + scenebuilder已经被作者配置好并压缩至压缩包中,有小伙伴想要的话 关注+点赞+评论区扣1 即可领取。
如下图所示点击eclipse即可进行编程,不需要额外配置环境(包括下载scenebuilder和在eclipse中下载JAVAFX),但gson安装包需要额外配置,这方面老师应该会讲。

二、系统页面展示

1.登录页面

选择身份,输入账号密码即可登录

2.生活管家页面

选择生活管家,输入生活管家的账号与密码正确可以来到生活管家页面。可以进入会员,房屋入住管理页面,以及修改密码,退出。

3.会员管理页面

会员管理实现的功能:
【应用场景】:用于维护社区会员的基本信息。会员基本信息包括:姓名、性别、出生日期、手机、身份证、联系人、联系人电话、会员类型、备注等。
【操作描述】:查询、新增、修改、删除、刷新、申请等。
【新增】:点击“新增”按钮,显示输入会员信息页面,输入会员的基本信息后,弹出弹窗,点击“确定”按钮,提示成功注册。
【修改】:选中需要修改的会员信息,下方出现可修改的信息项,输入修改的信息,点击“修改”按钮,修改成功。
【删除】:选会员信息后,点击“删除”按钮,输出所选中的会员信息。
【查询】:在查询框中输入要查询的数据,鼠标移除自动查询会员的每项基本信息是否包含查询框的数据,如果包含,则显示查询的结果。可以实现编号、年龄、身份证号、类型、联系人、联系人电话查询。
【刷新】:显示查找步骤之前的表格。
【申请】:可为选中会员申请场所设施和班车。
【保存】:将对表格的修改保存到文件中。
【退出】:页面到达生活管家页面。

4.申请页面

可以申请场所设施和班车,场所设施和班车在一个一体化页面中,点击场所设施和班车,选择会员需要的场所设施和班车,点击申请,即可完成申请。
选择场所设施点击申请后,会弹出时间段页面,点击一个时间段,即可完成申请。如果会员已经预约过,则不能申请,并弹出弹窗。时间段数据库每天都会更新一次(通过比较最后一次运行日期和现在日期,如不一致,则打印空字符串到数据库中)。

5.房屋管理页面

【应用场景】:为注册的会员提供楼盘信息,供会员购买楼盘。楼盘信息展示所有的楼盘,已购买的楼盘不可以被购买,每个会员限购一个了楼盘。
【操作描述】:新增节点,维护房间,删除,统计, 保存。
【新增节点】: 右击小区,楼盘,楼号,单元节点,可以显示新增对应的菜单,当父节点不存在时,不可以直接创建子节点,在菜单中填写对应的名称后,点击“确认”按钮,成功创建房屋。
【维护房间】:维护房间的功能就是将房子卖给会员,选中相应的房间后,点击维护房间,显示出房间的位置和类型,选择购买房间的人,房屋状态,移交时间后点击“确定”按钮,系统自动判断房屋是否已经卖出,购买人时是否已经购买过,如果房屋已经卖出或此人已经买过,则系统判定不通过,维护失败,否则维护成功。
【删除】:点击“删除”选择相应的楼盘,楼号,楼层或房间。点击“删除”按钮,如果此节点是最后的节点,则可以删除,如果有子节点,则删除失败。
【统计】:点击“统计”按钮,会展示出每个楼盘的小区数量、楼号数量、单元数量、房间数量。
【保存】:将数据保存到文件中。
【退出】:退出页面,到达生活管家页面

6.入住管理页面

【应用场景】:此系统为针对老年人的社区,会员基本为老年人,当购买房屋后,可以填写入住信息,入住基本信息有:入住人名称,联系会员,关系,手机号,年龄,性别,入住开始时间,入住结束时间等。
【操作描述】:登记,修改,删除,查询。
【登记】:点击“登记”按钮,填写入住人基本信息,点击“确定”按钮,完成入住登记。
【修改】:选择一条入住信息,点击“修改”按钮,跳转相应的修改页面,输入修改的信息后,点击“确定”按钮,完成对信息的修改
【删除】:选择一条或多条信息后,点击“删除”按钮,删除相 应的信息。
【保存】:将数据保存到文件中。
【查询】:可以实现性别年龄,关系,姓名查询。
【日期查询】:输入开始入住起始日期和开始入住截止日期,或输入截止日期开始日期和截止日期截止日期,或全部输入,即可完成查询。
【刷新】:显示查询或日期查询之前的页面。
【退出】:退出页面到达生活管家页面。

7.场所设施管理

【应用场景】:场馆主要作为老人的休闲娱乐的地方,场馆基本信息包括:场馆名称,门牌号、特别说明、开放时间、联系电话、场馆位置、场馆类型、负责人等。
【操作描述】:修改、新建、删除,搜索,保存,刷新
【新建】:点击“新建”按钮,在新建页输入场馆基本信息后,点击“确定”按钮,新建成功。
【删除】:选择一条或多条场馆信息后,点击“删除”按钮,删除选中的信息。
【修改】:选中需要修改的场馆,点击“修改”按钮,填写修改的信息后,点击“确定”按钮,修改成功。
【搜索】:可以实现场馆名称,门牌号、联系电话、场馆位置、场馆类型、负责人查询。
【保存】:将数据信息保存到文件中去。
【刷新】:显示搜索操作之前的表格数据。

8.班车路线管理

【应用场景】:后勤管家来进行班车的基本信息的维护。班车的基本信息包括:路线代码,路线名称,路线方向,预约截止日期,班车发车日期,发车时间,发车地点,最大容纳人数。
【操作描述】:新增,修改,删除,显示班车乘客,清理超过发车时间的发车信息,保存。
【新增】:点击“新建”按钮,输入班车基本信息,点击“添加”按钮,完成班车基本信息的添加。
【修改】:选中一条班车信息,修改相应的基本信息,点击“修改”按钮,完成对班车信息的修改。
【删除】:选中一条班车信息,点击删除按钮,删除所选中的班车信息。
【查看乘客信息】:选择一辆班车信息,点击“查看乘客信息”按钮,展示出所有预约了该车的乘客。
【清理超过发车时间的班车信息】:点击相应按钮,可以在表格中清理超过发车时间的班车信息。
【保存】:将数据信息保存到文件中。

9.用户管理页面

【应用场景】:用户管理主要用来维护社区服务人员基本信息,为服务人员分配相应的权限,修改服务人员的信息,增加删除生活管家所管理的入住人信息。服务人员分为生活管家和后勤管家,基本信息包括:账号、密码、姓名、性别、出生日期、联系电话和相应的权限。
【操作描述】: 新增,修改,删除,搜索,。
【新增】:点击“新增”按钮,输入服务人员基本信息后,点击“确定”按钮,完成用户创建。
【修改】:选中一个服务人员,下方会显示相应的信息,修改之后,点击修改修改成功。
【删除】:选中数据后,点击“删除”按钮,删除所选数据。
【保存】: 将数据保存文件中。
【查询】:可以查询账号、密码、姓名、性别、联系电话和相应的权限。
【刷新】:在表格中显示查询操作前内容。
【退出】:退出到统一身份认证页面中。

三、系统结构

如下图所示,Controller包中的类负责接收页面与用户的交互并做出回应,Model包中的类负责执行具体操作,View包中的类负责存放scenebuilder绘制的交互页面和Main类。除此之外data包中存放JSON文件,image包中负责存放图片,而lib包中负责存放scenebuilder包和gson包。

四、UI界面设计

UI设计是老师给分的重要一环,建议使用墨刀网站提前设计好然后截屏。之后使用PS进行调整,然后使用scenebuilder导入图片即可。

scenebuilder使用教程如下:

-scenebuilder基本功能介绍

-scenebulider设计界面与Controller包中类绑定教程

-ChoiceBox控件介绍

-TableColumn控件介绍

-TreeView控件介绍

五、JSON使用介绍

文件操作类完整代码如下所示
package Model_File;

import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import Model.Senior;

/**
 * 会员文件操作类
 * @author wjz
 *
 */
public class SeniorFile {
    private static SeniorFile seniorFile;

    private SeniorFile() {

    }
    /**
     * 获取单例对象
     * @return
     */
    public static SeniorFile getseniorFile() {
        if(seniorFile != null) {
            return seniorFile;
        }
        return null;
    }
    /**
     * 从文件中读取Json字符串,并将字符串转化成对象
     * @return 会员对象
     * @throws IOException
     */
    public static List<Senior> seniorJson() throws IOException {
        List<Senior> seniors  =  new ArrayList<Senior>();
        String jsonStr = null;
        try {
            jsonStr = new String(
                    Files.readAllBytes(FileSystems.getDefault().getPath("data/Senior.json")),
                    "UTF-8");
        } catch (IOException e) {
            e.printStackTrace(); 
        }

        if (jsonStr != null && !jsonStr.equals("")) { 
            Gson gson = new GsonBuilder().setPrettyPrinting().setDateFormat("yyyy-MM-dd").create();
            seniors.addAll(gson.fromJson(jsonStr, new TypeToken<List<Senior>>() { 
            }.getType()));
        }else {
            seniors = new ArrayList<Senior>();
        }
        return seniors;  
}
/**
 * 获取部分会员,可以实现一个生活管家只能获得他/她所管理的会员集合
 * @param seniorline 全部会员集合
 * @return 部分会员集合
 * @throws IOException
 */
    public static List<Senior> partSeniors(String seniorline) throws IOException{
        List<Senior> wholeseniors = seniorJson();
        List<Senior> partseniors = new ArrayList<Senior>();
        for(Senior senior : wholeseniors ) {
            if(senior.getManager().equals(seniorline)&& seniorline != null) {
                partseniors.add(senior);
            }  
        }
        return partseniors; 
    }
    /**
     * 将会员对象集合存贮到文件中
     * @param saveSeniors
     * @throws IOException
     */
    public static void seniorSave(List<Senior> saveSeniors) throws IOException {
        GsonSave.save(saveSeniors,"data/Senior.json");
    }
    
}
文件存储类完整代码如下所示
package Model_File;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.StandardOpenOption;

/**
 * 用来将对象转化成字符串存贮
 * @author wjz
 *
 */
public class GsonSave {
/**
 * 比较Json字符串是否相等
 * @param object1 对象1
 * @param object2 对象2
 * @return
 */
    public static boolean equalJson(Object object1, Object object2) {
        Gson json = new Gson();
        String line1 = json.toJson(object1);
        String line2 = json.toJson(object2);
        if(line1.equals(line2)) {
            return true;
        }else
            return false;
    }
    /**
     * 将对象序列化后存储到文件中
     * @param object 对象
     * @param filename 文件名称
     */
    public static void  save(Object object, String filename)  {
        FileWriter fr;
        try {
            fr = new FileWriter(filename);
            fr.write("");
            fr.flush();
            fr.close();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        
        Gson gson = new GsonBuilder().setPrettyPrinting().setDateFormat("yyyy-MM-dd").create(); 
        String jsonStr = gson.toJson(object);
        try {
            Files.write(FileSystems.getDefault().getPath(filename),
                    jsonStr.getBytes(Charset.forName("utf-8")), StandardOpenOption.CREATE);
        } catch (IOException e) {
            e.printStackTrace();
        }

}
}
gson基本介绍与使用请点击下链接

-JAVA编程gson基本介绍与使用

六、注意事项

1.本文只介绍项目结构、UI设计和文件读取与存储。Model类中的编程与交互应该在JAVA这门课中就已经掌握故不一一赘述。
2.想要压缩包和具体项目的 关注+点赞+评论区扣1 我会一一私信联系,百度网盘下载太慢,还是QQ比较快。
3.UI要做的好看需要熟练掌握PS和scenebuilder,希望不要最后3天才开始项目,设计UI很费时。此外可以多多参考别的软件。
4.如果有疑问欢迎大家在评论区留言。

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值