当前位置:编程学习 > C#/ASP.NET >>

C#(Winform)写个登录的窗体,求解 ,求解........

  C#(Winform)写个登录的窗体 ,但是在编写过程中,不去创建数据库,该怎么做呢?如何在登入的时候能判断是否有此用户.....(如果使用数组该如何做)  求代码、求解 --------------------编程问答-------------------- 可以建立公共变量,存储用户。
还得用文件,添加用户什么的 --------------------编程问答-------------------- 一次性读文件,然后存入数组,很简单的 --------------------编程问答--------------------
引用 2 楼 ghypnus 的回复:
一次性读文件,然后存入数组,很简单的

小弟刚学,这个还不会,请高手赐教.... --------------------编程问答-------------------- 最直接的:if(username="某某"&&password="123"){MessageBox("登录成功")}else{MessageBox("登录失败")}
--------------------编程问答--------------------
引用 4 楼 tenghui987 的回复:
最直接的:if(username="某某"&&password="123"){MessageBox("登录成功")}else{MessageBox("登录失败")}


如果使用数组怎么做?大侠 --------------------编程问答-------------------- 你想不去比较数据库数据就想判断此用户是否存在? 你厉害,我没做过。 注册成功了,数据库才会有,不和数据库比较,怎么知道登录的是不是 注册成功的。 --------------------编程问答--------------------
引用 6 楼 ch920427 的回复:
你想不去比较数据库数据就想判断此用户是否存在? 你厉害,我没做过。 注册成功了,数据库才会有,不和数据库比较,怎么知道登录的是不是 注册成功的。


