丰富“WinForms” 的一个别样项目(学生管理)
? ?? 一個(gè)別樣的WinForms項(xiàng)目,他并沒多么的新穎,但是它的用處確實(shí)有點(diǎn)多,或許會(huì)有你需要的地方;如果你對(duì)WinForms中那么多控件無(wú)法把握,又或者是你根本就不懂,那我覺得你應(yīng)該好好看看,如果一個(gè)人的人生命運(yùn)無(wú)法去選擇時(shí),那我覺得接受它將是沖刺命運(yùn)終點(diǎn)的最好動(dòng)力,一切的不公平都是你為了躲避困難而找的借口,年輕人就需要不平坦的人生道路,通過(guò)刻苦奮斗得來(lái)的果實(shí)永遠(yuǎn)是最甜、平坦的人生亦是最幸福的瞬間。
???? 那首先就是項(xiàng)目的框架分別是:登錄(FrmLogin )——>主界面(FrmMain)——>修改密碼(FrmUpdate)——>添加/修改/刪除學(xué)生基本信息等。
??? 框架搭好之后,我們了解一些框架內(nèi)的代碼吧!至于具體的一些控件呢!只能是自己慢慢去看看,有些注意點(diǎn)大家可以記下,在控件生成后要及時(shí)去修改控件的“Name”的屬性,如果夠專業(yè)就盡量取專業(yè)點(diǎn)名字,那樣對(duì)你可能會(huì)有幫助的。
??? 當(dāng)界面形成后,事件會(huì)是你填寫代碼的最大障礙,所以WinForms的幾個(gè)事件需要認(rèn)真記住:(單擊)Click,當(dāng)界面顯示在眼前就形成的(Load),窗體正在運(yùn)行的(FormClosing),(鼠標(biāo)在界面移動(dòng))mouseClick
??? 1.登錄界面(FrmLogin)
點(diǎn)擊登陸進(jìn)去的代碼:
string str = "Data source=.;Initial catalog=Myschool;Uid=sa";SqlConnection con = new SqlConnection(str);string sql = "select count(1) from student where studentname='"+txtUserName.Text+"' and Loginpwd='"+txtPwd.Text+"'";SqlCommand cmd = new SqlCommand(sql,con);try{con.Open();int count=Convert.ToInt32(cmd.ExecuteScalar());if (count>0){//隱藏原界面this.Hide();//跳轉(zhuǎn)至主界面FormMain frm = new FormMain();Tool.pwd = txtPwd.Text;frm.Show();}}catch (Exception){MessageBox.Show("出現(xiàn)異常");}finally {con.Close();}2.跳轉(zhuǎn)主界面(FrmMain)
菜單控件,工具控件、右鍵(contextMenuStrip)控件,ListView控件、視圖等
其中有ListView五大視圖:
? 1.大圖標(biāo)(LargeIcon)
? 2.小圖標(biāo)(SmallIcon)
? 3.列表(List)
? 4.詳細(xì)信息(Detail)
? 5.平鋪(Tile)
?生成上方主界面ListView代碼:
private void btnBig_Click(object sender, EventArgs e){//設(shè)置listview的屬性view為大圖標(biāo)lvlist.View = View.LargeIcon;}private void btnSmall_Click(object sender, EventArgs e){//設(shè)置listview的屬性view為小圖標(biāo)lvlist.View = View.SmallIcon;}private void btnTile_Click(object sender, EventArgs e){//設(shè)置listview的屬性view為平鋪lvlist.View = View.Tile;}private void btnList_Click(object sender, EventArgs e){//設(shè)置listview的屬性view為列表lvlist.View = View.List;}private void btnDetails_Click(object sender, EventArgs e){//設(shè)置listview的屬性view為詳細(xì)信息lvlist.View = View.Details;}跳轉(zhuǎn)至其它的各個(gè)功能的窗體:
private void TsmiUpdate_Click(object sender, EventArgs e){//修改密碼FrmUpdate frm = new FrmUpdate();frm.Show();}private void lvlist_SelectedIndexChanged(object sender, EventArgs e){}private void StuName_Click(object sender, EventArgs e){//查找this.Hide();FrmColor frm = new FrmColor();frm.Show();}3.修改密碼(FrmUpdate)
判斷密碼是否為空,修改密碼是否成功
private void btnupdate_Click(object sender, EventArgs e){string name = string.Empty;if (txtoldpwd.Text==name){DialogResult result=MessageBox.Show("原密碼為空","通知",MessageBoxButtons.YesNo,MessageBoxIcon.Information);if (result==DialogResult.No){this.Close();}}if (txtnewpwd.Text == name){DialogResult result = MessageBox.Show("新密碼密碼為空", "通知", MessageBoxButtons.YesNo, MessageBoxIcon.Information);if (result == DialogResult.No){this.Close();}}if(txtOK.Text == name){DialogResult result = MessageBox.Show("確認(rèn)密碼為空", "通知", MessageBoxButtons.YesNo, MessageBoxIcon.Information);if (result == DialogResult.No){this.Close();}}if (txtoldpwd.Text != name && txtnewpwd.Text != name && txtOK.Text != name){string str = "Data source=.;Initial catalog=Myschool;Uid=sa";SqlConnection conn = new SqlConnection(str);string sql = "update student set Loginpwd='" + txtnewpwd.Text + "' where Loginpwd='" + txtoldpwd.Text + "'";SqlCommand cmd = new SqlCommand(sql, conn);try{conn.Open();if (txtOK.Text.Equals(txtnewpwd.Text)){int count = cmd.ExecuteNonQuery();if (count > 0){MessageBox.Show("修改成功");}} }catch (Exception){MessageBox.Show("異常!"); ;}finally{conn.Close();}}}private void FrmUpdate_Load(object sender, EventArgs e){txtoldpwd.Text = Tool.pwd;}private void btncancel_Click(object sender, EventArgs e){this.Close();}4.查找學(xué)生信息(FrmReseach)
從查找可以跳轉(zhuǎn)到添加/修改/刪除窗體
private void btnselect_Click(object sender, EventArgs e){UpdateSelect();}//按學(xué)生編號(hào)查找的方法public void LoadDataFromDBToListView(string sql){string str = "data source=.;initial catalog=MySchool;uid=sa";SqlConnection con = new SqlConnection(str);SqlCommand cmd = new SqlCommand(sql, con);try{con.Open();SqlDataReader dr = cmd.ExecuteReader();if (dr != null){if (dr.HasRows){while (dr.Read()){//每從DB中讀取出一條數(shù)據(jù),需要形成一個(gè)ListViewItem對(duì)象,代表的是ListView中的一行int stuNo = Convert.ToInt32(dr["studentno"]);//第二列 學(xué)生名字string stuName = Convert.ToString(dr["studentname"]);//第三列 性別string stugender = Convert.ToString(dr["gender"]);//第四列 年級(jí)名稱string gname = Convert.ToString(dr["gradename"]);//第五列 電話string phone = Convert.ToString(dr["phone"]);//第六列 地址string address = Convert.ToString(dr["address"]);//第七列 郵箱string email = Convert.ToString(dr["email"]);//第八列 出生日期string birthday = Convert.ToString(dr["birthday"]);ListViewItem lvItem = new ListViewItem(stuNo.ToString());lvItem.SubItems.Add(stuName);lvItem.SubItems.Add(stugender);lvItem.SubItems.Add(gname);lvItem.SubItems.Add(phone);lvItem.SubItems.Add(address);lvItem.SubItems.Add(email);lvItem.SubItems.Add(birthday);//讓lvItem和ListView關(guān)聯(lián) lvlist.Items.Add(lvItem);lvlist.FullRowSelect = true;lvlist.ContextMenuStrip = ctmslist;}dr.Close();}}}catch (Exception){MessageBox.Show("異常!"); ;}finally{con.Close();}}private void listView1_SelectedIndexChanged(object sender, EventArgs e){string sql = @"select Studentno,Studentname,Gender,gradename,phone,address,email,birthday from student,gradewhere student.gradeid=grade.gradeid";LoadDataFromDBToListView(sql);}public void UpdateSelect(){lvlist.Items.Clear();string sql = @"select Studentno,Studentname,Gender,gradename,phone,address,email,birthday from student,gradewhere student.gradeid=grade.gradeid and studentname like '%" + txtname.Text + "%' ";LoadDataFromDBToListView(sql);}private void TsStudentInfo_Click(object sender, EventArgs e){int stuno=Convert.ToInt32(lvlist.SelectedItems[0].Text);FrmEditStu frm = new FrmEditStu();frm.stuno = stuno;frm.frmselect = this;frm.Show();}private void FrmColor_FormClosing(object sender, FormClosingEventArgs e){Application.Exit();}private void 刪除學(xué)生信息ToolStripMenuItem_Click(object sender, EventArgs e){int sno = Convert.ToInt32(lvlist.SelectedItems[0].Text);FrmEditStu frm = new FrmEditStu();frm.stuno = sno;frm.frmselect = this;frm.Show();}
5.添加學(xué)生信息(FrmEditStu)
修改學(xué)生信息:
?
刪除學(xué)生信息:
?
?
添加到數(shù)據(jù)庫(kù):
private void btnSave_Click(object sender, EventArgs e){//接收到的學(xué)號(hào)//判斷學(xué)號(hào)是否為空來(lái)選擇sql語(yǔ)句//判斷是否要?jiǎng)h除信息if (sno!=0){DialogResult result=MessageBox.Show("是否刪除?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Error);if (result==DialogResult.Yes){//刪除this.Hide();ChangDelete();}}if (stuno!=0){//修改this.Hide();GetUpdate();} else{//新增this.Hide();GetSave();} } //判斷stuno是否有值來(lái)修改select語(yǔ)句//新增public void GetSave(){string pwd = txtpwd.Text;//密碼string pwdTrue = txtPwdTrue.Text;//確認(rèn)密碼string name = txtStuName.Text;//學(xué)生名string stuGender = string.Empty;//取單選列表if (rbtnGenderTure.Checked){stuGender = "1";}else{stuGender = "0";}//給下拉框取值int gid = GetIdByName();string phone = txtPhone.Text;//電話string address = txtAddress.Text;//地址DateTime dt = dtBirthday.Value;//日期string stuEmail = txtEmail.Text;//郵箱//StudentNo, LoginPwd, StudentName, Gender, GradeId, Phone, Address, Birthday, Emailstring sql = "insert into student values('" + pwd + "','" + name + "','" + stuGender + "'," + gid + ",'" + phone + "','" + address + "','" + dt + "','" + stuEmail + "')";string str = "Data source=.;initial catalog=MySchool;uid=sa";SqlConnection con = new SqlConnection(str);SqlCommand cmd = new SqlCommand(sql, con);con.Open();if (pwd.Equals(pwdTrue)){int count = cmd.ExecuteNonQuery();if (count > 0){frmselect.UpdateSelect();MessageBox.Show("成功!");}con.Close();}else{MessageBox.Show("前后密碼不匹配");} }//修改public void GetUpdate(){ string name = txtStuName.Text;//學(xué)生名string stuGender = string.Empty;//取單選列表if (rbtnGenderTure.Checked){stuGender = "1";}else{stuGender = "0";}//給下拉框取值int gid = GetIdByName();string phone = txtPhone.Text;//電話string address = txtAddress.Text;//地址DateTime dt = dtBirthday.Value;//日期string stuEmail = txtEmail.Text;//郵箱//StudentNo, LoginPwd, StudentName, Gender, GradeId, Phone, Address, Birthday, Emailstring sql = @"update student set studentname='" + name +"',gender='" + stuGender + "',gradeid='" + gid + "',phone='" +phone + "',address='"+address+"',birthday='"+dt+"',email='"+stuEmail+"' where studentno="+txtStuNo.Text+""; string str = "Data source=.;initial catalog=MySchool;uid=sa";SqlConnection con = new SqlConnection(str);SqlCommand cmd = new SqlCommand(sql, con);con.Open(); int count = cmd.ExecuteNonQuery();con.Close();if (count > 0){frmselect.UpdateSelect();MessageBox.Show("成功!");} }//刪除public void ChangDelete(){string pwd = txtpwd.Text;//密碼string pwdTrue = txtPwdTrue.Text;//確認(rèn)密碼string name = txtStuName.Text;//學(xué)生名string stuGender = string.Empty;//取單選列表if (rbtnGenderTure.Checked){stuGender = "1";}else{stuGender = "0";}//給下拉框取值int gid = GetIdByName();string phone = txtPhone.Text;//電話string address = txtAddress.Text;//地址DateTime dt = dtBirthday.Value;//日期string stuEmail = txtEmail.Text;//郵箱//StudentNo, LoginPwd, StudentName, Gender, GradeId, Phone, Address, Birthday, Emailstring sql = @"delete from student where studentno='"+txtStuNo.Text+"' ";string str = "Data source=.;initial catalog=MySchool;uid=sa";SqlConnection con = new SqlConnection(str);SqlCommand cmd = new SqlCommand(sql, con);con.Open();if (pwd.Equals(pwdTrue)){int count = cmd.ExecuteNonQuery();if (count > 0){frmselect.UpdateSelect();MessageBox.Show("成功!");}}else{MessageBox.Show("前后密碼不匹配");}con.Close();}//根據(jù)對(duì)應(yīng)條件查詢班級(jí)idpublic int GetIdByName(){string str = "Data source=.;initial catalog=MySchool;uid=sa";SqlConnection con = new SqlConnection(str);string sql = "select gradeid from grade where gradename='"+cmbGrade.Text+"'";SqlCommand cmd = new SqlCommand(sql, con);int gid = 0;try{con.Open();gid =Convert.ToInt32(cmd.ExecuteScalar());}catch (Exception){MessageBox.Show("網(wǎng)絡(luò)異常");}finally{con.Close();}return gid;}//根據(jù)對(duì)應(yīng)條件查詢班級(jí)gnamepublic string GetNameById(int gid){string str = "Data source=.;initial catalog=MySchool;uid=sa";SqlConnection con = new SqlConnection(str);string sql = "select gradename from grade where gradeid=" + gid + "";SqlCommand cmd = new SqlCommand(sql, con);string name = "";try{con.Open();name =cmd.ExecuteScalar().ToString();}catch (Exception){MessageBox.Show("網(wǎng)絡(luò)異常");}finally{con.Close();}return name;}//加載年級(jí)下拉框public void LoadGrade(){//拿到所有年級(jí)名稱string str = "Data source=.;Initial catalog=MySchool;uid=sa";SqlConnection con = new SqlConnection(str);string sql = "select gradename from grade";SqlCommand cmd = new SqlCommand(sql, con);try{con.Open();SqlDataReader dr = cmd.ExecuteReader();if (dr != null){if (dr.HasRows){while (dr.Read()){string gname = dr["gradename"].ToString();//每讀到一個(gè)年級(jí)名稱,我就將"S1",添加到下拉框 cmbGrade.Items.Add(gname);}}}}catch (Exception ex){MessageBox.Show("網(wǎng)絡(luò)異常");}finally{con.Close();}}//根據(jù)學(xué)號(hào)加載其他信息public void LoadStuInfoByStuNo(){string str = "Data source=.;Initial catalog=MySchool;uid=sa";SqlConnection con = new SqlConnection(str);string sql = "select * from student where studentno="+stuno+"";SqlCommand cmd = new SqlCommand(sql, con);try{con.Open();SqlDataReader dr = cmd.ExecuteReader();txtStuNo.Text = stuno.ToString();if (dr!=null){if (dr.HasRows){while (dr.Read()){string stuname = dr["studentname"].ToString();txtStuName.Text = stuname;//姓名string stuGender = dr["gender"].ToString();if (stuGender == "1"){rbtnGenderTure.Checked = true;}else if (stuGender == "0"){rbtnGender.Checked = true;}//性別int gid = Convert.ToInt32(dr["gradeid"]);string gname = GetNameById(gid);cmbGrade.Text = gname;//年級(jí)string stuphone = dr["phone"].ToString();txtPhone.Text = stuphone;//電話string stuaddress = dr["address"].ToString();txtAddress.Text = stuaddress;//地址string stuemail = dr["email"].ToString();txtEmail.Text = stuemail;//郵箱DateTime stubirthday = Convert.ToDateTime(dr["birthday"]);dtBirthday.Value = stubirthday;//出生日期 }}}}catch (Exception){MessageBox.Show("異常!!"); ;}finally {}}private void FrmEditStu_Load(object sender, EventArgs e){ //判斷學(xué)號(hào)是否為空來(lái)選擇sql語(yǔ)句if ( sno != 0){DialogResult result = MessageBox.Show("是否刪除?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Error);if (result == DialogResult.Yes){this.Text = "刪除學(xué)生信息";btnSave.Text = "刪除";LoadStuInfoByStuNo();}}if(stuno!=0){this.Text = "修改學(xué)生信息";btnSave.Text = "修改";LoadStuInfoByStuNo();} else{btnSave.Text = "保存";LoadGrade();}}private void FrmEditStu_FormClosing(object sender, FormClosingEventArgs e){Application.Exit();}private void btnClear_Click(object sender, EventArgs e){this.Close();}6.動(dòng)態(tài)圖片時(shí)鐘
計(jì)時(shí)控件:
通過(guò)時(shí)間來(lái)讓幾張圖連接形成動(dòng)態(tài)的計(jì)時(shí):
private int index = 0;private void timers_Tick(object sender, EventArgs e){if (index<imglist.Images.Count-1){index++;}else{index = 0;}piclist.Image = imglist.Images[index];}????? WinForms很重要,雖說(shuō)難度不是很大,但它的內(nèi)容太多,之間的融合又太復(fù)雜,所以難易與否只有自己知道,但只要認(rèn)真聽課、刻苦學(xué)習(xí),我想時(shí)間會(huì)給我們大家最好的結(jié)果,所以我希望大家能指出我的一些不足之處,相信我們的互幫互助能讓我們都變得更好。
轉(zhuǎn)載于:https://www.cnblogs.com/bdpsc/p/5001955.html
總結(jié)
以上是生活随笔為你收集整理的丰富“WinForms” 的一个别样项目(学生管理)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: HDU 3486 Interviewe
- 下一篇: 写在前面-2015.11.30