MVC模式设计的用户管理系统(注册登录版)

MVC设计模式:
    V:View视图层,也就是表示层,负责用户界面UI(User Interface)
    C:Controller控制层,负责流程控制。
    M:Model模型层,负责数据封装,访问以及业务逻辑。

/**
*待管理的数据对象,抽象成实体层entity/领域层domain对象。
*/

package userms.model.domain;

public class User 
{
    private String username;
    private String password;

    public User()
    {
    }

    public User(String username, String password)
    {
        this.username = username;
        this.password = password;
    }

    public String getUsername()
    {
        return this.username;
    }

    public String getPassword()
    {
        return this.password;
    }

    public void setUsername(String username)
    {
        this.username = username;
    }

    public void setPassword(String password)
    {
        this.password = password;
    }

    public String toString()
    {
        return "用户名:" + username + ",密码:" + password + "\n";
    }
}

/**
*用数组来模拟数据库对待管理的实体对象进行增删改查
*/
package userms.model.dao;

import userms.model.domain.User;

public class  UserDB
{
    private User[] userdb;        //利用内存数组模拟用户数据库
    private int nusers;            //当前系统用户数

    public UserDB()
    {
        userdb = new User[10];
        //设置两个初始用户
        userdb[0] = new User("root", "root");
        userdb[1] = new User("bbc", "bbc");

        nusers = 2;
    }

    //模拟注册过程(不允许同名用户)
    public boolean addUser(User user)
    {
        //在已有的系统用户中,去查找是否有同名的,如果有,肯定注册失败,否则做注册。
        for(int i = 0; i < nusers; i++)
        {
            if(user.getUsername().equals(userdb[i].getUsername()))        //如果有同名,不允许注册
            {
                return false;
            }
        }

        //注册新用户
        //超过系统容量,则容量自动翻倍
        if(nusers > userdb.length)
        {
            User[] userdbnew = new User[userdb.length * 2];
            //拷贝到原来的系统中已有的用户到新数组中
            for(int i = 0; i < nusers; i++)
            {
                userdbnew[i] = userdb[i];
            }

            userdb = userdbnew;
        }

        //将新用户加入到数组中
        userdb[nusers] = user;

        //当前用户人数加1
        nusers++;

        //注册成功
        return true;
    }

    //模拟登录过程
    public boolean findUser(User user)
    {
        for(int i = 0; i < nusers; i++)
        {
            if(user.getUsername().equals(userdb[i].getUsername())
                && user.getPassword().equals(userdb[i].getPassword()))
            {
                return true;
            }
        }

        return false;
    }
}
 

/**
*在数据访问对象进行增删改查的基础上构架的业务逻辑层.
*/


package userms.model.service;

import userms.model.domain.User;
import userms.model.dao.UserDB;

public class Service 
{
    private UserDB userdb;

    public Service()
    {
        userdb = new UserDB();
    }

    //登录
    public boolean login(User user)
    {
        return userdb.findUser(user);
    }

    //注册
    public boolean register(User user)
    {
        return userdb.addUser(user);
    }
 

package userms.view;

import java.util.Scanner;
import userms.model.domain.User;

public class UI 
{
    private Scanner sc;

    public UI()
    {
        sc = new Scanner(System.in);
    }

    public int showMainMenu()
    {
        int choice = -1;

        System.out.println("=================用户管理系统=================");
        System.out.println("\t1.注册");
        System.out.println("\t2.登录");
        System.out.println("\t0.退出");
        System.out.println("===============================================");

        //接收用户输入
        boolean succ = false;
        while(!succ)
        {
            System.out.print("\n请输入你的选择(0-2):");
            choice = sc.nextInt();

            if(choice < 0 || choice > 2)
            {
                succ = false;
            }

            else
            {
                succ = true;
            }
        }

        return choice;
    }

    //用户注册或登录输入用户名和密码的界面
    public User showLoginOrRegisterInput()
    {
        String username = null;
        String password = null;

        boolean succ = false;

        //输入用户名
        while(!succ)
        {
            System.out.print("\n请输入用户名:");
            username = sc.next();

            if(!username.equals(""))
            {
                succ = true;
            }
        }

        succ = false;

        //输入密码
        while(!succ)
        {
            System.out.print("\n请输入密 码:");
            password = sc.next();

            if(!password.equals(""))
            {
                succ = true;
            }
        }

        return new User(username, password);
    }

    //输入待查找的用户名
    public String showFindUserInput()
    {
        String username = null;
        
        boolean succ = false;

        //输入用户名
        while(!succ)
        {
            System.out.print("\n请输入用户名:");
            username = sc.next();

            if(!username.equals(""))
            {
                succ = true;
            }
        }

        return username;
    }

