




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
王L讓我們弄個(gè)課程設(shè)計(jì),才講兩節(jié)課就撒手不管了。還說簡(jiǎn)單,簡(jiǎn)單個(gè)JB。對(duì)他來說當(dāng)然簡(jiǎn)單了,對(duì)我這樣的菜鳥來說簡(jiǎn)直是難如登天,我相信像我這樣的菜鳥肯定還有,只有菜鳥才知道菜鳥的辛苦,為了讓這些菜鳥們不再辛苦了,我把所有的實(shí)驗(yàn)過程一步一步都給寫了出來,細(xì)化到最簡(jiǎn)單,只要是個(gè)人都能看憧的。不能保證我的過程都是對(duì)了,我也是摸著石頭過了河,在菜鳥們還沒有看到橋的時(shí)候不妨也摸著石頭走一趟吧。下面步驟中的一些東西是本人的看法,如果錯(cuò)了也不必吐糟,畢竟哥還是個(gè)初級(jí)菜鳥。【第一部分:創(chuàng)建數(shù)據(jù)庫】在自己的E盤建立一個(gè)名為課程設(shè)計(jì)數(shù)據(jù)庫的文件夾。打開sqlserver2008,點(diǎn)擊新建查詢,在右邊的編輯框里輸入如下代碼一一》點(diǎn)擊執(zhí)行。createdatabasestudentprimary(name=student_dat,'E:\課程設(shè)計(jì)數(shù)據(jù)庫\student.mdf,size=5MB,maxsize=50,=2MB)logon(name=教學(xué)管理數(shù)據(jù)庫_log,'E:\課程設(shè)計(jì)數(shù)據(jù)庫\student.ldf,size=5MB,maxsize=100MB,=2MB)gousestudentgoCREATETABLEstudent(snoNVARCHAR(IO)PRIMARYKEYsnameNVARCHAR(8),ssexNVARCHAR(l),sbirthdayNVARCHAR(IO))createtableuserlogin(usernameNVARCHAR(8)primarykey,passwordnvarchar(20)NOTNULL)insertintostudentvalues(,2012001,;許敏7女71992/03/18')insertintostudentvalues('20120027王鵬7男71996/12/28')insertintostudentvalues('2012003,;張壘7男','1988/01/13')insertintostudentvalues('2012004';李小紅丁女71993/06/22')insertintostudentvalues('2012005','張哲?男71992/12/30')insertintostudentvalues('20120067張強(qiáng)丁男71989/01/06')insertintostudentvalues('2012007,;劉敏紅7女71988/12/02*)insertintouserloginvalues('admin'/'123456,)insertintouserloginvalues('zhangsan7123456')insertintouserloginvalues('lisi,/'123456,)這里面有兩張表,一張是學(xué)生表,一張是登錄表,里面是用戶名和密碼。這是會(huì)發(fā)現(xiàn)在E盤創(chuàng)建的文件家里出現(xiàn)了兩個(gè)文件,一個(gè)是數(shù)據(jù)庫文件一個(gè)是數(shù)據(jù)庫口志文件。就這樣后臺(tái)數(shù)據(jù)庫就創(chuàng)建好了。(大家也可以根據(jù)自己的需要來修改)【第二部分:創(chuàng)建登陸窗「I】,打開isualstudio2008,文件》新建》項(xiàng)目。左邊點(diǎn)擊visualc#,右邊點(diǎn)擊window窗體應(yīng)用程序。名稱改為studentMIS,位置根據(jù)自己情況而定。一定要在創(chuàng)建解決方案的目錄前面打鉤。這時(shí)界面有一個(gè)Forml窗體了。下面我們要做的就是設(shè)置三層架構(gòu)了。簡(jiǎn)單的說就是添加三個(gè)類庫。三個(gè)類庫分別是是BBL(邏輯判斷層,我們一般用不到,也可以不添加),DAL(數(shù)據(jù)操作層,操作數(shù)據(jù)庫的代碼都寫在這里),MODEL(聯(lián)系層與層之間的關(guān)系)點(diǎn)擊文件一一》添加一一》新建項(xiàng)目一》類庫。名稱改為DAL。點(diǎn)擊文件一一》添加一一》新建項(xiàng)目一一》類庫。名稱改為MODEL。這里不需要用到BBL層,所以就不添加了。前面的步驟就把這次試驗(yàn)的基本架構(gòu)弄好了,下面要弄的就是添加事件了,怎么登錄和連接后臺(tái)數(shù)據(jù)庫,以及對(duì)數(shù)據(jù)庫的修改。展開用邊的studentMIS,選中Forml,重命名為formlogin.cs,雙擊formlogin,點(diǎn)擊視圖——》屬性窗II。在出現(xiàn)的屬性窗II中將text后面的Forml改為登錄。看看(name)后面是否為formlogin,(這就相當(dāng)與是這個(gè)登錄窗II的ID,唯一表示這個(gè)窗體,以后所創(chuàng)建的每一個(gè)窗體都有一個(gè)在試驗(yàn)中唯一的名字來表示自己)。下面來添加窗體的控件按鈕。點(diǎn)擊視圖一一》工具箱,展開所有windows窗體。左鍵單擊Label控件,按后把鼠標(biāo)放在我們登錄窗體中空白位置左鍵點(diǎn)擊一下,就會(huì)發(fā)現(xiàn)登錄窗體中出現(xiàn)了一個(gè)labell的字樣,用同樣的辦法就會(huì)發(fā)現(xiàn)出現(xiàn)了Iabel2.鼠標(biāo)點(diǎn)中l(wèi)abell,在屬性窗口將text后面的改為用戶名。鼠標(biāo)點(diǎn)中Iabel2,在屬性窗II中將text后面的改為密碼。在工具箱中找到TextBox控件。同樣方法鼠標(biāo)單擊,然后在登錄窗體中空白位置單擊鼠標(biāo)左鍵,就會(huì)出現(xiàn)編輯框,用鼠標(biāo)左鍵選中編輯框,在屬性窗II中將(name)后面的改為txtboxusername.用同樣的方法再添加一個(gè)編輯框控件,在屬性窗II中將(name)后面的改為txtboxpassword3現(xiàn)在添加按鈕控件,在工具箱中找到Button控件,左鍵單擊,然后在登錄窗體中的空白位置單擊左鍵,選中按鈕控件,在他的屬性窗II中將text后面的改為登錄,將(name)后面的改為btnlogino用同樣的方法再添加一個(gè)按鈕控件,講將text后面的改為取消,將(name)后而的改為btncancel。經(jīng)過12個(gè)步驟我們就創(chuàng)建好了一個(gè)登陸窗IIo【第三部分:連接數(shù)據(jù)庫登陸】在建立數(shù)據(jù)庫的連接前先說一下本人對(duì)于這個(gè)連接后臺(tái)數(shù)據(jù)庫的原理的理解。在我們?cè)诘顷懘癐I的編輯框里輸入用戶名和密碼后點(diǎn)擊登陸時(shí),在登陸事件里我們通過MODEL層函數(shù)Userinformation將我們輸入的信息傳到DAL層的getUserlnformation函數(shù)內(nèi),該函數(shù)的功能是傳過來的信息與我們開始在后臺(tái)數(shù)據(jù)庫里保存的用戶名和密碼進(jìn)行對(duì)比,如果對(duì)比成功就會(huì)顯示登陸成功,這樣就可以打開另一個(gè)窗II了,然后就可以進(jìn)行操作,否則顯示登陸失敗。首先我們來實(shí)現(xiàn)后臺(tái)數(shù)據(jù)庫對(duì)比我們輸入信息的代碼。展開DAL層,刪除classl.cs(其實(shí)我們也可以直接改名而不用刪除的,為了更好的演示,我們還是自己創(chuàng)建比較好),選中DAL,點(diǎn)擊右鍵一一》添加一一》新建項(xiàng)。在彈出的對(duì)話框左邊選擇C#項(xiàng),右邊選擇類。名稱改為Dal.cso展開DAL層,雙擊Dal.cs,進(jìn)入了編輯框,這里面寫一些操作數(shù)據(jù)庫的代碼,在class前面加上public,在Dal類中添加如下代碼。卜?面代碼的作用是將你輸入的信息和數(shù)據(jù)庫里信息對(duì)比,如果正確就返回1,顯示登陸成功,如果不正確就不返回1,顯示登陸失敗。publicstaticintgetUserlnformation(Userlnformationuser)(stringconnstr=@Hserver=.;database=student;integratedsecurity=sspin;using(SqlConnectionconn=newSqlConnection(connstr))(conn.Open();using(SqlCommandcmd=conn.CreateCommand())(cmd.CommandText="selectcount(*)fromuserloginwhereusername=@nameandpassword=@pwd";cmd.Parameters.Add(newSqlParameter(,,@name,,/user.getUserName()));cmd.Parameters.Add(newSqlParameter(,,@pwd,,,user.getPassword()));intcount=Convert.Tolnt32(cmd.ExecuteScalar());returncount;}}}輸入代碼是要注意左邊大括號(hào)和右邊大括號(hào)的個(gè)數(shù)要相等。下面都是遵循這個(gè)原則的,在后面我就不多說了。接下來我們要在MODEL層里創(chuàng)建一個(gè)Userinformation類,方法如上,名稱改為Userinformation.cso建好后雙擊進(jìn)入編輯框,在classUserinformation前加上public,類中添加如下代碼privatestringusername;privatestringpassword;publicUserlnformation(stringusername,stringpassword)this.username=username;this.password=password;publicstringgetUserName()(returnusername;}publicstringgetPassword(){returnpassword;}在我們點(diǎn)擊登陸時(shí)如果登陸成功,應(yīng)該跳轉(zhuǎn)到另一個(gè)窗II,多以首先我們應(yīng)該創(chuàng)建一個(gè)新窗體,學(xué)生管理系統(tǒng)。選中studentMIS,右鍵》添加》新建項(xiàng)。選擇windows窗體。名稱改為formmain.cs。創(chuàng)建好后在屬性框中將text后面改為學(xué)生管理系統(tǒng)。雙擊formlogin.cso雙擊登陸按鈕進(jìn)入編輯框,輸入如下代碼Userinformationuser=newUserlnformation(txtboxusername.Text.Trim(),txtboxpassword.Text.TrimO);intcount=DAL.Dal.getUserlnformation(user);if(count==l){newformmain().Show();this.Hide();}else{MessageBox.Show("錯(cuò)誤的用戶名或密碼!”);txtboxusername.Text=〃清空txtboxpassword.Text=txtboxusername.Focus();//獲取焦點(diǎn)}雙擊formlogin放回到登陸窗口,雙擊取消,輸入代碼this.Close();?現(xiàn)在我們可以開始調(diào)試了,看看能不能成功,左鍵選中studentMIS,點(diǎn)擊調(diào)試一一》啟動(dòng)調(diào)試。這是我們會(huì)發(fā)現(xiàn)調(diào)試不成功,點(diǎn)擊否,出現(xiàn)4個(gè)錯(cuò)誤,什么缺少應(yīng)用之類的。出現(xiàn)這樣的錯(cuò)誤原因是,我們沒有應(yīng)用,這就好像我們寫程序而沒有寫頭文件一樣。該怎么解決呢,很簡(jiǎn)單。選中DAL,右鍵——》添加引用——》項(xiàng)目,點(diǎn)擊MODEL,確定。選中studentMIS,右鍵——》添加引用——》項(xiàng)目,點(diǎn)擊DAL,確定,選中studentMIS,右鍵——》添加引用一—》項(xiàng)目,點(diǎn)擊MODELo確定10,進(jìn)過第九步還沒有解決問題,雙擊Dal.cso在最上面加上usingMODEL;usingSystem.Data.SqlClient;o雙擊登陸進(jìn)入編輯框,在最上面添加usingDAL;usingMODEL;11,這時(shí)我們?cè)缯{(diào)試一遍,在彈出的登陸窗I】中輸入用戶名和密碼,點(diǎn)擊登陸后會(huì)彈出一個(gè)新的窗「1,學(xué)生管理系統(tǒng)。12到這里我們連接后臺(tái)數(shù)據(jù)庫登陸就做成功了。卜面我們需要做的就是在學(xué)生管理系統(tǒng)窗II添加一些控件來顯示后臺(tái)數(shù)據(jù)庫的學(xué)生表信息,以及對(duì)數(shù)據(jù)庫增刪查改操作的控件。【第四部分?jǐn)?shù)學(xué)生管理系統(tǒng)添加控件】1,現(xiàn)在我們先來試一試在學(xué)生管理系統(tǒng)顯示數(shù)據(jù)庫中學(xué)生表中的信息,雙擊formmain.cs,在工具箱中找到DataGridView控件,在學(xué)生管理系統(tǒng)窗體中添加這個(gè)控件,在屬性窗II中將(name)后面的改為dgv.下面我,們就開始來寫代碼了。需要輸出數(shù)據(jù)庫中的表,對(duì)數(shù)據(jù)庫操作,需要在DAL中寫代碼。展開DAL,雙擊Dal,cs進(jìn)入編輯頁面,添加下面代碼publicstaticDataTablereturnTable()stringconnstr=@"server=.;database=student;integratedsecurity=sspi";stringsql="select*fromstudent";using(SqlConnectionconn=newSqlConnection(connstr))//連接數(shù)據(jù)庫的字符串{conn.Open();//打開對(duì)數(shù)據(jù)庫的連接using(SqlDataAdapteradapter=newSqlDataAdapter(sql,connstr)){〃數(shù)據(jù)的適配器,負(fù)責(zé)填充數(shù)據(jù)DataTabletable=newDataTable();adapter.Fill(table);returntable;}}}代碼的作用是返回?cái)?shù)據(jù)庫中的學(xué)生表。鼠標(biāo)選中學(xué)生管理系統(tǒng)窗體,雙擊進(jìn)入編輯頁面,輸入一下代碼。dgv.DataSource=DAL.Dal.returnTable();在最上面添加usingSystem.Data;o下面我們就可以來調(diào)試一下,發(fā)現(xiàn)在學(xué)生管理系統(tǒng)上出現(xiàn)了數(shù)據(jù)庫中的學(xué)生表了。調(diào)試成功。雖然調(diào)試成功了,只是顯示學(xué)生表,我們可以加一些修飾來移動(dòng)表里的記錄,比如說上一記錄,下一記錄,首記錄,尾記錄等等。下面我們就開始來實(shí)現(xiàn)這些功能。首先在DataGridView控件下面添加4個(gè)Button按鈕控件,屬性框的text分別為首記錄,尾記錄,上一■記錄,卜一?記錄o(name)后面分別改為btnfirst,btnlast,btnprevious,btnnexto下面就來實(shí)現(xiàn)事件了,首先鼠標(biāo)選中學(xué)生管理系統(tǒng)窗體,雙擊進(jìn)入編輯頁面,在studentMIS的命名空間先添加如下代碼,值得注意的是不是添加在studentMIS的命名空間的里面任何一個(gè)類里。BindingSourcebs=newBindingSource();返回學(xué)生管理系統(tǒng)窗體,雙擊首記錄進(jìn)入代碼編輯區(qū),添加代碼bs.MoveFirst。;。雙擊尾記錄進(jìn)入代碼編輯區(qū),添加代碼bs.MoveLast();o雙擊上一記錄進(jìn)入代碼編輯區(qū),添加代碼bs.MovePrevious();a雙擊下一記錄進(jìn)入代碼編輯區(qū),添加代碼bs.MoveNext。;。下面我們來調(diào)試一下看看怎么樣。發(fā)現(xiàn)四個(gè)按鈕沒用,怎么回事??不急,這是因?yàn)槲覀冊(cè)陲@示學(xué)生表示是直接調(diào)用returnTable();的。雙擊dgv控件進(jìn)入編輯區(qū),用bs.DataSource=DAL.Dal.returnTable();dgv.DataSource=bs;來替換原來的gv.DataSource=DAL.Dal.returnTable()。下面我們?cè)賮碚{(diào)試一下,成功了。這回我們?cè)賮硖砑右粋€(gè)修飾,顯示當(dāng)前用戶。首先在學(xué)生管理系統(tǒng)窗體添加一個(gè)label控件(放在什么地方隨便你們),在屬性框中將text改為當(dāng)前用戶。再添加一個(gè)label控件放在其后,將屬性框中的text后面字母刪除o(name)后面改為Ibltip。顯示當(dāng)前用戶為靜態(tài)的,所以需要在studentMIS下創(chuàng)建一個(gè)類,右鍵一一》添加一一》新建項(xiàng)》類。名稱改為common。雙擊common,添加代碼publicstaticstringusername;0在classcommon前添加public,和上面一樣,把這些類設(shè)為公共類,這樣別的函數(shù)就可以訪問了。返回學(xué)生管理系統(tǒng)窗體,雙擊窗體添加代碼,Ibltip.Text=common.username;o調(diào)試一下看看結(jié)果怎么樣。【數(shù)據(jù)庫的增刪查改操作】1,前面我們實(shí)現(xiàn)了連接數(shù)據(jù)庫的登陸以及顯示數(shù)據(jù)庫中的表。這回我們來實(shí)現(xiàn)如何操作數(shù)據(jù)庫中的數(shù)據(jù)。首先我們雙擊formmain進(jìn)入學(xué)生管理系統(tǒng)窗體,在工具箱中的菜單和工具欄中點(diǎn)擊MenuStrip控件,添加到窗體的dgv控件的上面。我們可以在第一個(gè)標(biāo)題中輸入“系統(tǒng)”,在其下拉空格中輸入,注銷和退出。在第二個(gè)標(biāo)題中輸入“信息管理”,在其下拉空格中輸入四個(gè)菜單選項(xiàng),插入學(xué)生信息,刪除學(xué)生信息,修改學(xué)生信息,查詢學(xué)生信息。(大家還可以根據(jù)自己的需要來添加菜單項(xiàng),我們這里主要是實(shí)現(xiàn)增刪查改,所以我們就不添加很多了。)到這一步了我們就可以為增刪查改來添加窗體了,但是在這之前我要說一聲,實(shí)現(xiàn)增刪查改的過程中我們會(huì)不停的調(diào)試,如果每一次調(diào)試都需要輸入用戶名和密碼會(huì)很麻煩的,既然我們的登陸窗II己經(jīng)設(shè)計(jì)成功了,呢么接下來我們就不必每次太調(diào)試都運(yùn)行登陸窗II了,我們可以暫時(shí)跳過這個(gè)窗II,等到程序完全結(jié)束后我們?cè)賮磉\(yùn)行它。雙擊studentMISF面的Program.cso在代碼Application.Run(newformlogin());前添加〃,表示不運(yùn)行他了,在其卜面添加代碼Application.Run(newformmain());,便是直接運(yùn)行formmain這個(gè)窗11,也就是學(xué)生管理系統(tǒng)窗體。下面天使一下看看,沒有了登陸窗「I,直接進(jìn)入了學(xué)生管理窗口。前面我們說過MODEL層是聯(lián)系層與層之間聯(lián)系的,我們登陸的用戶名和密碼先傳到MODEL層中的Userlnformation.cs中然后才傳到DAL層中與數(shù)據(jù)庫做對(duì)比的。我們添加刪除等操作也是這樣的,比如我們添加學(xué)生信息,首先我們把信息傳到MODEL層中的Studentinformation中最后DAL層中的StudentDAO調(diào)用Studentinformation就把我們輸入的學(xué)生信息添加到數(shù)據(jù)庫了。那么首先我們要在MODEL層下面添加一個(gè)類名稱為Studentlnformation.cs。雙擊進(jìn)入編輯界面,在其前面添加public。類中添加如下代碼privatestringsno;privatestringsname;privatestringsex;privatestringbirthday;publicStudentlnformation(stringsno,stringsname,stringsex,stringbirthday){this.sno=sno;this.sname=sname;this.sex=sex;this.birthday=birthday;}publicstringgetSno()(returnsno;}publicstringgetSname()(returnsname;)publicstringgetSex()(returnsex;}publicstringgetBirthday(){returnbirthday;}代碼的作用是,如果給Studentinformation創(chuàng)建一個(gè)對(duì)象,這個(gè)對(duì)象可以調(diào)用這個(gè)類里的函數(shù)輸出參數(shù)。當(dāng)我們出入一條學(xué)生信息到數(shù)據(jù)庫時(shí)我們需要在dgv控件中顯示出來,那么我們就需要及時(shí)刷新數(shù)據(jù)庫顯示在dgv中。我們可■以學(xué)生管理系統(tǒng)窗體下創(chuàng)建一個(gè)刷新函數(shù)mybinding()o雙擊學(xué)生管理窗體進(jìn)入編輯頁面,將privatevoidformmain_Load(objectsender,EventArgse)中的代碼bs.DataSource=DALDal.returnTable();dgv.DataSource=bs;替換成mybinding();,在其上面輸入以下代碼publicvoidmybinding。//刷新網(wǎng)格{bs.DataSource=DAL.Dal.returnTable();dgv.DataSource=bs;}代碼的功能是在后面的程序中只要調(diào)用mybinding()就可以刷新表格了,而不需要從新打開數(shù)據(jù)庫才能顯示操作的數(shù)據(jù)。接下來我們要做的就是如何當(dāng)我們點(diǎn)擊插入學(xué)生信息按鈕時(shí)就會(huì)彈出一個(gè)輸入信息的對(duì)話框。下面我們就在studentMIS卜?面添加一個(gè)windows窗體,名稱改為formadd.cs,在屬性框中將(name)后面改為formadd。為其添加四個(gè)label控件分別命名為學(xué)號(hào),姓名,性別,出生口期。添加三TextBox控件分別放在學(xué)號(hào),姓名出生日期后面(name)后面分別改為txtboxsno,txtboxsname,txtboxsbirthday,選擇ComboBox控件放在性別后面,在屬性框中將(name)后面改為cmbboxsex,text后面改為男。再添加兩個(gè)Button按鈕,text后面改為錄入,取消,(name)后面改為btninsert,btncanceL雙擊插入學(xué)生信息,輸入以卜代碼if(newformadd().ShowDialog()==DialogResult.OK){mybindingO;)代碼的作用是顯示我們創(chuàng)建的添加學(xué)生信息窗體,目前還不執(zhí)行mybindingO;,也就是說不能刷新數(shù)據(jù)庫。為什么呢???當(dāng)我們錄入數(shù)據(jù)后點(diǎn)擊錄入按鈕,這樣添加信息窗體就會(huì)消失,這時(shí)我們開始調(diào)用mybinding();,但這我們還需要添加一行代碼,當(dāng)窗體消失時(shí)返回值為DialogResult.OK。雙擊formadd,點(diǎn)擊屬性框上面的閃電標(biāo)志,找到FormClosed,雙擊進(jìn)入編輯頁面,添加代碼this.DialogResult=DialogResult.OK;。這樣當(dāng)我們錄入好學(xué)生信息后就會(huì)自動(dòng)刷新網(wǎng)格了。到這我們應(yīng)該雙擊錄入寫代碼了,可■是大家別忘了,我們還沒有對(duì)DAL層進(jìn)行操作呢。我們只是創(chuàng)建了模板,而沒有真正實(shí)現(xiàn)插入數(shù)據(jù)到數(shù)據(jù)庫中。如果我們現(xiàn)在就調(diào)試錄入信息,我們的信息只能傳到MODEL層中的一個(gè)類中而不能被真正錄入到數(shù)據(jù)庫中,應(yīng)為DAL層中還沒有函數(shù)調(diào)用MODEL層中的學(xué)生信息。卜.面我們就開始來實(shí)現(xiàn)怎么出入傳來的數(shù)據(jù)到數(shù)據(jù)庫中。先在DAL層下面添加一個(gè)類名稱改為StudentDAO.cSo這是來實(shí)現(xiàn)插入數(shù)據(jù)到數(shù)據(jù)庫的。雙擊進(jìn)入編輯區(qū)在類classStudentDAO前加上public,然后在類中添加如下代碼publicstaticvoidinserStudent(Studentlnformationstudent)(stringstrsql="insertintostudentvalues(@sno,@sname,@sex,@birthday)”;SqlParameter[]para=newSqlParameter[]{newSqlParameter("@sno",SqlDbType.NVarChar),newSqlParameter("@sname",SqlDbType.NVarChar),newSqlParameter("@sex”,SqlDbType.NVarChar),newSqlParameter("@birthday",SqlDbType.NVarChar));inti=0;para[i++].Value=student.getSno();para[i++].Value=student.getSname();para[i++].Value=student.getSex();para[i++].Value=student.getBirthday();DaLExecuteNonQuery(strsql,para);}在最上面添加usingMODEL;usingSystem.Data.SqlClient;usingSystem.Data;o這是添加學(xué)生的代碼,刪除修改之類的代碼課依次向下添加。11,現(xiàn)在我們可以調(diào)試一下,發(fā)現(xiàn)顯示一個(gè)錯(cuò)誤,顯示'DAL.Dal”并不包含%xecuteNonQuery”的定義。這時(shí)我們需要在Dal.cs中添加一■個(gè)ExecuteNonQuery。雙擊Dal進(jìn)入編輯區(qū),添加代碼publicstaticvoidExecuteNonQuery(stringstrsql,paramsSqlParameter[]para)(stringconnstr=@Hserver=.;database=student;integratedsecurity=sspin;using(SqlConnectionconn=newSqlConnection(connstr))(conn.Open();using(SqlCommandcmd=conn.CreateCommand())(cmd.CommandText=strsql;cmd.Parameters.AddRange(para);cmd.ExecuteNonQuery();}}}一定要記住的是左大括號(hào)和右大括號(hào)個(gè)數(shù)要相等。現(xiàn)在我們調(diào)試一下發(fā)現(xiàn)成功了,接下來我們的任務(wù)就是編寫錄入事件的代碼了,雙擊錄入按鈕進(jìn)入編輯區(qū)。添加如下代碼if(txtboxsno.Text=="H){MessageBox.Show(”學(xué)號(hào)不能為空");txtboxsno.Focus();return;)if(txtboxsname.Text==,H,)MessageBox.Show("姓名不能為空");txtboxsname.Focus();return;)〃其實(shí),還需要進(jìn)一步判斷:輸入的學(xué)號(hào)與數(shù)據(jù)庫中的學(xué)號(hào)是否重復(fù)stringsno=txtboxsno.Text.Trim();stringsname=txtboxsname.Text.Trim();stringsex=cmbboxsex.Text.Trim();stringday=txtboxsbirthday.Text.Trim();Studentinformationstudent=newStudentlnformation(sno,sname,sex,day);DAL.StudentDAO.inserStudent(student);txtboxsno.Text=txtboxsname.Text=,n,;txtboxsbirthday.Text=IH,;txtboxsno.Focus();在最上面添加usingMODEL;,因?yàn)橐褂玫絊tudentinformation,添加后表示引用了MODELS下面來調(diào)試一下,隨便添加一個(gè)就可以了。下?面我們來實(shí)現(xiàn)刪除事件。首先在studentMIS卜面添加一個(gè)windows窗體,名稱改為formdelete.cso在窗體添加一個(gè)label控件,text改為請(qǐng)輸入要?jiǎng)h除學(xué)生的學(xué)號(hào)。添加一個(gè)TextBox控件,將(name)后面改為txtboxsno。再添加兩個(gè)Button控件,text分別為刪除當(dāng)前學(xué)生,清空數(shù)據(jù)庫。首先我們要早DAL中的studentDAO中添加刪除學(xué)生信息的代碼。雙擊studentDAO,cs進(jìn)入編輯區(qū),添加代碼publicstaticvoiddeleteStudent(stringstudentno)(stringstrsql="deletefromstudentwheresno=@noH;SqlParameter[]para=newSqlParameter[](newSqlParameter(,l@no,\SqlDbType.NVarChar)};para[O].Value=studentno;Dal.ExecuteNonQuery(strsql,para);}publicstaticvoidclear()(stringstrsql="deletefromstudent";SqlParameter[]para=newSqlParameter[]();Dal.ExecuteNonQuery(strsql,para);}14,雙擊菜單欄中的刪除學(xué)生信息,添加代碼if(newformdelete().ShowDialog()==DialogResult.OK){mybinding();}雙擊formdelete,點(diǎn)擊屬性框上而的閃電標(biāo)志,找到FormClosed,雙擊進(jìn)入編輯頁面,添加代碼this.DialogResult=DialogResult.OK;。這樣當(dāng)我們錄入好學(xué)生信息后就會(huì)自動(dòng)刷新網(wǎng)格了。,15,雙擊刪除當(dāng)前學(xué)生按鈕進(jìn)入編輯框,添加代碼if(txtboxsno.Text==""){MessageBox.Show("請(qǐng)輸入要?jiǎng)h除的學(xué)生的學(xué)號(hào):");txtboxsno.Focus();return;}〃第二步:還要進(jìn)一步判斷輸入的學(xué)號(hào)在數(shù)據(jù)庫中能否找到〃大家自行完成DAL.StudentDAO.deleteStudent(txtboxsno.Text.Trim());MessageBox.Show("刪除完畢");txtboxsno.Text=txtboxsno.Focus();雙擊清空數(shù)據(jù)庫,添加代碼DialogResultdr=MessageBox.Show("請(qǐng)確認(rèn)是否真的要清空學(xué)生數(shù)據(jù)庫警告",MessageBoxButtons.OKCancelzMessageBoxlcon.Information);if(dr==DialogResult.OK){DAL.StudentDAO.clear();}else{〃不清空,什么都不做}這樣我們的刪除窗I】也做好了,接下來我們要做的是查詢窗II。在studentMISb'面添加一個(gè)windows窗體名稱改為formserch.cs。在窗體中加入一個(gè)TextBox控件(name)后面改為textBoxsno。添加一?個(gè)Button控件,text改為確定,(name)后面改為stsercho添加一個(gè)label控件text改為學(xué)號(hào)。再添加一個(gè)dgv控件,(name)后面改為dgvL雙擊確定按鈕,進(jìn)入編輯頁面,添加如下代碼。if(textBoxsno.Text==""){MessageBox.Show("學(xué)號(hào)不能為空");textBoxsno.Focus();return;}else{bs.DataSource=DALStudentDAO.returnTablel(textBoxsno.Text.Trim());dgvl.DataSource=bs;)代碼的作用是在dgvl上顯示returnTablel里面的內(nèi)容,相信大家都可能猜到了returnTablel里的內(nèi)容是什么了,對(duì)就是我們用學(xué)號(hào)查出來的學(xué)生信息。卜.面我們就來創(chuàng)建returnTablel,該函數(shù)的功能是當(dāng)我們輸入的學(xué)號(hào)傳過來時(shí),在后臺(tái)數(shù)據(jù)庫中查找并返回信息。雙擊StudentDAO.cs進(jìn)入編輯框,添加如下代碼publicstaticDataTablereturnTablelfstringsno){DataTabletable=newDataTable();stringconnstr=@nserver=.;database=student;integratedsecurity=sspin;using(SqlConnectionconn=newSqlConnection(connstr)){conn.Open();using(SqlCommandcmd=conn.CreateCommand()){cmd.CommandText=nselect*fromstudentwheresno=@sno";cmd.Parameters.Add(newSqlParameter(,,sno,,/@sno));SqlDataAdapteradapter=newSqlDataAdapter(cmd);adapter.Fill(table);returntable;}}}現(xiàn)在大家來調(diào)試一下發(fā)現(xiàn),OK。查詢窗體做成了。還有最后一個(gè)窗體就是修改窗體,首先創(chuàng)建一個(gè)窗體,名為formmdf.cs。在窗體中添加四個(gè)label控件,屬性的text分別改為學(xué)號(hào),姓名,性別,出生日期。添加三個(gè)TextBox控件(name)分別為textBoxsno,textBoxsname,textBoxsbirthday。再添加一個(gè)ComboBox控件o(name)后而改為comboboxsex。再添加兩個(gè)Button按鈕,text改為確定,取消。雙擊確定按鈕進(jìn)入編輯框添加如下代碼stringsno=textBoxsno.Text.Trim();stringsname=textBoxsname.Text.Trim();stringsex=comboBoxsex.Text.Trim();stringsbirthday=textBoxsb
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 執(zhí)業(yè)藥師2024年筆試仿真試卷帶解析
- 2024初級(jí)社會(huì)工作者職業(yè)資格筆試高頻題庫帶解析
- 建筑水電暖安裝勞務(wù)分包協(xié)議3篇
- 廣告材料采購合同模板3篇
- 室內(nèi)設(shè)計(jì)師年度工作總結(jié)6篇
- 彩禮錢返還條件解析3篇
- 雙減工作落實(shí)情況匯報(bào)(30篇)
- 2025企業(yè)食堂員工年終工作總結(jié)(3篇)
- 外加劑材料采購招標(biāo)3篇
- 公司債權(quán)轉(zhuǎn)讓協(xié)議書3篇
- 鐵碳合金的相圖解讀
- 2023年復(fù)旦大學(xué)博士研究生入學(xué)考試專家推薦信模板
- 中小學(xué)教師資格證面試課件講義
- 全國(guó)初中英語優(yōu)質(zhì)課大賽一等獎(jiǎng)《八年級(jí)Unit 6An old man》說課課件
- 云南省飲用水生產(chǎn)企業(yè)名錄534家
- 湖北地區(qū)醫(yī)院詳細(xì)名單一覽表
- 麥肯錫入職培訓(xùn)第一課:讓職場(chǎng)新人一生受用的邏輯思考力新員工培訓(xùn)教材
- 蘇霍姆林斯基教育思想-PPT課件
- 金屬壓鑄機(jī)的plc控制
- 進(jìn)制轉(zhuǎn)換(課堂PPT)
評(píng)論
0/150
提交評(píng)論