这我才刚学,很多不知道,希望大家给出建议 --------------------编程问答-------------------- 大家说说啊....小弟不甚感激 --------------------编程问答--------------------

       //定义哈希表
        private Hashtable ht = new Hashtable();
        private void Form1_Load(object sender, EventArgs e)
        {
            StreamReader sr = null;
            try
            {
                //参数一:路径,参数二:编码格式
                sr = new StreamReader(@"C:\Users\Administrator\Desktop\users.txt",
                    Encoding.GetEncoding("gb2312"));
                string str = string.Empty;
                //循环读取文本,每次读取一行
                while ((str = sr.ReadLine()) != null)
                    //将账号密码以键值对的方式添加进入哈希表
                    ht.Add(str.Split(' ')[0], str.Split(' ')[1]);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                sr.Close();
                sr.Dispose();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int count = 0;
            //循环遍历哈希表
            foreach(DictionaryEntry de in ht)
            {
                //如果某一键值对跟账号密码相匹配则累加1
                if (de.Key.Equals(this.textBox1.Text) && de.Value.Equals(this.textBox2.Text))
                    count ++;
            }
            if (count > 0)
                MessageBox.Show("登录成功!");
            else
                MessageBox.Show("登录失败");
        }


参考地址:http://www.cnblogs.com/ghypnus/archive/2012/03/24/2416038.html --------------------编程问答-------------------- 用C语言做过学生成绩管理系统,可以把思路给你说下,但是不用数据库比较复杂

大致思路就是 用结构体数组储存用户名和密码,然后在登陆的时候使用循环来对比用户名,当对比到相同用户名的时候,提取结构体数组的下标,然后对比这个下标里的密码,相同则登陆成功,反之失败....

建议学习下数据库,然后利用数据库来做比较好 --------------------编程问答--------------------
引用 9 楼 ghypnus 的回复:
C# code

       //定义哈希表
        private Hashtable ht = new Hashtable();
        private void Form1_Load(object sender, EventArgs e)
        {
            StreamReader sr = null;
            try
    ……



这个就写的很好了呀! --------------------编程问答-------------------- 这个太简单了,
  只要 建一个窗体,拖几个 textbox label 两个button 
就ok了
  数据当然存在数据库了。 --------------------编程问答-------------------- 要好点就写个 验证码图片生成器。

不想写 就 一个时间段,只能失败的登录5次。 --------------------编程问答-------------------- 楼上的未免忒。。。。没有数据库就不行? 你可以用泛型集合实例化你的对象,然后循环遍历去读取。没有则返回提示。 --------------------编程问答--------------------
引用 12 楼 hetengfei_ 的回复:
这个太简单了,
  只要 建一个窗体,拖几个 textbox label 两个button 
就ok了
  数据当然存在数据库了。


数据当然存在数据库,这句话是错的吧? 用XML文件不行? 。。。 --------------------编程问答-------------------- 数据库方便快捷,应用大量数据时还是好处多多!这可需要讨论吗? --------------------编程问答-------------------- 可以将所允许的用户账号用代码写死放入List<T>,或是字典中。这很好实现的。动动手就能做到的。 --------------------编程问答--------------------
引用 16 楼 xxm30 的回复:
数据库方便快捷,应用大量数据时还是好处多多!这可需要讨论吗?


正确,
  没有说一定要你用数据。
你用xml ,excel ,甚至是txt,log ,以至是加密成bmp图片,都没有问题,都能实现。
  只是[方便不方便]日后更改,数据增删改查,以及数据配份的问题了。。。
--------------------编程问答--------------------
引用 17 楼 cnwin 的回复:
可以将所允许的用户账号用代码写死放入List<T>,或是字典中。这很好实现的。动动手就能做到的。

这当然是可以的,
   只是用户数量少才这样做,
不然,那电脑的宝贵的内存 给了那几个G 的用户账号了。 --------------------编程问答-------------------- 偶很愚昧啊....不懂 --------------------编程问答--------------------
引用 9 楼  的回复:
C# code

       //定义哈希表
        private Hashtable ht = new Hashtable();
        private void Form1_Load(object sender, EventArgs e)
        {
            StreamReader sr = null;
            try……
  sr = new StreamReader(@"C:\Users\Administrator\Desktop\users.txt",
                    Encoding.GetEncoding("gb2312"));
中的users.txt 指的是什么呀?
我现在是想登录前,必须先注册然后再登录,大侠,这个怎么办啊? --------------------编程问答-------------------- 不用数据库实现不了吧 --------------------编程问答--------------------
引用 4 楼  的回复:
最直接的:if(username="某某"&&password="123"){MessageBox("登录成功")}else{MessageBox("登录失败")}

这个就可取,越简单越好 --------------------编程问答--------------------
引用 21 楼  的回复:
引用 9 楼 的回复:
C# code

//定义哈希表
private Hashtable ht = new Hashtable();
private void Form1_Load(object sender, EventArgs e)
{
StreamReader sr = null;
try……
sr = new StreamReader(@"C:\Users\Admin……

首先:数据库、文本文件、XML等等 都是存储数据的一种方式而已。
1、数据库方式:你注册一个用户,通过insert语句插入数据库
               你登录的时候,通过select来查询匹配
2、文本方式:  你注册一个用户,通过文件流方式向文本文档写入一行数据,通过空格或者逗号来分隔
               你登录的时候,将文本文件的数据读入内存,然后循环匹配登录名和密码
文本方式的好处:不需要装数据库,方便简单。
          坏处:如果数据库量大,浪费内存。
以上只是简单阐述一下重点而已,看看过就行。 --------------------编程问答--------------------
引用 23 楼  的回复:
引用 4 楼 的回复:
最直接的:if(username="某某"&amp;&amp;password="123"){MessageBox("登录成功")}else{MessageBox("登录失败")}

这个就可取,越简单越好

我需要先注册 才登录的,这样做写死了不好挖 --------------------编程问答--------------------
引用 24 楼  的回复:
引用 21 楼 的回复:
引用 9 楼 的回复:
C# code

//定义哈希表
private Hashtable ht = new Hashtable();
private void Form1_Load(object sender, EventArgs e)
{
StreamReader sr = null;
try……
sr = new StreamReader(@"……

大虾  。。。文本方式如何注册,注册后在登录窗体怎样匹配...... --------------------编程问答-------------------- 创建文件流可以的,把用户名和密码写入文件
然后再读取 --------------------编程问答--------------------
引用 27 楼  的回复:
创建文件流可以的,把用户名和密码写入文件
然后再读取


怎么弄? --------------------编程问答-------------------- 加QQ1004518158 我教你。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,