C# 写一个winform登录与注册的应用程序

要求:1.要有两个form窗口,1个为登录窗口,第二个为注册窗口2.登录窗口只需要能输入用户名,密码,点击登录就可以验证3.注册页面要求输入用户名和密码,点击注册就可以注... 要求:1.要有两个form窗口,1个为登录窗口,第二个为注册窗口
2.登录窗口只需要能输入用户名,密码,点击登录就可以验证
3.注册页面要求输入用户名和密码,点击注册就可以注册成功
4.用SQLserver2005写数据库就可以了
由于我刚开始学,请大家耐心的帮帮我,做好后把整个程序,包括数据表,发到我邮箱545687850@qq.com非常感谢!
展开
 我来答
515634s
2011-03-18 · 超过35用户采纳过TA的回答
知道答主
回答量:97
采纳率:0%
帮助的人:89.7万
展开全部
登录就是判断你输入的值和数据库中的值是否相同,而注册其实就是往数据库中插入用户名和密码,比如注册代码如下,导入命名空间using System.Data.SqlClient;
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "server=.;database=数据库名;uid=用户名;pwd=密码;";
string strcmd = "insert into 用户表 values('" + TextBox1.Text + "','" + TextBox2.Text + "')";
SqlCommand mycommand = new SqlCommand(strcmd, conn);
try
{
conn.Open();
mycommand.ExecuteNonQuery();
MessageBox.Show(" 注册成功 ");
}
catch
{

MessageBox.Show("注册发生错误");}
finally
{
conn.Close();
}
bxfc
2011-03-16 · TA获得超过872个赞
知道小有建树答主
回答量:1104
采纳率:0%
帮助的人:672万
展开全部
这是一个最简单的ADO操作
验证无非就是数据的查询select
注册无非就是数据的写入insert
这上自个写写吧,如果遇到什么不明白的再找我,不明白原理的话给你代码也没用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友57a0c766b
2011-03-18 · TA获得超过822个赞
知道小有建树答主
回答量:395
采纳率:100%
帮助的人:237万
展开全部
如果你一个都不会的话 你还是自己再慢慢 研究。你所说的要求是编程的最低要求!一定要自己动手!

