04用户登录信息管理Word格式.docx

上传人:b****6 文档编号:8647073 上传时间:2023-05-12 格式:DOCX 页数:16 大小:79.04KB
下载 相关 举报
04用户登录信息管理Word格式.docx_第1页
第1页 / 共16页
04用户登录信息管理Word格式.docx_第2页
第2页 / 共16页
04用户登录信息管理Word格式.docx_第3页
第3页 / 共16页
04用户登录信息管理Word格式.docx_第4页
第4页 / 共16页
04用户登录信息管理Word格式.docx_第5页
第5页 / 共16页
04用户登录信息管理Word格式.docx_第6页
第6页 / 共16页
04用户登录信息管理Word格式.docx_第7页
第7页 / 共16页
04用户登录信息管理Word格式.docx_第8页
第8页 / 共16页
04用户登录信息管理Word格式.docx_第9页
第9页 / 共16页
04用户登录信息管理Word格式.docx_第10页
第10页 / 共16页
04用户登录信息管理Word格式.docx_第11页
第11页 / 共16页
04用户登录信息管理Word格式.docx_第12页
第12页 / 共16页
04用户登录信息管理Word格式.docx_第13页
第13页 / 共16页
04用户登录信息管理Word格式.docx_第14页
第14页 / 共16页
04用户登录信息管理Word格式.docx_第15页
第15页 / 共16页
04用户登录信息管理Word格式.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

04用户登录信息管理Word格式.docx

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

04用户登录信息管理Word格式.docx

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.setLoginName("

"

);

opIni.setLoginPassWord("

opIni.setAutoLogin(0);

UserManagerum=newUserManager(this.count);

if(um.checkPass(this.pass))

MessageBox.Show("

登?

录?

成é

功|"

else{

失骸?

败悒?

privatevoidForm1_Load(objectsender,EventArgse)

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;

elseif(this.autoLogin==0)

this.auto.Checked=false;

}

BLL部分代码

usingMyFirstSolution.Model;

namespaceMyFirstSolution.BLL

publicclassUserManager

Useruse;

Stringname;

publicUserManager(Stringname)

this.name=name;

publicBooleancheckPass(Stringpass){

use=newUser(name);

if(pass==use.getPass())

returntrue;

returnfalse;

Modelde的代码

usingMyFirstSolution.DAL;

namespaceMyFirstSolution.Model

publicclassUser

MyDbHelpermd;

Stringcount;

publicUser(stringcount)

this.count=count;

publicStringgetPass()

md=newMyDbHelper();

returnmd.getPassword(count);

DAL的代码

usingSystem.Data.SQLite;

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编码

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.Runtime.InteropServices;

classIniClass

privatestringfileName;

[DllImport("

kernel32"

)]

privatestaticexternintGetPrivateProfileInt(

stringlpAppName,stringlpKeyName,intnDefault,stringlpFileName

);

privatestaticexternintGetPrivateProfileString(

stringlpAppName,stringlpKeyName,stringlpDefault,

StringBuilderlpReturnedString,intnSize,stringlpFileName

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文件

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()

this.loginPassword=ini.GetString("

LoginPassword"

returncp.DecodeBase64(loginPassword);

//returnloginPassword;

publicintgetAutoLogin()

this.autologin=ini.GetInt("

AutoLogin"

1);

returnautologin;

publicstringgetConnectString()

this.ConnectString=ini.GetString("

Database"

ConnectString"

returnConnectString;

publicvoidsetLoginName(Stringname)

ini.WriteString("

name);

publicvoidsetLoginPassWord(Stringpass)

StringenPass=cp.EncodeBase64(pass);

enPass);

publicvoidsetAutoLogin(intautologin)

ini.WriteInt("

autologin);

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

当前位置:首页 > 解决方案 > 学习计划

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

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