《數(shù)據(jù)庫(kù)學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)庫(kù)學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告.doc(27頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
洛 陽(yáng) 理 工 學(xué) 院
課 程 設(shè) 計(jì) 報(bào) 告
課程名稱 數(shù)據(jù)庫(kù)課程設(shè)計(jì)
設(shè)計(jì)題目 學(xué)生成績(jī)查詢系統(tǒng)
專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù)
班 級(jí) B100506
學(xué) 號(hào) B10050634
姓 名 孫帥杰
完成日期 2013年1月6號(hào)
課 程 設(shè) 計(jì) 任 務(wù) 書
設(shè)計(jì)題目: 學(xué)生成績(jī)管理系統(tǒng)
設(shè)計(jì)內(nèi)容與要求:
設(shè)計(jì)內(nèi)容:
教務(wù)員可以輸入學(xué)生、教師、班級(jí)、課程信息,一個(gè)班級(jí)只屬于一個(gè)專業(yè),一個(gè)學(xué)生只屬于一個(gè)班級(jí)。教務(wù)員負(fù)責(zé)輸入每個(gè)專業(yè)、每個(gè)班級(jí)需要學(xué)習(xí)哪些課程,指定課程的任課教師。一個(gè)教師可以教授多個(gè)班的多門課程。
教師可以查看學(xué)習(xí)該課程的學(xué)生名單。課程結(jié)束后,教師可以錄入課程成績(jī)。
課程分兩類,必修課和選修課。學(xué)生可以選修課程,每學(xué)期幾門。學(xué)生可以查看自己各門課程的成績(jī)。學(xué)生還可以進(jìn)行評(píng)教,給老師打分。
系統(tǒng)管理員可以輸入教室信息,并結(jié)合班級(jí)、課程、教室信息實(shí)現(xiàn)自動(dòng)排課。
設(shè)計(jì)要求:
要求完成需求分析,寫出功能需求和數(shù)據(jù)需求描述;
在需求分析的基礎(chǔ)上完成數(shù)據(jù)庫(kù)的概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)
設(shè)計(jì);
用C#語(yǔ)言,完成管理系統(tǒng)的部分程序模塊的界面設(shè)計(jì)。
指導(dǎo)教師: 陶 榮
2012年12月28日
課 程 設(shè) 計(jì) 評(píng) 語(yǔ)
成績(jī):
指導(dǎo)教師:
年 月 日
目 錄
1.緒論 1
1.1 設(shè)計(jì)目的 1
1.2 開(kāi)發(fā)工具選擇 1
1.3 開(kāi)發(fā)環(huán)境 1
1.4 本報(bào)告的主要內(nèi)容 1
2.需求分析 1
2.1 系統(tǒng)需求簡(jiǎn)介 1
3.總體設(shè)計(jì) 2
3.1 設(shè)計(jì)概述 2
3.2 系統(tǒng)總體結(jié)構(gòu)及功能模塊劃分 2
3.3 系統(tǒng)數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì) 4
3.4 邏輯結(jié)構(gòu)設(shè)計(jì) 7
4.主程序設(shè)計(jì) 10
4.1 登錄系統(tǒng) 10
4.2 學(xué)生信息查詢、保存、及修改 12
4.3 用戶管理 18
5.設(shè)計(jì)總結(jié)與心得體會(huì) 22
6.參考文獻(xiàn) 23
1.緒論
1.1 設(shè)計(jì)目的
本課程設(shè)計(jì)的目的是使學(xué)生能熟練掌握簡(jiǎn)單的簡(jiǎn)單Windows窗體應(yīng)用程序的設(shè)計(jì)和ADO.net的應(yīng)用,希望通過(guò)本次課程設(shè)計(jì)鍛煉學(xué)生使用C#語(yǔ)言解決實(shí)際問(wèn)題的能力。
1.2 開(kāi)發(fā)工具選擇
本系統(tǒng)后臺(tái)數(shù)據(jù)庫(kù)采用Microsoft SQL Server 數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)系統(tǒng)在安全性、準(zhǔn)確性和運(yùn)行速度方面有絕對(duì)的優(yōu)勢(shì),并且處理數(shù)據(jù)量大,效率高;前臺(tái)采用Microsoft 公司的Visual Studio 2010作為主要開(kāi)發(fā)工具,可與SQL Server 2008數(shù)據(jù)庫(kù)無(wú)縫鏈接。
1.3 開(kāi)發(fā)環(huán)境
系統(tǒng)開(kāi)發(fā)平臺(tái):Microsoft Visual Studio2010
系統(tǒng)開(kāi)發(fā)語(yǔ)言:C#
數(shù)據(jù)庫(kù)管理軟件:SQL Server 2008
1.4 本報(bào)告的主要內(nèi)容
本報(bào)告詳細(xì)的介紹了學(xué)生成績(jī)管理系統(tǒng)的開(kāi)發(fā)過(guò)程,主要涉及到的工作如下:系統(tǒng)的需求分析、系統(tǒng)的總體設(shè)計(jì)、系統(tǒng)的概念設(shè)計(jì)、系統(tǒng)各模塊的詳細(xì)設(shè)計(jì)、系統(tǒng)運(yùn)行與測(cè)試。
2.需求分析
2.1系統(tǒng)需求簡(jiǎn)介
(1)系統(tǒng)目標(biāo)
1.根據(jù)查詢條件實(shí)現(xiàn)學(xué)生信息的查詢
2.學(xué)生選課信息查詢、成績(jī)信息的查詢
3.學(xué)生信息、課程信息、成績(jī)信息的增加、刪除、修改
4.對(duì)基本信息完成增加、刪除、修改時(shí),需注意表與表之間的關(guān)聯(lián)
(2)功能需求分析
本系統(tǒng)的功能需求分析如下:
1.學(xué)生信息查詢:學(xué)生可以根據(jù)學(xué)號(hào)、姓名、專業(yè)進(jìn)行查詢.
2.學(xué)生信息管理:主要是用于學(xué)生信息更新、插入、刪除;
3.學(xué)生成績(jī)錄入:用于學(xué)生成績(jī)管理,錄入學(xué)生成績(jī),也可以更新;
(3)性能需求分析
1.登錄、用戶界面需求:簡(jiǎn)潔、易懂、易用、友好的用戶界面。
2.安全保密性需求:只有憑借用戶名和密碼登陸系統(tǒng),才能進(jìn)行信息的管理等。
3.總體設(shè)計(jì)
3.1設(shè)計(jì)概述
根據(jù)需求把整個(gè)系統(tǒng)分化成不同的模塊,每個(gè)模塊完成一個(gè)特定的子功能。把這些模塊結(jié)合起來(lái)組成一個(gè)整體。逐一實(shí)現(xiàn)各個(gè)功能。
3.2系統(tǒng)總體結(jié)構(gòu)及功能模塊劃分
經(jīng)過(guò)對(duì)系統(tǒng)的需求分析,學(xué)生信息管理系統(tǒng)主要?jiǎng)澐譃槿齻€(gè)部分:學(xué)生信息查詢,學(xué)生信息管理,學(xué)生成績(jī)錄入三個(gè)功能模塊。系統(tǒng)的總體結(jié)構(gòu)如圖3-1所示。
學(xué)
生
成績(jī)錄入
學(xué)
生
信
息
管理
學(xué)生信息管理系統(tǒng)
學(xué)
生
信
息
查詢
圖3-1 系統(tǒng)的總體結(jié)構(gòu)示意圖
(1)學(xué)生信息查詢模塊
學(xué)生信息查詢
學(xué)號(hào)查詢
姓名查詢
學(xué)生信息查詢:學(xué)生可以根據(jù)本人學(xué)號(hào)、姓名進(jìn)行信息查詢。學(xué)生信息查詢模塊結(jié)構(gòu)如圖3-2所示。
圖3-2 學(xué)生信息管理模塊結(jié)構(gòu)示意圖
(2)學(xué)生信息管理模塊
學(xué)生信息管理:主要是用于學(xué)生信息更新、插入、刪除。學(xué)生管理模塊結(jié)構(gòu)如圖3-3所示。
基本信息錄入
成績(jī)錄入
基本信息更新
成績(jī)更新
學(xué)
生
信息刪除
學(xué)
生
信
息
錄入
學(xué)生信息管理
學(xué)生信息更新
圖3-3 學(xué)生信息管理模塊結(jié)構(gòu)示意圖
3.3系統(tǒng)數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)
根據(jù)對(duì)數(shù)據(jù)項(xiàng)與數(shù)據(jù)結(jié)構(gòu)的分析,設(shè)計(jì)出能夠滿足系統(tǒng)需求的各種實(shí)體,及它們之間的關(guān)系,為后面的邏輯結(jié)構(gòu)設(shè)計(jì)打下基礎(chǔ)。
(1)系統(tǒng)E-R圖
系統(tǒng)E-R圖可以將各個(gè)實(shí)體之間的關(guān)系顯示出來(lái),將各個(gè)實(shí)體間的屬性依賴表示明白。
教師與課程之間的關(guān)系:
教師與課程之間是m: n的關(guān)系,即一個(gè)老師能教多門課程,一門課程可以由多個(gè)老師講授。
圖3-4教師與課程實(shí)體圖
學(xué)生與教師之間的關(guān)系:
學(xué)生與教師之間是n:m的關(guān)系,即一名老師可以教授多個(gè)學(xué)生,而一個(gè)學(xué)生可以由多個(gè)教師來(lái)教。
圖3-5教師與學(xué)生的實(shí)體圖
學(xué)生與課程之間的關(guān)系:
學(xué)生與課程之間是n:m的關(guān)系,即一個(gè)學(xué)生可以選修多門課程,一門課程可以被多個(gè)學(xué)生選學(xué)。
圖3-6學(xué)生與課程的實(shí)體圖
學(xué)生與成績(jī)之間的關(guān)系是n:m的關(guān)系:
圖3-7學(xué)生與成績(jī)的實(shí)體圖
管理員與用戶的關(guān)系:
圖3-8管理員與用戶的實(shí)體圖
圖3-9學(xué)生成績(jī)管理全局E-R 圖
3.4 邏輯結(jié)構(gòu)設(shè)計(jì)
(1)將E-R圖轉(zhuǎn)化為關(guān)系模型為:
管理員(用戶名,密碼)
學(xué)生(學(xué)號(hào),姓名,性別,系名,專業(yè),出生日期)
教師(教師號(hào),姓名,性別,院系,聯(lián)系電話)
課程(課程號(hào),課程名,學(xué)分,教師)
成績(jī)(學(xué)號(hào),課程號(hào),姓名,課程名,成績(jī),授課老師)
管理(教師號(hào),學(xué)號(hào),密碼)
教授(教師號(hào),課程號(hào),課程名)
選修(學(xué)號(hào),課程號(hào),成績(jī))
講授(教師號(hào),課程號(hào))
(2)將以上數(shù)據(jù)關(guān)系模型進(jìn)行優(yōu)化處理得關(guān)系模型:
學(xué)生信息(學(xué)號(hào),姓名,性別,系名,專業(yè),出生日期)
教師信息(教師號(hào),姓名,性別,院系,聯(lián)系電話)
管理員信息(用戶名,密碼,用戶級(jí)別)
課程表(課程號(hào),課程名,學(xué)分,教師)
成績(jī)表(學(xué)號(hào)、課程號(hào)、成績(jī))
(3)物理模型設(shè)計(jì)
學(xué)生信息表具體有學(xué)號(hào),姓名,性別,系名,專業(yè),出生日期,如表3-1所示
表3-1學(xué)生信息表
字段
類型
長(zhǎng)度
約束
索引
學(xué)號(hào)
字符型
8
主鍵約束
有
姓名
字符型
10
性別
字符型
2
系名
字符型
20
專業(yè)
數(shù)值型
20
出生日期
字符型
8
教師信息具體有教師號(hào),姓名,性別,院系,專業(yè),聯(lián)系電話,如表3-2所示
表3-2教師信息表
字段
類型
長(zhǎng)度
約束
索引
教師號(hào)
字符型
8
主鍵約束
有
姓名
字符型
10
性別
字符型
2
院系
字符型
20
專業(yè)
數(shù)值型
20
聯(lián)系電話
字符型
11
管理員信息具體有用戶名、密碼、用戶級(jí)別,如表3-3所示
字段
類型
長(zhǎng)度
備注
用戶名
字符型
8
學(xué)號(hào)、教師號(hào)
密碼
字符型
6
用戶級(jí)別
字符型
10
一般操作員/系統(tǒng)管理員
表3-3管理員信息表
課程表信息具體有課程號(hào),課程名,學(xué)分,教師,如表3-4所示
表3-4課程表信息
字段
類型
長(zhǎng)度
約束
索引
課程號(hào)
字符型
10
主鍵約束
有
課程名
字符型
30
學(xué)分
字符型
2
教師
字符型
10
成績(jī)表具體有學(xué)號(hào),課程號(hào),成績(jī),如表3-5所示
表3-5成績(jī)表
字段
類型
長(zhǎng)度
約束
索引
學(xué)號(hào)
字符型
8
主鍵
有
課程號(hào)
字符型
10
主鍵
有
成績(jī)
數(shù)值型
5
4.主程序設(shè)計(jì)
4.1 登錄系統(tǒng)
namespace CourseDesign
{
public partial class LoginForm : Form
{
#region 屬性
///
/// 是否登錄
///
private bool _isLogin = false;
public bool IsLogin
{
get { return _isLogin; }
set { _isLogin = value; }
}
//用于記錄當(dāng)前登錄用戶名;
private static string _currentUser;
public static string CurrentUser
{
get { return _currentUser; }
}
//用于記錄當(dāng)前登錄用戶密碼;
private static string _currentPsw;
public static string CurrentPsw
{
get { return _currentPsw; }
}
#endregion
public LoginForm()
{
InitializeComponent();
this.labelInfo.Text = "";
this.txtBoxUser.Text = "admin";
this.txtBoxPsw.Text = "0";
}
//登錄
private void btnOK_Click(object sender, EventArgs e)
{
if (txtBoxUser.Text.Trim() == "")
{
this.labelInfo.Text = "請(qǐng)輸入您的用戶名!";
}
else if (txtBoxPsw.Text.Trim() == "")
{
this.labelInfo.Text = "請(qǐng)輸入您的密碼!";
//MessageBox.Show("請(qǐng)輸入您的密碼", "錯(cuò)誤提示:", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
Command com = new Command();
string str = @"select * from UserInfo where userId = " + txtBoxUser.Text.ToString() + "";
DataTable table = com.GetDataSet(str);
if (table.Rows.Count <= 0)
{
this.labelInfo.Text = "用戶名不存在!";
txtBoxUser.Text = "";
txtBoxPsw.Text = "";
return;
}
str = @"select * from UserInfo where userId = " + txtBoxUser.Text.ToString() + " and passWard = " + txtBoxPsw.Text.ToString() + "";
DataTable tableUser = com.GetDataSet(str);
if (tableUser.Rows.Count > 0)
{
_currentUser = txtBoxUser.Text;
_currentPsw = txtBoxPsw.Text;
IsLogin = true;
this.Close();
}
else
{
this.labelInfo.Text = "密碼錯(cuò)誤!";
txtBoxPsw.Text = "";
}
}
}
//取消
private void btnCencle_Click(object sender, EventArgs e)
{
this.Close();
}
//重置
private void btnReset_Click(object sender, EventArgs e)
{
txtBoxUser.Text = "";
txtBoxPsw.Text = "";
}
private void txtBoxUser_Click(object sender, EventArgs e)
{
this.labelInfo.Text = "";
}
private void txtBoxPsw_Click(object sender, EventArgs e)
{
this.labelInfo.Text = "";
}
}
}
圖4-1用戶登錄界面
4.2 學(xué)生信息查詢、保存、及修改
namespace CourseDesign
{
public partial class frmViewInfo : Form
{
#region 屬性
private DBHelper.TypeOfOperationForBill _mOperTypeOfBill = DBHelper.TypeOfOperationForBill.nNull;
public DBHelper.TypeOfOperationForBill OperTypeOfBill
{
get { return _mOperTypeOfBill; }
set { _mOperTypeOfBill = value; }
}
//
private bool _isNew = false;
public bool IsNew
{
get { return _isNew; }
set { _isNew = value; }
}
private bool _isModified = false;
public bool IsModified
{
get { return _isModified; }
set { _isModified = value; }
}
#endregion
public frmViewInfo(DBHelper.TypeOfOperationForBill OperType)
{
_mOperTypeOfBill = OperTypeOfBill;
InitializeComponent();
SetFromText();
}
public virtual void SetFromText()
{
if (OperTypeOfBill == TypeOfOperationForBill.nView)
{
this.Text = "查看學(xué)生信息";
}
else
{
this.Text = "編輯學(xué)生信息";
}
}
//添加
private void toolStripBtnAdd_Click(object sender, EventArgs e)
{
//this.dataGridViewInfo.Rows.Add();
//_isNew = true;
Command com = new Command();
string strClass = @"select classId from ClassInfo where className = " + dataGridViewInfo.CurrentRow.Cells["classid"].Value.ToString() + "";
string dtClass = com.GetScalar(strClass).ToString();
string strdept = @"select sdeptNo from Sdept where name = " + dataGridViewInfo.CurrentRow.Cells["Sdept"].Value.ToString() + "";
string dtDept = com.GetScalar(strdept).ToString();
string str = "select * from StudentInfo where stuNum = " + dataGridViewInfo.CurrentRow.Cells["stuNum"].Value.ToString() + "";
DataTable dtable = com.GetDataSet(str);
if (dtable.Rows.Count <= 0)
{
if (dataGridViewInfo["stuNum", dataGridViewInfo.CurrentRow.Index].Value != null && dataGridViewInfo["name", dataGridViewInfo.CurrentRow.Index].Value != null &&
dataGridViewInfo["sex", dataGridViewInfo.CurrentRow.Index].Value != null && dataGridViewInfo["birthday", dataGridViewInfo.CurrentRow.Index].Value != null &&
dataGridViewInfo["nation", dataGridViewInfo.CurrentRow.Index].Value != null && dataGridViewInfo["address", dataGridViewInfo.CurrentRow.Index].Value != null &&
dataGridViewInfo["phone", dataGridViewInfo.CurrentRow.Index].Value != null && dataGridViewInfo["classid", dataGridViewInfo.CurrentRow.Index].Value != null &&
dataGridViewInfo["Sdept", dataGridViewInfo.CurrentRow.Index].Value != null && dataGridViewInfo["intoSchoolDate", dataGridViewInfo.CurrentRow.Index].Value != null)
{
string sql = "insert into StudentInfo (stuNum,name,sex ,birthday ,nation,address,phone,classid,intoSchoolDate,Sdept) values";
sql += "(" + dataGridViewInfo.CurrentRow.Cells["stuNum"].Value.ToString() + "," + dataGridViewInfo.CurrentRow.Cells["name"].Value.ToString() + "," + dataGridViewInfo.CurrentRow.Cells["sex"].Value.ToString()
+ "," + dataGridViewInfo.CurrentRow.Cells["birthday"].Value.ToString() + "," + dataGridViewInfo.CurrentRow.Cells["nation"].Value.ToString() + "," + dataGridViewInfo.CurrentRow.Cells["address"].Value.ToString()
+ "," + dataGridViewInfo.CurrentRow.Cells["phone"].Value.ToString() + "," + dtClass + "," + dataGridViewInfo.CurrentRow.Cells["intoSchoolDate"].Value.ToString() + "," + dtDept + ")";
if (com.ExecuteCommand(sql) > 0)
{
dataGridViewInfo.Rows.Clear();
SelectStudentInfo();
MessageBox.Show("數(shù)據(jù)添加成功!");
}
}
else
{
MessageBox.Show("信息填寫不完整!請(qǐng)補(bǔ)充完整!");
}
}
else
{
MessageBox.Show("該學(xué)生已存在,請(qǐng)審核信息!");
}
}
protected virtual void frmViewInfo_Load(object sender, EventArgs e)
{
this.dataGridViewInfo.Rows.Clear();
this.dataGridViewInfo.Columns.Clear();
//this.dataGridViewInfo.EditMode = DataGridViewEditMode.EditOnEnter;
DataGridViewColumn col = null;
col = new DataGridViewTextBoxColumn();
col.Name = "stuNum";
col.HeaderText = "學(xué)號(hào)";
this.dataGridViewInfo.Columns.Add(col);
col = new DataGridViewTextBoxColumn();
col.Name = "name";
col.HeaderText = "姓名";
this.dataGridViewInfo.Columns.Add(col);
DataGridViewComboBoxColumn col0 = new DataGridViewComboBoxColumn();
col0.FlatStyle = FlatStyle.Flat;
col0.HeaderText = "性別";
col0.Name = "sex";
col0.Items.Add("男");
col0.Items.Add("女");
this.dataGridViewInfo.Columns.Add(col0);
col = new DataGridViewTextBoxColumn();
col.Name = "birthday";
col.HeaderText = "出生年月";
this.dataGridViewInfo.Columns.Add(col);
col = new DataGridViewTextBoxColumn();
col.Name = "nation";
col.HeaderText = "民族";
this.dataGridViewInfo.Columns.Add(col);
col = new DataGridViewTextBoxColumn();
col.Name = "address";
col.HeaderText = "籍貫";
this.dataGridViewInfo.Columns.Add(col);
col = new DataGridViewTextBoxColumn();
col.Name = "phone";
col.HeaderText = "聯(lián)系電話";
this.dataGridViewInfo.Columns.Add(col);
col = new DataGridViewTextBoxColumn();
col.Name = "classid";
col.HeaderText = "班級(jí)";
this.dataGridViewInfo.Columns.Add(col);
col = new DataGridViewTextBoxColumn();
col.Name = "intoSchoolDate";
col.HeaderText = "入學(xué)時(shí)間";
this.dataGridViewInfo.Columns.Add(col);
col = new DataGridViewTextBoxColumn();
col.Name = "Sdept";
col.HeaderText = "系別";
this.dataGridViewInfo.Columns.Add(col);
}
//刪除
private void toolStripBtnDelete_Click(object sender, EventArgs e)
{
Command com = new Command();
if (dataGridViewInfo["stuNum", dataGridViewInfo.CurrentRow.Index].Value != null)
{
string numRow = dataGridViewInfo.CurrentRow.Cells["stuNum"].Value.ToString();
string str = "delete from StudentInfo where stuNum = " + dataGridViewInfo.CurrentRow.Cells["stuNum"].Value.ToString() + "";
if (MessageBox.Show("你確定刪除學(xué)號(hào)為:" + numRow + "的學(xué)生么?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
{
string strScore = "select * from ScoreInfo where stuNo = " + dataGridViewInfo.CurrentRow.Cells["stuNum"].Value.ToString() + "";
DataTable dt = com.GetDataSet(strScore);
if (dt.Rows.Count > 0)
{
MessageBox.Show("請(qǐng)先刪除該學(xué)生的成績(jī)!");
}
else
{
if (com.ExecuteCommand(str) > 0)
{
//dataGridViewInfo.Rows.Clear();
//SelectStudentInfo();
dataGridViewInfo.Rows.Remove(dataGridViewInfo.CurrentRow);
MessageBox.Show("刪除成功!");
}
}
}
}
else
{
if (MessageBox.Show("該數(shù)據(jù)行為空,是否刪除該行?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
{
dataGridViewInfo.Rows.Remove(dataGridViewInfo.CurrentRow);
MessageBox.Show("刪除成功!");
}
}
}
///
/// 查詢學(xué)生信息
///
public void SelectStudentInfo()
{
Command com = new Command();
string str = "select s.stuNum,s.name,s.sex ,s.birthday ,s.nation,s.address,s.phone,c.className,s.intoSchoolDate,sd.name from StudentInfo s,ClassInfo c,Sdept sd" +
" where s.classid = c.classID and s.Sdept = sd.sdeptNo";
DataTable dt = com.GetDataSet(str);
for (int i = 0; i < dt.Rows.Count; i++)
{
dataGridViewInfo.Rows.Add();
for (int k = 0; k < dt.Columns.Count; k++)
{
dataGridViewInfo.Rows[i].Cells[k].Value = dt.Rows[i][k].ToString();
}
dataGridViewInfo.Rows[i].Tag = false;
}
}
//保存
private void toolStripBtnSave_Click(object sender, EventArgs e)
{
Command com = new Command();
for (int i = 0; i < dataGridViewInfo.Rows.Count - 1; i++)
{
string strClass = @"select classId from ClassInfo where className = " + dataGridViewInfo.Rows[i].Cells["classid"].Value.ToString() + "";
string dtClass = com.GetScalar(strClass).ToString();
string strdept = @"select sdeptNo from Sdept where name = " + dataGridViewInfo.Rows[i].Cells["Sdept"].Value.ToString() + "";
string dtDept = com.GetScalar(strdept).ToString();
string sql = @"update StudentInfo set stuNum = " + dataGridViewInfo.Rows[i].Cells["stuNum"].Value.ToString() + ",name = " + dataGridViewInfo.Rows[i].Cells["name"].Value.ToString()
+ ",sex = " + dataGridViewInfo.Rows[i].Cells["sex"].Value.ToString() + ",birthday = " + dataGridViewInfo.Rows[i].Cells["birthday"].Value.ToString() + ",nation = "
+ dataGridViewInfo.Rows[i].Cells["nation"].Value.ToString() + ",address = " + dataGridViewInfo.Rows[i].Cells["address"].Value.ToString() + ",phone = "
+ dataGridViewInfo.Rows[i].Cells["phone"].Value.ToString() + ",classid = " + dtClass + ",intoSchoolDate = " + dataGridViewInfo.Rows[i].Cells["intoSchoolDate"].Value.ToString() + ",Sdept = " + dtDept + " where stuNum = "
+ dataGridViewInfo.Rows[i].Cells["stuNum"].Value.ToString() + "";
if (com.ExecuteCommand(sql) > 0)
{
dataGridViewInfo.Rows.Clear();
SelectStudentInfo();
MessageBox.Show("數(shù)據(jù)修改成功!");
}
else
{
MessageBox.Show("數(shù)據(jù)修改失??!");
}
}
}
}
}
圖4-2查看學(xué)生信息
圖4-3學(xué)生信息顯示
4.3 用戶管理
namespace CourseDesign
{
public partial class FormPassword : Form
{
public FormPassword()
{
InitializeComponent();
this.btnOk.Click += new System.EventHandler(this.btnOk_Click);
}
protected void btnOk_Click(object sender, EventArgs e)
{
if (txtBoxOldPsw.Text == null || txtBoxOldPsw.Text.Trim() == "")
{
MessageBox.Show("請(qǐng)輸入舊密碼!。", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (txtBoxNewPsw.Text == null || txtBoxNewPsw.Text.Trim() == ""
|| txtBoxEnterPsw.Text == null || txtBoxEnterPsw.Text.Trim() == "")
{
MessageBox.Show("請(qǐng)輸入新密碼!。", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
string currPwd = LoginForm.CurrentPsw;
if (currPwd == txtBoxOldPsw.Text.Trim())
{
if (isSame())
鏈接地址:http://m.appdesigncorp.com/p-6492766.html