给你一点思路:
登录窗口:
当点击登录时候判断textbox.text==“”;则提示不填写用户名(或密码)。
注册窗口:
有必要填写textbox.text不为空且用户名不重复,则点击“注册”即可注册成功并数据库插入该记录。
其他的还是自己琢磨的好,VS对基本的这些功能实现是非常容易的!
===================================================================
下面给你一个完整的登录界面代码
在VS2005.NET平台下用C#和Access实现用户登录界面的窗体应用程序
一直就想加个technology的类别,但却迟迟未能动笔.一来不得不承认直到现在,我在技术上还依然只是一个没怎么入门的菜鸟,二来技术本身也不是我的兴趣所在.但不管怎样,既然我现在还要攻读计算机专业的硕士学位,那么技术,总还是要学的.
需要说明的是,对于那些高手来说,这里的东西想必都是小菜一碟,不值一提.我写在这里,只是给自己的总结吧.另外我所写的东西,很多也是参考网络和书籍的,其实真正属于我自己的东西也不多.由于四处查找,具体的出处很多也已记不清了,而且在开源环境下也很难说某些代码就是谁的原创,所以这里虽然没有说明,但很多东西也都是参考他人的,在此先要对那些给了我帮助的书籍作者,网上的发贴人和回贴人表示感谢.
去年研一刚开学时,自己的实践能力还几乎为零.因为我心里清楚,自己本科的确是混过来的,计算机科学与技术的学士学位,我其实是不配去拿的.九月十号进实验室后,开始学习项目组里需要用到的C#,但单纯学习语言也没什么明确的目的性.实验室里和我同一导师本校保研的同学和我说起,他们大四下学期刚进实验室时,师兄就让他们先试着写一个类似QQ登录那样的一个用户登录程序.我自己没有任何经验,想也就像他们一样,从这里起步吧,于是在看C#的同时我就考虑怎么样去实现这样一个程序了.
我知道对于过来人来说,这样的一个程序实在是再简单不过了,但对于当时刚开始的我,着实费尽了不少周折.虽然后来基本实现了这样一个程序,但在数据库上还是有些问题.因此虽然当时也曾想过贴个technology类别的日志,但终究还是一直拖了下来.
前段时间通过同学的介绍,帮沈阳日报的一个朋友做了一个会员管理的软件.软件本身也极其简单,基本没有太多的技术含量,但在开发的过程中自己通过各种渠道去查找资料,也在各方面都学到了很多.所以这段经历对我还是很有意义的.而且自己在计算机专业学了四年有半后终于可以自己做出来一些可以应用到实际中的东西,也终于凭借自己的专业能力获得了一点回报,无论回报是多是少.嗯,是要鼓励一下自己的.也激励自己再接再厉!
此后我可能会把在这一软件中所学到的东西陆续总结一下到这里.而这一软件开发的第一个模块也就是用户登录模块.也就是我最初在尝试做的东西.好,说了这么多无关的话,现在言归正传,来看登录模块的具体实现.
由于用户登录模块的实现关键的一点就是要将用户的信息存储在数据库中,并在用户登录时到数据库中对信息进行查找和核对,所以首先要先建立一个数据库.实际上对于初学者来说,数据库的相关操作也正是实现本登录模块的难点所在.这也是当时我刚开始写这段程序时困扰我并困扰了我很久的地方.在数据量不是很大的情况下,可以就用微软Office组件里的Access数据库,比较方便.这里在D盘用Access建立一个数据库命名为db.mdb,并在数据库中建一个表,命名为users ,在表中建两个字段,命名为userName和userPassword,分别存储用户名和密码.然后在表中插入几条数据,用于登录界面的测试.下面是登录模块的开发.
在Visual Studio2005的C#开发环境下,新建一个Windows 应用程序的项目,将第一个窗体命名为Login,即作为用户登录窗体.在窗体上添加相应控件,设计效果如下:

