登录和注册模块的设计与实现.docx

上传人:b****0 文档编号:9358985 上传时间:2023-05-18 格式:DOCX 页数:11 大小:133.70KB
下载 相关 举报
登录和注册模块的设计与实现.docx_第1页
第1页 / 共11页
登录和注册模块的设计与实现.docx_第2页
第2页 / 共11页
登录和注册模块的设计与实现.docx_第3页
第3页 / 共11页
登录和注册模块的设计与实现.docx_第4页
第4页 / 共11页
登录和注册模块的设计与实现.docx_第5页
第5页 / 共11页
登录和注册模块的设计与实现.docx_第6页
第6页 / 共11页
登录和注册模块的设计与实现.docx_第7页
第7页 / 共11页
登录和注册模块的设计与实现.docx_第8页
第8页 / 共11页
登录和注册模块的设计与实现.docx_第9页
第9页 / 共11页
登录和注册模块的设计与实现.docx_第10页
第10页 / 共11页
登录和注册模块的设计与实现.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

登录和注册模块的设计与实现.docx

《登录和注册模块的设计与实现.docx》由会员分享,可在线阅读,更多相关《登录和注册模块的设计与实现.docx(11页珍藏版)》请在冰点文库上搜索。

登录和注册模块的设计与实现.docx

登录和注册模块的设计与实现

1登录和注册模块的设计与实现(负责人:

***)

1.1登录和注册界面

1.1.1登录

用户在进行系统登录时,需要通过该界面输入帐号、密码和用户身份,然后点击“登录”按钮进行登录,登录界面设计如图1.1所示。

1.1登录界面

 

1.1.2注册

用户在进行注册时,需要通过该界面输入帐号、密码和用户身份,然后点击“点我注册”按钮进行注册,注册界面设计如图1.2所示。

1.2注册界面

1.3登录注册模块文件的组织

1.2该模块涉及到的文件和类

通过详细的分析,该模块涉及到的文件和类在工程中的组织如图1.3所示。

1.2.1持久层

用文件user.properties来持久存储用户的信息,文件中以key=value对的形式存储,并约定key为账号,value为密码+空格+用户身份;如一个账号为zhangsan,密码为123,用户身份为管理员,另一个帐号为lisi,密码为456,用户身份为普通用户。

那么在文件中将以下面的形式存储。

zhangsan=123管理员

lisi=456普通用户

1.2.2实体类User

该类主要用于封装用户的信息:

帐号、密码和用户身份,类图如图1.4所示。

User

-uName:

String

-uPwd:

String

-uRole:

String

提供了每个成员变量的getter和setter方法,还有全参构造方法

1.4User类图

1.2.3文件操作层(Dao层)

该层涉及到接口UserDao和实现该接口的类UserDaoImpl,主要用来完成对文件user.properties的读和写操作。

Ø读文件方法

publicStringreadByKey(Stringkey);

该方法根据关键字key读取信息value。

实现如下:

Ø写文件方法

publicbooleanupdateFile(Stringkey,Stringvalue);

该方法是写入配置信息,实现如下:

Ø类UserDaoImpl的实现代码如下:

