實現如下圖所示
登錄
查詢,註冊
數據庫目錄
CREATE TABLE [dbo].[Users] (
[id] INT IDENTITY (1, 1) NOT NULL,
[UserName] NVARCHAR (50) NULL,
[week] INT NULL,
[PassWord] NVARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([id] ASC)
);
文件目錄結構
其中需要我門寫的如下圖所示
app.config文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<connectionStrings>
<add name="connStr" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;Connect Timeout=30"/>
</connectionStrings>
</configuration>
MainWindow.xaml
前臺頁面代碼
<Window x:Name="登錄" x:Class="ClassApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ClassApp"
mc:Ignorable="d"
Title="Class" Height="355.224" Width="508.329" ResizeMode="CanMinimize" WindowStartupLocation="CenterScreen">
<Grid Margin="10,0,3.6,7.6" Height="318" VerticalAlignment="Bottom">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label x:Name="Lable1" Content="賬號:" HorizontalAlignment="Left" Height="64" Margin="23,97,0,0" VerticalAlignment="Top" Width="120" FontSize="20"/>
<TextBox x:Name="TextBox1" HorizontalAlignment="Left" Height="35" Margin="88,97,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="335" FontSize="22" BorderThickness="4" TabIndex="1">
<TextBox.Resources>
<VisualBrush x:Key="HelpBrush" TileMode="None" Opacity="0.3" Stretch="None" AlignmentX="Left">
<VisualBrush.Visual>
<TextBlock Text="請輸入用戶名"/>
</VisualBrush.Visual>
</VisualBrush>
</TextBox.Resources>
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<Trigger Property="Text" Value="{x:Null}">
<Setter Property="Background" Value="{StaticResource HelpBrush}"/>
</Trigger>
<Trigger Property="Text" Value="">
<Setter Property="Background" Value="{StaticResource HelpBrush}"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
<Label x:Name="Label2" Content="密碼:" HorizontalAlignment="Left" Height="69" Margin="23,170,0,0" VerticalAlignment="Top" Width="120" FontSize="20"/>
<Button x:Name="loginButton" Content="登錄" HorizontalAlignment="Left" Height="58" Margin="148,238,0,0" VerticalAlignment="Top" Width="202" FontSize="36" Opacity="0.8" Background="#FF5FCCF4" BorderBrush="#FF3834CB" Foreground="#FF36823A" Click="loginButton_Click" IsDefault="True" />
<Label Content="Student schedule" HorizontalAlignment="Left" Height="62" Margin="111,10,0,0" VerticalAlignment="Top" Width="275" FontSize="36" FontFamily="Impact" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" RenderTransformOrigin="0.339,0.504"/>
<PasswordBox x:Name="PasswordBox" HorizontalAlignment="Left" Height="35" Margin="88,166,0,0" VerticalAlignment="Top" Width="335" BorderThickness="4" FontSize="22" TabIndex="2"/>
<Button x:Name="registeredButton" Content="註冊" HorizontalAlignment="Left" Height="35" Margin="428,97,0,0" VerticalAlignment="Top" Width="50" BorderThickness="0" FontSize="18" BorderBrush="White" Background="White" Click="registeredButton_Click"/>
</Grid>
</Window>
後臺功能代碼
using System;
using System.Data.SqlClient;
using System.Windows;
using System.Windows.Controls;
using System.Configuration;
namespace ClassApp
{
/// <summary>
/// MainWindow.xaml 的交互邏輯
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.Title = "Class";
TextBox1.Text = "admin";
PasswordBox.Password = "admin";
}
private void loginButton_Click(object sender, RoutedEventArgs e)
{
//string sqlconnstr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
//SqlConnection sqlconn = new SqlConnection(sqlconnstr);
//sqlconn.Open();
//if (sqlconn.State == ConnectionState.Open)
//{
// MessageBox.Show("connection successful");
//}
//else
//{
// MessageBox.Show("connection failure");
//}
//sqlconn.Close();
//sqlconn = null;
//連接數據庫
//string con = "Server=.;Database=DatabaseDesign;user id=sa;pwd=1996";
//string sqlconnstr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
//SqlConnection sqlconn = new SqlConnection(sqlconnstr);
//sqlconn.Open();
//SqlDataReader sdr = sqlCmd.ExecuteReader();
//SqlCommand sqlCmd = new SqlCommand("select * from Users", sqlconn);
//if (TextBox1.Text == "")
//{
// MessageBox.Show("賬號不可爲空!");
//}
//if (sqlconn.State == ConnectionState.Open)
//{
// MessageBox.Show("connection successful");
//}
//else
//{
// MessageBox.Show("connection failure");
//}
//1
string userName = ""; //Sql->UserName
string showbb = "";//test字符
int jump = 0;
int week = -1; //Sql->Week
int id = 0; //Sql->ID
int accountNumberState = 0; //賬號登錄狀態
//string sqlconnstr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
//SqlConnection sqlCon = new SqlConnection(sqlconnstr); //連接數據庫
//sqlCon.Open();
string sqlconnstr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
SqlConnection sqlconn = new SqlConnection(sqlconnstr);
sqlconn.Open();
//SqlDataReader sdr = SqlHelper.ExecuteReader();
//SqlCommand sqlCmd = new SqlCommand("select * from Database", sqlconn);
SqlCommand com = sqlconn.CreateCommand();
com.CommandText = "select * from Users";
SqlDataReader read = com.ExecuteReader();
//while (read.Read())查詢test
//{
// MessageBox.Show(read.GetString(1)+";");
//}
//sqlconn.Close();
if (TextBox1.Text == "")
{
MessageBox.Show("賬號不可爲空!");
}
else
{
while (read.Read())
{
if (TextBox1.Text == read["UserName"].ToString().Trim() && PasswordBox.Password.Trim() == read["PassWord"].ToString().Trim())
{
//accountNumber Week&ID
week = Convert.ToInt32(read["Week"].ToString());
id = Convert.ToInt32(read["ID"].ToString());
userName = read["UserName"].ToString();
accountNumberState = 1;
break;
}
}
if (accountNumberState == 0)
{
MessageBox.Show("賬號或密碼錯誤");
}
}
if (accountNumberState == 1)
{
MessageBox.Show("登錄成功");
UserList UserListWindow = new UserList();//跳轉用戶列表頁面
UserListWindow.Show();
this.Close();
////初始過程中傳入賬號ID等
//Login loginWindow = new Login(week,id,userName);
//sqlCon.Close();
//loginWindow.Show();
//this.Close();
}
else
{
sqlconn.Close();
}
}
private void registeredButton_Click(object sender, RoutedEventArgs e)
{
Registered registerdWindow = new Registered();
registerdWindow.Show();
this.Close();
}
}
}
Registered.xaml
前臺頁面代碼
<Window x:Class="ClassApp.Registered"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ClassApp"
mc:Ignorable="d"
Title="註冊" Height="480.008" Width="480.079" WindowStartupLocation="CenterScreen" ResizeMode="CanMinimize">
<Grid Margin="0,10,3.6,1.4">
<Label Content="註冊賬號" HorizontalAlignment="Left" Margin="10,91,0,0" VerticalAlignment="Top" Height="44" Width="104" FontSize="24" RenderTransformOrigin="0.203,1.348" Foreground="#FFBF3131"/>
<Label Content="Student schedule" HorizontalAlignment="Left" Height="62" Margin="61,29,0,0" VerticalAlignment="Top" Width="275" FontSize="36" FontFamily="Impact" RenderTransformOrigin="0.339,0.504"/>
<Label Content="賬號:" HorizontalAlignment="Left" VerticalAlignment="Top" Width="100" RenderTransformOrigin="0.345,0.344" Margin="21,161,0,0" FontSize="20"/>
<TextBox x:Name="registeredAccountNumberTextBox" HorizontalAlignment="Left" Height="33" Margin="94,163,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="273" FontSize="22" TabIndex="1"/>
<Label Content="密碼:" HorizontalAlignment="Left" Margin="21,213,0,0" VerticalAlignment="Top" FontSize="18" Width="80" RenderTransformOrigin="0.494,0.025"/>
<Label Content="確認密碼:" HorizontalAlignment="Left" Margin="4,266,0,0" VerticalAlignment="Top" FontSize="18" Width="97"/>
<Label x:Name="verificationLable1" Content="1" HorizontalAlignment="Left" Margin="94,314,0,0" VerticalAlignment="Top" FontSize="16" RenderTransformOrigin="0.995,0.414"/>
<Label x:Name="verificationLable3" Content="1" HorizontalAlignment="Left" Margin="146,314,0,0" VerticalAlignment="Top" FontSize="16"/>
<Label x:Name="verificationLable2" Content="+" HorizontalAlignment="Left" Margin="115,310,0,0" VerticalAlignment="Top" FontSize="20" RenderTransformOrigin="0.193,0.557"/>
<Label x:Name="verificationLable4" Content="=" HorizontalAlignment="Left" Margin="170,314,0,0" VerticalAlignment="Top" FontSize="16"/>
<TextBox x:Name="VerificationCodeTextBox" HorizontalAlignment="Left" Height="30" Margin="197,314,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="35" FontSize="20" TabIndex="4"/>
<Button x:Name="registeredButton" Content="註冊" HorizontalAlignment="Left" Height="42" Margin="61,385,0,0" VerticalAlignment="Top" Width="96" FontSize="24" Background="#FF52C0D6" BorderBrush="#FFF6F0F0" Click="registeredButton_Click" TabIndex="6"/>
<Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="12" Margin="-5,126,0,0" Stroke="Black" VerticalAlignment="Top" Width="474" RenderTransformOrigin="0.5,0.5">
<Rectangle.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleY="-1"/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Rectangle.RenderTransform>
</Rectangle>
<Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="15" Margin="-4,350,0,0" Stroke="Black" VerticalAlignment="Top" Width="474" RenderTransformOrigin="0.5,0.5">
<Rectangle.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleY="-1"/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Rectangle.RenderTransform>
</Rectangle>
<Button x:Name="cancelButton" Content="返回" HorizontalAlignment="Left" Height="42" Margin="240,385,0,0" VerticalAlignment="Top" Width="96" FontSize="24" Click="cancelButton_Click" TabIndex="7"/>
<PasswordBox x:Name="registeredPassWordBox" HorizontalAlignment="Left" Margin="94,214,0,0" VerticalAlignment="Top" Width="273" Height="33" FontSize="22" TabIndex="2"/>
<PasswordBox x:Name="checkPassWordBox" HorizontalAlignment="Left" Margin="106,266,0,0" VerticalAlignment="Top" Width="261" Height="33" FontSize="22" TabIndex="3"/>
<Label x:Name="verificationLable5" Content="" HorizontalAlignment="Left" Height="48" Margin="248,303,0,0" VerticalAlignment="Top" Width="60" FontSize="36" RenderTransformOrigin="0.726,0.689" Foreground="#FFEB1414"/>
<Button x:Name="button3" Content="點擊驗證" HorizontalAlignment="Left" Height="30" Margin="287,314,0,0" VerticalAlignment="Top" Width="80" FontSize="14" Background="#FFE0D4D4" Click="button3_Click" TabIndex="5"/>
<Label MaxWidth="100" Margin="372,161,15,140" >
<TextBlock TextWrapping="Wrap"
Text="1.賬號和密碼長度爲3-16個字符
2.不包含空格" Height="112" />
</Label>
</Grid>
</Window>
後臺功能代碼
using System;
using System.Configuration;
using System.Data.SqlClient;
using System.Windows;
namespace ClassApp
{
/// <summary>
/// Registered.xaml 的交互邏輯
/// </summary>
public partial class Registered : Window
{
public Registered()
{
InitializeComponent();
Random random = new Random();
verificationLable1.Content = random.Next(0, 50).ToString();
verificationLable3.Content = random.Next(0, 50).ToString();
}
//'取消'button
private void cancelButton_Click(object sender, RoutedEventArgs e)
{
MainWindow mainWindow = new MainWindow();
mainWindow.Show();
this.Close();
}
//'註冊'button
private void registeredButton_Click(object sender, RoutedEventArgs e)
{
string classRowAndColumn = "";
string userName = "";
if (AccountCorrectness())
{
MessageBox.Show("1.賬號&密碼長度爲3-16個字符 \n2.不包含空格");
}
else if (IsSameAccount())
{
Random random = new Random();
//
registeredAccountNumberTextBox.Text = null;
registeredPassWordBox.Password = null;
checkPassWordBox.Password = null;
VerificationCodeTextBox.Text = null;
verificationLable5.Content = null;
verificationLable1.Content = random.Next(0, 50).ToString();
verificationLable3.Content = random.Next(0, 50).ToString();
MessageBox.Show("賬號已存在,請重新輸入");
}
else if (registeredPassWordBox.Password != checkPassWordBox.Password)
{
MessageBox.Show("兩次密碼不一致");
}
else if (verificationLable5.Content.ToString() == "×" || verificationLable5.Content.ToString() == "")
{
MessageBox.Show("驗證碼錯誤");
}
else //數據庫的操作
{
string sqlconnstr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
SqlConnection sqlconn = new SqlConnection(sqlconnstr);
sqlconn.Open();
string addAcountToDB = string.Format("insert into Users (UserName,PassWord) values ("+registeredAccountNumberTextBox.Text.ToString()+ "," + checkPassWordBox.Password+ ")");
SqlCommand sqlCmd = new SqlCommand(addAcountToDB, sqlconn);
sqlCmd.ExecuteNonQuery(); //保存INSERT操作
MessageBox.Show("註冊成功!");
//註冊成功後返回登錄界面
MainWindow mainWindow = new MainWindow();
mainWindow.Show();
this.Close();
}
}
//註冊賬號的長度驗證
private bool AccountCorrectness()
{
if(registeredAccountNumberTextBox.Text.Length > 18 || registeredAccountNumberTextBox.Text.Length<3)
{
return true;
}
if(registeredPassWordBox.Password.Length >18 || registeredPassWordBox.Password.Length < 3)
{
return true;
}
return false;
}
//驗證碼對錯
private void button3_Click(object sender, RoutedEventArgs e)
{
if(VerificationCodeTextBox.Text=="")
{
verificationLable5.Content = "×";
}
else if (Convert.ToInt32(verificationLable1.Content) + Convert.ToInt32(verificationLable3.Content.ToString()) == Convert.ToInt32(VerificationCodeTextBox.Text))
{
verificationLable5.Content = "√";
}
else
{
verificationLable5.Content = "×";
}
}
//驗證賬號是否重複
private bool IsSameAccount()
{
string sqlconnstr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
SqlConnection sqlconn = new SqlConnection(sqlconnstr);
sqlconn.Open();
SqlCommand sqlCmd2 = new SqlCommand("select * from Users", sqlconn);
SqlDataReader sDR = sqlCmd2.ExecuteReader();
while (sDR.Read())
{
if(registeredAccountNumberTextBox.Text==sDR["UserName"].ToString().Trim())
{
sqlconn.Close();
sDR.Close();
return true;
}
}
sqlconn.Close(); //關閉連接
sDR.Close();
return false;
}
}
}
UserList.xaml
前臺頁面代碼
<Window x:Class="ClassApp.UserList"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ClassApp"
mc:Ignorable="d"
Title="用戶查詢" Height="520" Width="404">
<Grid>
<Button x:Name="button1" Content="顯示數據" HorizontalAlignment="Left" Margin="27,360,0,0" VerticalAlignment="Top" Width="343" Click="button_Click"/>
<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="27,402,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="180"/>
<Button x:Name="button2" Content="查詢用戶" HorizontalAlignment="Left" Margin="236,402,0,0" VerticalAlignment="Top" Width="75" Height="23" Click="button2_Click"/>
<DataGrid x:Name="dataGrid" HorizontalAlignment="Left" Margin="27,31,0,0" VerticalAlignment="Top" Height="296" Width="343"/>
<TextBox x:Name="DeleteText" HorizontalAlignment="Left" Height="23" Margin="27,449,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="180" RenderTransformOrigin="-0.005,0.496"/>
<Button x:Name="DeleteButton" Content="刪除用戶" HorizontalAlignment="Left" Margin="236,449,0,0" VerticalAlignment="Top" Width="75" RenderTransformOrigin="0.5,0.5" Height="23" Click="DeleteButton_Click"/>
</Grid>
</Window>
後臺功能代碼
using System;
using System.Data.SqlClient;
using System.Windows;
using System.Configuration;
using System.Data;
namespace ClassApp
{
/// <summary>
/// UserList.xaml 的交互邏輯
/// </summary>
public partial class UserList : Window
{
public UserList()
{
InitializeComponent();
}
class DataBaseHelper
{
/// 數據庫打開連接的方法
///
/// </summary>
/// <returns></returns>
public static SqlConnection getSqlConnection()
{
string sqlconnstr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
SqlConnection sqlConnection = new SqlConnection(sqlconnstr);
try
{
//獲取數據庫字符串
sqlConnection.Open();
sqlConnection.Close();
}
catch
{
throw new Exception("無法連接數據庫服務器");
}
return sqlConnection;
}
/// sql增刪改的方法
///
/// </summary>
/// <param name="sqlstr"></param>
/// <returns></returns>
public static int GetNonQueryEffect(string sqlstr)
{
SqlConnection sqlConnection = new SqlConnection();
try
{
sqlConnection.Open();
//創建要執行的語句
SqlCommand cmd = new SqlCommand(sqlstr, sqlConnection);
return cmd.ExecuteNonQuery();//返回執行語句中的錯誤
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
finally
{
sqlConnection.Close();
sqlConnection.Dispose();//釋放資源
}
}
/// 讀取數據的的方法
///
/// </summary>
/// <param name="sqlstr"></param>
/// <returns></returns>
public static DataSet GetDataset(string sqlstr)
{
SqlConnection conn = getSqlConnection();
try
{
conn.Open();//打開數據庫連接
SqlDataAdapter sda = new SqlDataAdapter(sqlstr, conn);//更新數據庫的命令
DataSet ds = new DataSet();
sda.Fill(ds);//填充
return ds;
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
finally
{
conn.Close();
conn.Dispose();
}
}
public static DataSet DeleteGetData(string sqlstr)
{
SqlConnection conn = getSqlConnection();
try
{
conn.Open();//打開數據庫連接
//SqlDataAdapter sda = new SqlDataAdapter(sqlstr, conn);//更新數據庫的命令
DataSet ds = new DataSet();
return ds;
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
finally
{
conn.Close();
conn.Dispose();
}
}
}
private void button_Click(object sender, RoutedEventArgs e)
{
string str = "select * FROM Users";//查詢的語句
dataGrid.ItemsSource = DataBaseHelper.GetDataset(str).Tables[0].DefaultView;
}
private void button2_Click(object sender, RoutedEventArgs e)
{
if (textBox.Text.Trim() == " ")
{
return;
}
string strr = string.Format("select * FROM Users where UserName='{0}'", textBox.Text);
dataGrid.ItemsSource = DataBaseHelper.GetDataset(strr).Tables[0].DefaultView;
}
private void DeleteButton_Click(object sender, RoutedEventArgs e)
{
try
{
MessageBoxResult dr = MessageBox.Show("是否刪除該條數據?", "系統提示", MessageBoxButton.OK);
if (dr == MessageBoxResult.OK)
{
if (DeleteText.Text.Trim() == " ")
{
return;
}
string strrr = string.Format("delete from Users where UserName ='"+DeleteText.Text.ToString()+"'");
MessageBox.Show(DeleteText.Text.ToString());
dataGrid.ItemsSource = DataBaseHelper.DeleteGetData(strrr).Tables[0].DefaultView;
MessageBox.Show("刪除成功");
}
}
catch (Exception)
{
throw;
}
}
}
}