    //反馈操作结果
    public void showMsg(User user, String action, boolean succ)
    {
        if(succ)
        {
            System.out.println("\n恭喜" + user.getUsername() + action + "成功!\n");
        }
        else
        {
            System.out.println("\n抱歉," + user.getUsername() + action + "失败!\n");
        }
    }
}
 

/**
*项目名称:MVC模式的用户管理系统(数组模拟版)
*项目说明:版本01:实现基本的注册登录功能。
*开发人员:tt
*开发日期:2023年8月6日
*/

package userms.controller;

import userms.view.UI;
import userms.model.domain.User;
import userms.model.service.Service;

public class UserMS 
{
    private UI ui;
    private Service service;

    public UserMS()
    {
        ui = new UI();
        service = new Service();
    }

    public void start()
    {
        boolean succ = false;
        int choice = -1;
        User user = null;

        while(choice != 0)
        {
            choice = ui.showMainMenu();

            if(choice == 1 || choice == 2)
            {
                user = ui.showLoginOrRegisterInput();
            }

            if(choice == 1)            //注册
            {
                succ = service.register(user);

                ui.showMsg(user, "注册", succ);
            }

            else if(choice == 2)    //登录
            {
                succ = service.login(user);

                ui.showMsg(user, "登录", succ);
            }
        }

        System.out.println("\n再见,欢迎下次使用本系统!");
    }

    public static void main(String[] args) 
    {
        UserMS userms = new UserMS();

        userms.start();
    }
}

效果展示:

 个人的心得体会仅供参考:一个项目的设计往往是水平分模块,垂直分层。而MVC设计模式能将任务分而治之,大大提高我们的开发效率,是一个不错的开发方式。

@1.我写得用户管理系统中实体对象在domain层中就一个User类,而往往较复杂的项目中可能含有多个实体对象,并且这些实体对象中还会存在某种联系。

@2.紧接着我们需要对实体对象进行数据的增删改查,因为自己的能力有限,没有掌握一些数据结构,就用的数组来模拟数据库(这里的数据存储不是持久化的,一旦把程序关闭,之前注册的用户名和密码都不会保留,只会保留最原始的2个用户)。这里面初始了2个用户分别是:root和bbc,密码也同时封装好了,在这里(DAO层:数据访问对象层)我们需要封装相应的方法:模拟注册,登录的过程方法需要写好。

@3.在增删改查的基础上我们还需要构架相应的业务逻辑service:登录,注册返回值类型设置为bool值。

@4.同时还需要渲染view(初始界面和最终的效果)。

@5.核心的Controller层必不可少,相当于我们的原料加工厂,处理过程,在此需要实现注册和登录的功能。把这些层处理好才能达到我们的预期效果。

这个项目不足的是:数据不能持久化存储。当我们学习了文件,数据库,Java的序列化等知识可以将数据持久化的存储到文件或者磁盘中,方便我们使用。同时这个项目的功能还可以进一步完善,比如查找用户,修改密码,删除用户,分页查找(一个用户管理系统用户多时,我们分页查看清晰明了)。对这些功能感兴趣的读者可以自己尝试编写。这只是设计的一个用户管理系统的注册登录版本,希望能帮到需要的小猿。最后感谢大家的阅读和支持!


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# + SQL Server 本系统包括两类用户:学生、管理员。管理员可以通过系统来添加管理员信息、修改管理员信息、添加学生信息、修改学生信息;开设课程、查询课程、录入成绩、统计成绩 管理系统是一种通过计算机技术实现的用于组织、监控和控制各种活动的软件系统。这些系统通常被设计用来提高效率、减少错误、加强安全性,同时提供数据和信息支持。以下是一些常见类型的管理系统: 学校管理系统: 用于学校或教育机构的学生信息、教职员工信息、课程管理、成绩记录、考勤管理等。学校管理系统帮助提高学校的组织效率和信息管理水平。 人力资源管理系统(HRM): 用于处理组织内的人事信息,包括员工招聘、培训记录、薪资管理、绩效评估等。HRM系统有助于企业更有效地管理人力资源,提高员工的工作效率和满意度。 库存管理系统: 用于追踪和管理商品或原材料的库存。这种系统可以帮助企业避免库存过剩或不足的问题,提高供应链的效率。 客户关系管理系统(CRM): 用于管理与客户之间的关系,包括客户信息、沟通记录、销售机会跟踪等。CRM系统有助于企业更好地理解客户需求,提高客户满意度和保留率。 医院管理系统: 用于管理医院或医疗机构的患者信息、医生排班、药品库存等。这种系统可以提高医疗服务的质量和效率。 财务管理系统: 用于记录和管理组织的财务信息,包括会计凭证、财务报表、预算管理等。财务管理系统

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值