publicclassUserDaoImplimplementsUserDao{

privatePropertiesconfig=null;

privateStringfullUserFile=null;

publicUserDaoImpl(StringfullUserFile){

//TODOAuto-generatedconstructorstub

this.fullUserFile=fullUserFile;

}

////根据关键字key读取信息value

publicStringreadByKey(Stringkey){

config=newProperties();

FileInputStreamfis=null;

try{

fis=newFileInputStream("D:

\\javaprogram\\shoppingSystem\\src\\"+fullUserFile);

config.load(fis);

System.out.println("成功加载配置文件:

"+fullUserFile);

}catch(FileNotFoundExceptione){

//TODOAuto-generatedcatchblock

System.out.println("配置文件不存在:

"+e.getMessage());

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

System.out.println("读取配置文件出错:

"+e.getMessage());

}

if(config!

=null){

returnconfig.getProperty(key);

}else{

returnnull;

}

}

//写入配置信息

publicbooleanupdateFile(Stringkey,Stringvalue){

Stringval=readByKey(key);

if(val==null){//键值不存在,添加新键值,即新用户信息

config.setProperty(key,value);

//回写到指定的文件

FileOutputStreamos=null;

try{

os=newFileOutputStream("D:

\\javaprogram\\shoppingSystem\\src\\"+fullUserFile);

config.store(os,"写入新的用户信息");

os.close();

}catch(FileNotFoundExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

returntrue;

}else{

returnfalse;

}

}

}

1.2.4业务逻辑层(Service层)

该层涉及到接口UserService和实现该接口的类UserServiceImpl,主要用来完成登录逻辑和注册逻辑。

Ø登录方法

publicbooleanlogin(Useru);

该方法判断u是否是一个合法用户,需要调用Dao层的对应方法读取文件信息,判断文件中是否存在该用户,存在返回true,否则返回false。

Ø注册方法

publicbooleanRegister(Useru);

该方法完成用户u的注册,如果该用户帐号已经注册过,不能重复注册;否则,调用Dao层的对应方法将用户信息写入文件。

Ø类UserServiceImpl的实现代码如下:

publicclassUserServiceImplimplementsUserService{

UserDaoud=null;

publicUserServiceImpl(){

ud=newUserDaoImpl("user.properties");

}

@Override

publicbooleanlogin(Useru){

//TODOAuto-generatedmethodstub

//判断是否存在该用户

StringpwdRole=ud.readByKey(u.getuName());

if(pwdRole!

=null){

//将从配置文件读出的密码和用户身份分离开

String[]pwdRoleArray=pwdRole.split("");if(pwdRoleArray[0].equals(u.getuPwd())&&pwdRoleArray[1].equals(u.getuRole())){

returntrue;

}else{

returnfalse;

}

}else{

returnfalse;

}

}

@Override

publicbooleanRegister(Useru){

//TODOAuto-generatedmethodstub

//将用户信息重新组装

StringuName=u.getuName();

StringpwdRole=u.getuPwd()+""+u.getuRole();

//调用Dao层的方法将用户信息写入文件

if(ud.updateFile(uName,pwdRole)){

returntrue;

}else{

returnfalse;

}

}

}

1.2.5界面层(frame层)

本层包括三个窗体类:

LoginRegFrame、AdminMainFrame和UserMainFrame,运行结果如图1.1,1.5,1.6。

Ø登录按钮的响应流程和核心代码

获取用户从界面输入的帐号、密码和用户身份,将信息用User封装,调用service层的登录方法,如果该方法返回true,说明该用户存在。

(1)若是管理员,则显示管理员对应的主窗体,管理员主窗体如图1.5所示;

(2)若是普通用户,显示普通用户对应的主窗体,普通用户主窗体如图1.5所示。

如果该方法返回false,说明该用户不存在,系统提示“用户名或密码不正确”。

1.5管理员主窗体

(2)该模块涉及到文件和

1.6普通用户主窗体

核心代码:

b_login.addActionListener(newActionListener(){

@Override

publicvoidactionPerformed(ActionEvente){

//TODOAuto-generatedmethodstub

//判断用户从窗体中输入的用户名和密码是否在数据库中存在

StringuName=t_id.getText();

StringuPwd=newString(t_pwd.getPassword());

StringuRole=c_role.getSelectedItem().toString();

UserServiceuService=newUserServiceImpl();

if(uName==null){

JOptonPane.showMessageDialog(b_login,"用户名不能为空!

");

}else{

Useru=newUser(uName,uPwd,uRole);

if(uService.login(u)){

if(u.getuRole().equals("管理员")){

newAdminMainFrame(u);//登录成显示主窗体

}else{

newUserMainFrame(u);//登录成功显示主窗体

}

}else{

JOptionPane.showMessageDialog(b_login,"用户名或密码不正确!

");

}

}

}

});

Ø注册按钮的响应流程

获取用户从界面输入的帐号、密码和用户身份,将信息用User封装,调用service层的注册方法。

(1)用户在“点击注册之前”必须输入用户名和密码,否则系统将会提示,提示信息如图1.7。

1.7用户名或密码不完整提示信息

(2)用户只能以"普通用户身份"注册,否则系统将会给出“只能以普通用户身份注册”的提示信息!

(3)用户名如果已经注册过,系统将会给出“注册失败,该用户已经存在!

”的提示信息!

(4)如果用户注册成功,系统将会将注册信息写入文件,并给出“注册成功,可以登录啦!

”的提示信息!

核心代码:

b_register.addActionListener(newActionListener(){

@Override

publicvoidactionPerformed(ActionEvente){

//TODOAuto-generatedmethodstub

StringuName=t_id.getText();

StringuPwd=newString(t_pwd.getPassword());

StringuRole=c_role.getSelectedItem().toString();

if(uName.equals("")||uPwd.equals("")){

JOptionPane.showMessageDialog(b_login,"请先输入完整的用户名和密码再点击注册!

");

return;

}

if(uRole.equals("管理员")){

JOptionPane.showMessageDialog(b_login,"只能以普通用户身份注册!

");

return;

}

Useru=newUser(uName,uPwd,uRole);

UserServiceuService=newUserServiceImpl();

if(uService.Register(u)){

JOptionPane.showMessageDialog(b_login,"注册成功,可以登陆啦!

");

}else{

JOptionPane.showMessageDialog(b_login,"注册失败,该用户已经存在!

");

}

}

});

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2