中文摘要
為了提高學生宿舍的管理效率,本課題使用C#語言和SQL Server資料庫系統開發了一個WinForm類型的宿舍管理系統對學校學生宿舍資訊進行高效管理,以提升住宿品質。本系統包含管理者登入注冊、管理者資訊修改子產品、添加宿舍學生資訊子產品、删除宿舍學生資訊子產品、查找宿舍學生資訊子產品、修改宿舍學生資訊子產品六個子產品。設計報告從可行性研究與項目開發計劃及系統開發環境;系統需求分析;概要設計(含資料庫設計)和詳細設計;各功能子產品的具體編碼實作;系統測試;設計總結六個方面進行了闡述。通過該系統的開發,對軟體項目設計與開發工作的完整流程進行了實踐。
關鍵詞:學生資訊管理系統,C#,SQL Server
1軟體可行性研究與項目開發計劃
1.1問題定義
1.2可行性分析
1.3進度計劃
2.需求分析
2.1引言
2.2功能說明
2.3其他要求
作業系統:Windows10
運作環境:VisualStudio
資料庫環境:SQL Server
3.概要設計
3.1功能子產品設計
本宿舍資訊管理系統主要為登入注冊、添加學生宿舍資訊、删除學生宿舍資訊、查找學生宿舍資訊、修改學生宿舍資訊等。
系統功能子產品圖如圖3-1所示。