其中两个文本框分别命名为userNameTbx,pswTbx,用于接收用户输入的用户名和密码,两个按钮命名为loginBtn,cancleBtn,用于用户提交登录信息或取消以关闭登录框.将文本框pswTbx的PasswordChar属性设置为*或其它字符,这样用户在该文本框中键入字符时,界面显示的一律为*.
然后在项目中添加一个Windows窗体,命名为MainForm, 对于实际使用的软件来说,当用户登录成功后都应该弹出这样的软件主窗体.这里只是实现登录功能,暂不对主窗体添加任何内容.下面就是登录界面的后台实现,主要就是用户点击login按钮后后台事件响应代码的编写.登录窗体后台代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb; //添加Access数据库相关操作所需的引用
namespace LoginTest
{
public partial class Login : Form
{
public Login()
{
InitializeComponent();
}
private void loginBtn_Click(object sender, EventArgs e)
{//用户点击loginBtn后事件响应的代码
//用来连接Access数据库的字符串,@的作用是避免"\"等字符被当成转义符
string conStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\db.mdb";
OleDbConnection con = new OleDbConnection(conStr);
con.Open();
string cmdStr = "select * from users where userName='" + this.userNameTbx.Text + "' and userPassword='" + this.pswTbx.Text + "'";
OleDbCommand cmd = new OleDbCommand(cmdStr, con);
OleDbDataReader reader = cmd.ExecuteReader();
if (reader.Read()) //如果找到用户信息,说明登录成功
{
MainForm newForm = new MainForm();
newForm.Show(); //弹出主窗体
this.Hide(); //隐藏用户登录窗体

}
else
{
MessageBox.Show("用户名或密码错误!");
}
reader.Close();
cmd.Connection.Close();
con.Close();
}
private void cancleBtn_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
以上代码调试通过后,即可成功运行.当输入数据库中正确的用户名和密码后点击login ,则登录窗体关闭,主窗口弹出.大功告成!
大功真的告成了吗?且慢.
当在调试状态下启动软件,登录成功弹出主窗体后再关闭主窗体,从用户角度来说软件应该关闭了.但程序却还处在调试状态而没有结束运行.即使不在调试状态下,关闭主窗体后似乎软件已经关闭了,但实际上打开Windows任务管理器,发现登录窗体的线程还一直处在运行状态.这显然是不完善的.
检查后发现在上面的代码中,弹出主窗体后只是将登录窗体隐藏了,this.Hide(); 而并没有真正关闭.好,那在弹出主窗体后就把登录窗体关闭吧.我们将this.Hide(); 改成this.Close(); 很简单吧.但很遗憾,事情并没有这么简单.这样改过之后我们再运行软件,发现登录成功之后登录窗体的确是实实在在的关闭了,但主窗体在闪了一下,甚至你可能连闪那一下都没看到,就也随之关闭了.这显然不是我们想要的结果.那如何能让登录窗体真正关闭,而又不影响主窗体的正常运行呢?这个问题也困扰了我了阵,当然还是很容易在网上找到了答案.
实际上建立项目时登录窗体是第一个窗体,也就是默认的启动窗体,或者说是主进程,如果只将窗体隐藏,显然进程一直运行.而或将窗体关闭,也就是将主进程关闭,那整个软件自然也就关闭了,因此弹出的MainForm自然也会随之关闭.当然关于进程的问题我还有待进一步学习.
要解决这个问题,就要找到应用程序的入口,看看整个程序的执行过程.
打开项目中的program.cs文件,发现代码如下:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace LoginTest
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Login());

}
}
}
要想解决上面的问题,就不能让程序直接执行Application.Run(new Login()); ,而可做如下修改.
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(new Login());
Login login = new Login();
if (login.ShowDialog() == DialogResult.OK)
{
login.Close();
Application.Run(new MainForm());
}
}
首先实例化一个登录窗体,当登录成功时返回DialogResult.OK的结果,然后关闭登录窗体,将主窗体作为主线程启动.
相应的,在登录界面的代码文件中做如下修改:
if (reader.Read())
{
//MainForm newForm = new MainForm();
//newForm.Show();
//this.Hide();
this.DialogResult = DialogResult.OK;
}
至此,我们完成了一个最基本的用户登录模块的实现.
最后,关于Access数据库有几点说明.第一,数据库文件的位置.其实数据库文件没必要放到或复制到项目文件中,而在进行数据库连接相关操作时直接使用其绝对路径即可.实际上在实际使用软件时,一般数据库文件也不会和软件的安装文件放在同一目录下的.最开始尝试写登录模块时,我就通过添加数据源什么的把数据库文件复试到了项目的Debug文件夹下,结果程序编译时会产生很多数据覆盖的问题,会有很多不必要的麻烦.另外一点就是Access数据库虽然用得着比较方便,但凡事有其两面性,Access数据库也有一些不利之处,影响比较明显的一点就是其可恶的关键字.这点也曾给我带来不少麻烦.由于很多关键字都是Access数据库保留的,因此在建表命名时如果一不小心和其重复了则对数据库操作时就会失败,而这一问题又很难发现,结果就是程序干调调不通却找不到原因所在.因此在使用Access数据库时命名一定要小心.
附上转自网上的”真烂Access关键字”,如果操作Access数据库失败了可以先看一下是不是命名与下面这些关键字重复
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宋高通
2011-03-16 · 超过89用户采纳过TA的回答
知道答主
回答量:242
采纳率:0%
帮助的人:175万
展开全部
给我分
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户76442
2011-03-17 · TA获得超过866个赞
知道小有建树答主
回答量:777
采纳率:0%
帮助的人:804万
展开全部
应事件中添加BTN1的visble属性,不只奥是不是你要实现的效果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 7条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式