領導要求用VS和c#設計一個注冊登錄視窗程式,我完成了。
然后說這次依然是注冊登錄winform視窗程式,“把用戶提出來作為一個類”“面向物件”
這句話是什么意思?以下是我最先設計的代碼
namespace APP
{
public partial class Form1 : Form//form1是繼承form的一個類
{
public Form1() //建構式不能私有
{
InitializeComponent(); //初始化表單
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)//觸發事件為button1_click
{
if (string.IsNullOrEmpty(textBox1.Text+textBox2.Text))//判斷是否為空值
MessageBox.Show("輸入用戶名和密碼", "警告");
else
{
SqlConnection conn = new SqlConnection("Data source=(local);Initial Catalog=log;Integrated Security=True"); //實體化conn變數,指定連接的資料庫引數,不需要用戶名和密碼,即windows身份驗證模式
conn.Open(); //打開conn連接的資料庫
SqlCommand cmd = new SqlCommand("select * from log where 用戶名='" + textBox1.Text.Trim() + "'and 密碼='" + textBox2.Text.Trim() + "'", conn);//sqlcommand物件允許指定在資料庫上執行增刪改查,資料庫連接物件,執行資料庫陳述句
SqlDataReader sdr = cmd.ExecuteReader();//使用ExecuteReader方法創建SqlDataReader型別物件
sdr.Read();//從資料庫里讀資料
if (sdr.HasRows)//使用HasRows屬性判斷結果中是否有資料
MessageBox.Show("登陸成功", "提示");
else
MessageBox.Show("用戶名或密碼有誤", "警告");
conn.Close();
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void label1_Click(object sender, EventArgs e)
{
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)//默認為true
{
textBox2.PasswordChar = '\0';
}
else
{
textBox2.PasswordChar = '*';
}
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
string str1 = textBox1.Text; //讀取用戶名和密碼
string str2 = textBox2.Text;
int a = 0; //檢驗用戶名、密碼復雜度
int b = 0;
int c = 0;
int x= 0;
int y = 0;
int z = 0;
int i = textBox1.Text.Length;
int j = textBox2.Text.Length;
for (int m = 0; m < str1.Length; m++)
{
char cha1=str1[m];
if (char.IsLetter(cha1)) //是否為字母
{
a++;
}
else
{
if (char.IsDigit(cha1)) //是否為數字
{
b++;
}
else
if(char.IsPunctuation(cha1))//是否為標點符號
{
c++;
}
}
}
for (int n = 0; n < str2.Length;n++ )
{
char cha2 = str2[n];
if (char.IsLetter(cha2))
{
x++;
}
else
if(char.IsDigit(cha2))
{
y++;
}
else
if (char.IsPunctuation(cha2))
{
z++;
}
}
if (a==0 || b==0 || c==0 || x==0 || y==0 || z==0 ||i < 6 || i > 15 || j < 10 || j > 15 || Regex.IsMatch(str1 + str2, "[^a-zA-Z0-9_]")) //正則運算式用來檢查字串是否和指定的運算式匹配
{
MessageBox.Show("用戶名長度在6-15位,密碼長度在10-15位。\n僅限數字、字母、下劃線。\n用戶名和密碼必須包含數字、字母、下劃線。", "警告");
}
else
{
SqlConnection conn = new SqlConnection("Data Source=(local);Initial Catalog=log;Integrated Security=True");
conn.Open();
SqlCommand cmd = new SqlCommand("select * from log where 用戶名='" + textBox1.Text.Trim() + "'", conn);
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Read();
if (sdr.HasRows)
{
MessageBox.Show("該用戶名已存在", "警告");
}
else
{
sdr.Close();
string myInsert = "insert into log(用戶名,密碼) values('" + textBox1.Text + "','" + textBox2.Text + "')";
SqlCommand myCom = new SqlCommand(myInsert, conn);//創建一個SqlCommand型別物件
myCom.ExecuteNonQuery();
conn.Close();
conn.Dispose(); //關閉并釋放物件,下次呼叫時重新創建conn
MessageBox.Show("注冊成功");
}
}
}
private void button3_Click(object sender, EventArgs e) //關閉程式
{
Close();
}
}
}
還請大佬詳細解答一下,我對c#并不熟,最好代碼說明,謝謝
uj5u.com熱心網友回復:
就是叫你搞物件了uj5u.com熱心網友回復:
面向物件的描述我已經看得能背下來了,但是現在依然一頭霧水。是讓我把已經輸入的代碼整合成各個獨立的區域,然后直接呼叫?
我也不知道怎么說了
uj5u.com熱心網友回復:
“把用戶提出來作為一個類”“面向物件”這個的意思不是說讓你跟用戶去搞物件。
考慮:
1. 自己Class一個EndClient的類出來。
2. 把用戶名,密碼,性別,年齡等各種資訊作為類的基本成員函式。
3. 把登錄或者其他一些列操作作為類的基本方法。
uj5u.com熱心網友回復:
抽象化如何把一個具體的事物,抽象化
舉例,張三
抽象化為一個人
人的屬性有 姓名,性別....
人的事件有 跑,說....
uj5u.com熱心網友回復:
就是封裝,將用戶的各種資訊(資料庫欄位)給封裝起來,下次你查詢的時候直接就new 一個用戶然后填充,然后就可以傳來傳去了使用了。
類的用戶資訊有了,那也可以直接在里面弄個方法保存到資料庫了。有屬性有方法- 這不就是面向物件了嗎?
uj5u.com熱心網友回復:
類與物件,類提供欄位屬性方法,實體化的物件可以用這些屬性。。。。。。。。。。。
uj5u.com熱心網友回復:
如果我是你領導,這會兒就找編碼規范去了,TextBox1,cha2,這種變數命名…轉載請註明出處,本文鏈接:https://www.uj5u.com/net/262299.html
標籤:C#
上一篇:.net core c#脫離編譯環境電腦,在其他電腦無法運行!
下一篇:面試怎么總愛問我的未來職業規劃呀