圖3-1系統功能子產品圖
1)登陸注冊功能
A.登入:輸入使用者名和密碼登入,驗證使用者名和密碼,進行登入。
B.注冊:建立使用者和密碼,用來實作登陸,并有基本資訊錄入。
2)增删查改功能
A.管理者注冊資訊修改:管理者自身資訊更改。
B.添加學生資訊:對學生宿舍資訊的錄入。
C.删除宿舍學生資訊:對搬出學生資訊的移除。
D.查找宿舍學生資訊:對學号和姓名提供查詢學生宿舍資訊功能。
E.修改宿舍學生資訊:對宿舍學生的錯誤資訊進行修改。
3.2資料庫設計
4.詳細設計
4.1總體設計
(1)系統用例圖
圖4-1系統用例
(2)系統體系結構
(3)E-R圖
圖4-3 E-R圖
4.2功能子產品詳細分析
5.軟體編碼
5.1管理者子產品
(1)登入子產品設計
5-1.1登入視窗
此窗體界面用于管理者的登入,無賬号的使用者可點選注冊。
登入視窗關鍵功能代碼如下:
private void btnLogin_Click(object sender, EventArgs e)
{
try
{
if (textBox1.Text == "" || textBox2.Text == "")
{
MessageBox.Show("請輸入完整資訊!!!");
return;
}
string count = textBox1.Text;
string pwd = ToMD5(textBox2.Text);
Models.Login user = new Models.Login { account = count,password=pwd };
bool result = ma.Login(user);
if (result)
{
this.Hide();
main mainForm = new main(textBox1.Text);
mainForm.StartPosition = FormStartPosition.CenterScreen;
mainForm.Show();
}
else
{
MessageBox.Show("賬号或密碼錯誤!!!");
}
}
catch
{
MessageBox.Show("登入失敗!!!");
}
}
(2)注冊子產品設計
5-1.2注冊視窗
此窗體界面用于管理者的注冊,其中對賬号、昵稱、密碼進行了格式驗證,賬号為4位數字,昵稱隻能為中文,密碼需要兩次輸入一緻方可成功注冊。
注冊界面關鍵功能代碼如下:
private void button1_Click(object sender, EventArgs e)
{
if (box2.Text == "" || box3.Text == "")
{
MessageBox.Show("請輸入完整");
}
else
{
if (box2.Text.Equals(box3.Text))
{
string no = SendAccount;
string pwd = ToMD5(box2.Text);
Models.Login u = new Models.Login
{
account = no,
password = pwd
};
bool result = lm.UpdatePwd(u);
if (result)
{
MessageBox.Show("修改成功");
}
else
{
MessageBox.Show("修改失敗");
}
}
else
{
MessageBox.Show("兩次密碼不一緻");
}
}
}
5.2首頁面設計
5-2首頁面視窗
此窗體界面用于管理者登入成功的展示,作為各個子功能子產品的入口。
主界面關鍵功能代碼如下:
private void Exit_Click(object sender, EventArgs e)
{
this.Close();
Login mainForm = new Login();
mainForm.StartPosition = FormStartPosition.CenterScreen;
mainForm.Show();
}
private void Add_Click(object sender, EventArgs e)
{
Add mainForm = new Add();
mainForm.StartPosition = FormStartPosition.CenterScreen;
mainForm.Show();
}
5.3管理者修改密碼子產品設計
5-3修改密碼視窗
此窗體界面用于管理者密碼修改
修改密碼關鍵功能代碼如下:
private void button1_Click(object sender, EventArgs e)
{
if (box2.Text == "" || box3.Text == "")
{
MessageBox.Show("請輸入完整");
}
else
{
if (box2.Text.Equals(box3.Text))
{
string no = SendAccount;
string pwd = ToMD5(box2.Text);
Models.Login u = new Models.Login
{
account = no,
password = pwd
};
bool result = lm.UpdatePwd(u);
if (result)
{
MessageBox.Show("修改成功");
}
else
{
MessageBox.Show("修改失敗");
}
}
else
{
MessageBox.Show("兩次密碼不一緻");
}
}
}
5.4添加資訊管理子產品設計
5-4添加視窗
此窗體界面用于宿舍資訊的添加,實作對宿舍學生資訊的添加,其中對輸入資料進行了格式驗證,學号、樓号、宿舍号、床位号都是數字形式,性别和是否舍長為選擇指定字段,姓名為漢字。
宿舍資訊的添加關鍵功能代碼如下:
private void btnSubmit_Click(object sender, EventArgs e)
{
if (!(ver.IsNumber(box1.Text)))
{
MessageBox.Show("學号隻能為數字!");
return;
}
if (!ver.IsChinese(box2.Text))
{
MessageBox.Show("姓名隻能為中文");
return;
}
if (!(box3.Text=="男" || box3.Text=="女"))
{
MessageBox.Show("性别隻能是男/女");
return;
}
if (!ver.IsNumber(box4.Text))
{
MessageBox.Show("樓号隻能為數字!");
return;
}
if (!ver.IsNumber(box5.Text))
{
MessageBox.Show("宿舍号隻能為數字!");
return;
}
if (!ver.IsNumber(box6.Text))
{
MessageBox.Show("床位隻能為數字!");
return;
}
if (!(box7.Text == "是" || box7.Text == "否"))
{
MessageBox.Show("請選擇或填寫是/否");
return;
}
if (checkNull())
{
string b1 = box1.Text,b2 = box2.Text,b3 = box3.Text,b4 = box4.Text,b5 = box5.Text,b6 = box6.Text,b7 = box7.Text;
Tab items = new Tab{ box1 = b1,box2 = b2,box3 = b3,box4 = b4,box5 = b5,box6 = b6,box7 = b7};
bool result = tabm.Add(items);
if (result)
{
MessageBox.Show("添加成功");
getAll();
ClearAll();
}
else
{
MessageBox.Show("學号重複,添加失敗");
}
}
else
{
MessageBox.Show("請輸入完整資訊");
}
}
5.5删除資訊子產品設計
5-5删除資訊視窗
此窗體界面用于資料的删除,管理者可以通過輸入要删除的學生學号進行删除操作。
删除關鍵功能代碼如下:
private void button1_Click(object sender, EventArgs e)
{
string dels = box1.Text;
if (tabm.GetOneEqual(dels).Rows.Count == 0) //資料庫是否有需要删除的資料
{
MessageBox.Show("沒有檢索到要删除的資料");
return;
}
if (box1.Text.Equals(""))
{
MessageBox.Show("請輸入要删除的資料");
}
else
{
string a = box1.Text;
Tab del = new Tab { box1 = a };
bool result = tabm.Delete(del);
if (result)
{
MessageBox.Show("删除成功");
}
else
{
MessageBox.Show("删除失敗");
}
getAll();
box1.Text = "";
}
}
5.6查詢資訊子產品設計
5-6查詢資訊視窗
此窗體界面用于查詢資料,查詢分為了精确查找和模糊查找,精确查找是通過學生學号進行精确的學生宿舍資訊查詢,模糊查詢是通過學生姓名進行關鍵字查詢。
查詢關鍵功能代碼如下:
private void select_equal_Click(object sender, EventArgs e)
{
if (textBox1.Text.Equals(""))
{
MessageBox.Show("未檢索到你的輸入資訊!");
}
else
{
dataGridView1.DataSource = tabm.GetOneEqual(textBox1.Text);
}
}
private void getAll()
{
dataGridView1.DataSource = tabm.GetAllData();
}
private void Select_Load(object sender, EventArgs e)
{
getAll();
}
private void select_like_Click(object sender, EventArgs e)
{
if (textBox2.Text.Equals(""))
{
MessageBox.Show("未檢索到你的輸入資訊!");
}
else
{
dataGridView1.DataSource = tabm.GetOneLike(textBox2.Text);
}
}
5.7修改資訊子產品設計
5-7修改資訊視窗
此窗體界面用于宿舍資訊的修改,實作對學生宿舍資訊的修改,其中對輸入資料進行了格式驗證,學号、樓号、宿舍号、床位号都是數字形式,性别和是否舍長為選擇指定字段,姓名為漢字。
宿舍資訊的修改關鍵功能代碼如下:
private void btnSubmit_Click(object sender, EventArgs e)
{
if (!(ver.IsNumber(box1.Text)))
{
MessageBox.Show("學号隻能為數字!");
return;
}
if (!ver.IsChinese(box2.Text))
{
MessageBox.Show("姓名隻能為中文");
return;
}
if (!(box3.Text == "男" || box3.Text == "女"))
{
MessageBox.Show("性别隻能是男/女");
return;
}
if (!ver.IsNumber(box4.Text))
{
MessageBox.Show("樓号隻能為數字!");
return;
}
if (!ver.IsNumber(box5.Text))
{
MessageBox.Show("宿舍号隻能為數字!");
return;
}
if (!ver.IsNumber(box6.Text))
{
MessageBox.Show("床位隻能為數字!");
return;
}
if (!(box7.Text == "是" || box7.Text == "否"))
{
MessageBox.Show("請選擇或填寫是/否");
return;
}
if (checkNull())
{
string b1 = box1.Text, b2 = box2.Text, b3 = box3.Text, b4 = box4.Text, b5 = box5.Text, b6 = box6.Text, b7 = box7.Text;
Tab items = new Tab { box1 = b1, box2 = b2, box3 = b3, box4 = b4, box5 = b5, box6 = b6, box7 = b7 };
bool result = tabm.Update(items);
if (result)
{
MessageBox.Show("修改成功");
getAll();
ClearAll();
}
else
{
MessageBox.Show("修改失敗");
}
}
else
{
MessageBox.Show("請輸入完整資訊");
}
}
6.測試
6.1測試計劃
6.2測試用例設計及執行
6.3測試小結
7.總結
源碼和原文檔擷取通路:winform之家