04用户登录信息管理.docx

上传人:b****5 文档编号:11884700 上传时间:2023-04-08 格式:DOCX 页数:16 大小:79.04KB
下载 相关 举报
04用户登录信息管理.docx_第1页
第1页 / 共16页
04用户登录信息管理.docx_第2页
第2页 / 共16页
04用户登录信息管理.docx_第3页
第3页 / 共16页
04用户登录信息管理.docx_第4页
第4页 / 共16页
04用户登录信息管理.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

04用户登录信息管理.docx

《04用户登录信息管理.docx》由会员分享,可在线阅读,更多相关《04用户登录信息管理.docx(16页珍藏版)》请在冰豆网上搜索。

04用户登录信息管理.docx

04用户登录信息管理

青岛理工大学

课程实验报告

课程名称

软件设计与体系结构

班级

软件122

实验日期

2015.03.30

2015.04.13

姓名

贾蒙

学号

201207222

实验成绩

实验名称

用户登录信息管理

实验目的

及要求

熟悉三层架构

实验环境

Win7,VS2010

实验内容

1.建立一个解决方案

2.按三层架构模式添加工程

3.设定工程间的依赖关系

4.实现基本用户信息的管理操作:

增删改查

算法描述及实验步骤

1.选择文件-〉新建-〉项目

2.选择其它项目类型-〉VisualStudio解决方案

3.在解决方案所在的文件夹中创建以下文件夹:

Bin:

存放生成的可执行文件

Documents:

存放所用到的文档

Library:

存放用到的第三方控件

Setup:

存放用于安装的最终程序及其相关文件

UnitTest:

存放测试代码

4.准备以下文件放到相应的文件夹中:

在Library文件夹中建立SQLite文件夹,从SQLite的官方网站下载sqlite-netFx40-binary-Win32-2010-1.0.84.0.zip文件,解压缩后将其中的4个文件SQLite.Designer.dll、SQLite.Interop.dll、System.Data.SQLite.dll和System.Data.SQLite.Linq.dll拷贝到SQLite文件夹待用;

在Bin文件夹下面创建Database文件夹,并利用sqliteadmin在其中创建一个SQLite数据库文件MyFirstDB.s3db(或用代码创建),其中包含一个表:

表中admin密码为lcb,aaa密码为123,bbb密码为空

在Bin文件夹下面创建配置文件MyConfig.INI:

5.右键单击右图中的“解决方案MyFirstSolution(0个项目)”--〉添加--〉新建项目,建立如右图所示5个Project;

其中Common、DAL、Model和BLL项目类型为“类库”,UI的项目类型为“Windows应用程序”;

右键单击“MyFirstSolution.UI”设定UI为“启动项目”,该项目名称变为黑体显示。

6.添加引用(右键单击“引用”--〉“添加引用”):

BLL引用DAL和Model

DAL引用Common和Library文件夹中的3个dll文件:

SQLite.Designer.dll、System.Data.SQLite.dll和System.Data.SQLite.Linq.dll

Model引用Common和DAL

UI引用Common、BLL和Model,还必须将Library文件夹中的SQLite.Interop.dll文件复制到Bin文件夹中

添加引用的同时,项目间的依赖关系也就发生了变化,随之改变的是项目的编译顺序。

7.填写Common的代码:

修改Class1.cs的名称为CodeProcess.cs,并输入其代码

实现Base64的编码和解码功能

添加IniClass类

实现对INI文件的读写操作

添加MyConfig类

调用IniCalss类实现对配置文件MyConfig.INI的读写操作

8.填写DAL的代码

添加数据集UserDataSet,建立表Users,结构同SQLite数据库中的表Users

将类Class.cs改名为MyDbHelper.cs,并输入它的代码

实现数据库的操作:

连接,查询,修改

9.填写Model的代码:

修改类Class1.cs为User.cs,并填写其代码

实现利用DAL提供的功能从数据库中获取数据,并将需要保存的数据写入数据库(具体项目中,可以单个修改/保存,也应该可以批量修改/保存)

以属性的形式向上层提供数据

10.填写BLL的代码:

修改Class1.cs类为UserManager.cs类,并填写代码

实现对用户信息的管理:

获取数据,校验密码,修改密码

11.填写UI的内容:

添加Form的界面元素

添加Form_Load的代码

根据配置文件的内容设置界面元素

需要的话,实现自动登录功能

添加Button_Click点击事件的处理代码

检验登录帐号和密码

记录登录状态到配置文件中

 

调试过程及实验结果

总结

本次试验主要考察的是三层架构开发模式,即表示层、业务逻辑层、数据访问层。

通过本次试验对三层架构开发模式有了新的认识,不再是仅仅局限于课本上枯燥的知识,本次实验后有了更加生动的认识。

UI部分代码:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Windows.Forms;

usingMyFirstSolution.BLL;

usingMyFirstSolution.Common;

namespaceMyFirstSolution.UI

{

publicpartialclassForm1:

Form

{

privateStringcount=null;

privateStringpass=null;

privateintautoLogin=1;

//ini文?

件t路·径?

Stringfile=".\\MyConfig.ini";

MyConfigopIni;

publicForm1()

{

InitializeComponent();

}

privatevoidlogin_Click(objectsender,EventArgse)

{

this.count=this.counter.Text.ToString();

this.pass=this.password.Text.ToString();

if(this.auto.Checked)

{

opIni=newMyConfig(this.file);

opIni.setLoginName(this.count);

opIni.setLoginPassWord(this.pass);

opIni.setAutoLogin

(1);

}

else

{

opIni=newMyConfig(this.file);

opIni.setLoginName("");

opIni.setLoginPassWord("");

opIni.setAutoLogin(0);

}

UserManagerum=newUserManager(this.count);

if(um.checkPass(this.pass))

{

MessageBox.Show("登?

录?

成é功|");

}

else{

MessageBox.Show("登?

录?

失骸?

败悒?

);

}

}

privatevoidForm1_Load(objectsender,EventArgse)

{

opIni=newMyConfig(this.file);

this.count=opIni.getLoginName();

this.pass=opIni.getLoginPassword();

this.autoLogin=opIni.getAutoLogin();

//this.autoLogin=opIni.get

if(this.autoLogin==1)

{

this.auto.Checked=true;

this.counter.Text=this.count;

this.password.Text=this.pass;

UserManagerum=newUserManager(this.count);

if(um.checkPass(this.pass))

{

MessageBox.Show("登?

录?

成é功|");

}

else

{

MessageBox.Show("登?

录?

失骸?

败悒?

);

}

}

elseif(this.autoLogin==0)

{

this.auto.Checked=false;

}

}

}

}

BLL部分代码

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

usingMyFirstSolution.Model;

namespaceMyFirstSolution.BLL

{

publicclassUserManager

{

Useruse;

Stringname;

publicUserManager(Stringname)

{

this.name=name;

}

publicBooleancheckPass(Stringpass){

use=newUser(name);

if(pass==use.getPass())

returntrue;

else

returnfalse;

}

}

}

Modelde的代码

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

usingMyFirstSolution.DAL;

namespaceMyFirstSolution.Model

{

publicclassUser

{

MyDbHelpermd;

Stringcount;

publicUser(stringcount)

{

this.count=count;

}

publicStringgetPass()

{

md=newMyDbHelper();

returnmd.getPassword(count);

}

}

}

DAL的代码

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Data.SQLite;

usingSystem.Data;

usingMyFirstSolution.Common;

namespaceMyFirstSolution.DAL

{

publicclassMyDbHelper

{

publicSQLiteConnectionGetCon()

{

stringstrFilePath="DataSource=C:

\\Users\\CODER\\Desktop\\TestSolution\\bin\\Database\\MyFirstDB.s3db";

SQLiteConnectionsqliteCon=newSQLiteConnection(strFilePath);

returnsqliteCon;

}

publicStringgetPassword(Stringname)

{

Stringpass;

SQLiteConnectioncon=GetCon();

con.Open();

Stringsqlstr="selectPasswordfromuserInfowhereAccount='"+name+"'";

SQLiteCommandcmd=con.CreateCommand();

cmd.CommandText=sqlstr;

SQLiteDataReaderreader=cmd.ExecuteReader();

reader.Read();

pass=reader[0].ToString();

returnpass;

}

 

}

}

Common的代码

1.base64编码

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

namespaceMyFirstSolution.Common

{

publicclassCodeProcess

{

publicstringEncodeBase64(stringcode)

{

byte[]bytes=Encoding.Default.GetBytes(code);

stringstr=Convert.ToBase64String(bytes);

returnstr;

}

publicstringDecodeBase64(stringcode)

{

byte[]outputb=Convert.FromBase64String(code);

stringorgStr=Encoding.Default.GetString(outputb);

returnorgStr;

}

}

}

2.读取ini文件

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Runtime.InteropServices;

namespaceMyFirstSolution.Common

{

classIniClass

{

privatestringfileName;

[DllImport("kernel32")]

privatestaticexternintGetPrivateProfileInt(

stringlpAppName,stringlpKeyName,intnDefault,stringlpFileName

);

[DllImport("kernel32")]

privatestaticexternintGetPrivateProfileString(

stringlpAppName,stringlpKeyName,stringlpDefault,

StringBuilderlpReturnedString,intnSize,stringlpFileName

);

[DllImport("kernel32")]

privatestaticexternboolWritePrivateProfileString(

stringlpAppName,stringlpKeyName,stringlpString,stringlpFileName

);

publicvoidIniFile(stringfilename)

{

fileName=filename;

}

publicintGetInt(stringsection,stringkey,intdef)

{

returnGetPrivateProfileInt(section,key,def,fileName);

}

publicstringGetString(stringsection,stringkey,stringdef)

{

StringBuildertemp=newStringBuilder(1024);

GetPrivateProfileString(section,key,def,temp,1024,fileName);

returntemp.ToString();

}

publicvoidWriteInt(stringsection,stringkey,intiVal)

{

WritePrivateProfileString(section,key,iVal.ToString(),fileName);

}

publicvoidWriteString(stringsection,stringkey,stringstrVal)

{

WritePrivateProfileString(section,key,strVal,fileName);

}

publicvoidDelKey(stringsection,stringkey)

{

WritePrivateProfileString(section,key,null,fileName);

}

publicvoidDelSection(stringsection)

{

WritePrivateProfileString(section,null,null,fileName);

}

}

}

3.操作INI文件

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

namespaceMyFirstSolution.Common

{

publicclassMyConfig

{

Stringfilename;

StringloginName;

StringloginPassword;

intautologin;

StringConnectString;

CodeProcesscp=newCodeProcess();

publicMyConfig(Stringfilename)

{

this.filename=filename;

}

publicstringgetLoginName()

{

IniClassini=newIniClass();

ini.IniFile(filename);

this.loginName=ini.GetString("Login","LoginName","没?

找ò到?

");

returnloginName;

}

publicstringgetLoginPassword()

{

IniClassini=newIniClass();

ini.IniFile(filename);

this.loginPassword=ini.GetString("Login","LoginPassword","没?

找ò到?

");

returncp.DecodeBase64(loginPassword);

//returnloginPassword;

}

publicintgetAutoLogin()

{

IniClassini=newIniClass();

ini.IniFile(filename);

this.autologin=ini.GetInt("Login","AutoLogin",1);

returnautologin;

}

publicstringgetConnectString()

{

IniClassini=newIniClass();

ini.IniFile(filename);

this.ConnectString=ini.GetString("Database","ConnectString","");

returnConnectString;

}

publicvoidsetLoginName(Stringname)

{

IniClassini=newIniClass();

ini.IniFile(filename);

ini.WriteString("Login","LoginName",name);

}

publicvoidsetLoginPassWord(Stringpass)

{

IniClassini=newIniClass();

ini.IniFile(filename);

StringenPass=cp.EncodeBase64(pass);

ini.WriteString("Login","LoginPassword",enPass);

}

publicvoidsetAutoLogin(intautologin)

{

IniClassini=newIniClass();

ini.IniFile(filename);

ini.WriteInt("Login","AutoLogin",autologin);

}

}

}

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1