04用户登录信息管理Word格式.docx
- 文档编号:8647073
- 上传时间:2023-05-12
- 格式:DOCX
- 页数:16
- 大小:79.04KB
04用户登录信息管理Word格式.docx
《04用户登录信息管理Word格式.docx》由会员分享,可在线阅读,更多相关《04用户登录信息管理Word格式.docx(16页珍藏版)》请在冰点文库上搜索。
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);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 04 用户 登录 信息管理