c#学生课程管理系统_第1页
c#学生课程管理系统_第2页
c#学生课程管理系统_第3页
c#学生课程管理系统_第4页
c#学生课程管理系统_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序设计综合作业报告专业班级:类19-7班 姓名:刘学号:190702140509时间:2020.06.20一、作业题目要求:基于面向对象的程序开发思想,结合 C#W体应用程序开发步骤,采用 ADO.NETW问数据库相应组 件,构建完成一套学生成绩系统。 学生成绩系统是学校教务系统中不可缺少的一个子系统,它涉及到学生、课程等信息的结合。本套学生成绩系统主要包括以下四个功能模块,具体功能要求如下:1、登录模块登录模块提供用户登录界面,用户输入正确的用户名和密码后,则可进入系统主窗口(即导航页 面),从而可以选择进入相应的子系统。2、学生信息模块学生信息模块主要用户管理学生的基本信息,包括

2、学号、姓名、性别、年龄和所在系,能对学生信 息进行添加、删除和修改等操作。3、课程信息模块课程信息模块主要用于管理课程信息,包括课程号、课程名、学分和学时,能对课程信息进行添 加、删除和修改等操作。4、成绩信息模块成绩信息模块主要用于管理学生成绩的录入及查询。二、数据库设计:本节根据前面对学生成绩系统的分析,介绍创建SqlServer数据库、数据表以及数据表之间的关系的方法和步骤。2.1数据表结构基于SQLServer2008数据库管理系统构建数据库,根据作业题目要求共设计实现了四张表,分别是系统用户表、学生信息表、课程信息表以及成绩信息表。首先,我们登录数据库。如图2-1图2-1其次,在数据

3、库中建表,如图 2-2图2-21、系统用户表系统用户表 tbl_User ”用于存放系统用户的相关数据。其结构如图2.3所示。r列名数据类型允许null值节 userNameovardnar(l-yftvB-ZEJlflci.aau. IrftHTLCLWIhfl WltdL 叼juri& Sfxt-nu m-ijwkhiThrd hriLif. fmi.UU-ihig %/1工 由 dti;yj-anel*lLimLj-raiiE l-rltw-l 13143n. ai*uhFWU -中工* m.Civzri-r l -n awtaJmacrlLia Em . crcdc1: l :,口jD

4、b! 1j; r . I.#|工 l;91瓯 dit ui-mFttnxrnipiidu . tii JD*mdnWiff&r * n*m! .iipri iihF. *WgiCi,MdEfe2ai: rurr D*.uair idh倘哪则由看 dC4fEfiMtl31OCdl 0 :“美爱森J aH-Dh EjaiEiaiE.世) I 1, I,I t m *d:* n*北 mdl川时I.masod. xjnr:afodj】t;tfrilK4MX-l0,。英&E1 W*bI D+fir/&h b rrfoirrtO.ijdLi$H mNah Hrpc:rti!-g 台ifvllgH WCFW

5、undksrM.日二Workflow S t Vkul C* 4 v vshjj4i r*口口Ban姬如律遍如pmwor k .15正一住空.联亭.0-t=Wirnrt同布 不Viwal干VJP-应用哩学vai 二g|占EAM亨MX *AEP.NET Wb应引怛寻Viul七萃盟比Vkajl C.I*Vi-b-ial Jbilv-fflight fi,用在宁MbuR CSilwdFghf 丝与Viial Wird二后时出件充iiL电旄IVijal七璋室厂小斤欣丽怅/口可蛆力1VibajI C#SBC:trl+ E)fiR处诉sW C*用于副冠亘M Windows转除用L可互归 立钊L*fty5!

6、目君除让05一口叫上1uj.rwbofa、ma0.1 siu id ZOT SPrajpwckB唱:亍右主田翎0Wi理左右上口 堂HS国代行三理|碗晶 | |用ifa图4-32、默认选中为解决方案创建目录。3、在frmUserLogin.cs窗体上添加标签、文本框及按钮,并对窗体属性进行修改,最终效果如下图4-4:图4-4学生信息管理窗体设计1、添加Windows窗体:在BOOKUITSXS 类库中添加一个新的 Windows窗体frmStudent.cs。2、设计窗体外观在窗体添加控件,调整各个控件的大小和位置,设计窗体的属性;设计效果如图4-5图4-5课程信息管理窗体设计1、添加 Wind

7、ows窗体:在 BOOKUITSXS!库中添力口一个新的 Windows 窗体 frmCourse.cs 。2、设计窗体外观在窗体添加控件,调整各个控件的大小和位置,设计窗体的属性;设计效果如图4-6所示。图4-64.4成绩管理窗体设计1、添加 Windows窗体:所用部分控件- menuStripltoolStripl IstatusStripl在BOOKUITSX类库中添力口一个新的 Windows窗体frmSC.cs。2、设计窗体外观在窗体添加控件,调整各个控件的大小和位置,设计窗体的属性;设计效果如图4-7所示血接* ULI成徜录入全部演出吉田臼丝;早牛牛E 三香同侑:1001查询图4

8、-74.5代码设计登录代码namespace学生选课系统(public partial class Login : Form (public Login()InitializeComponent();private void btnOK Click( object sender, EventArgs e) ( try (DataSet ds = new DataSet ();DataBase db = new DataBase。;string sqlStr = string .Format( Select userPassword,userPurview from tbl User where

9、 UserName = 0, txtUserName.Text.Trim();ds = db.GetDataFromDB(sqlStr);if (ds.Tables0.Rows0.ItemArray0.ToString() = txtUserPassword.Text.Trim()/10判断输入的账户名密码是否相同(frmMain ob_FrmMain = new frmMain ();LoginUser ._userName = this .txtUserName.Text.Trim();LoginUser ._userPassword = ds.Tables0.Rows0 userPass

10、word .ToString();LoginUser ._userPurview = ds.Tables0.Rows0 userPurview .ToString();ob_FrmMain.Show();this .Hide();Else/如果不相同,则提示错误(MessageBoxShow(用户名或密码错误,请重新输入!); TOC o 1-5 h z txtUserName.Text =;txtUserPassword.Text =;txtUserName.Focus();Icatch(MessageBoxShow(用户名或者密码错误,错误);private void btnClose_C

11、lick( object sender, EventArgs e) Application .Exit();private void txtUserPassword KeyDown( object sender, KeyEventArgs e) if (e.KeyCode = Keys.Enter)(btnOK_Click(sender, e);_ I主窗体代码namespace学生选课系统(public partial class Login : Form(public Login()11(InitializeComponent();)private void btnOK_Click( ob

12、ject sender, EventArgs e)(try(DataSet ds = new DataSet ();DataBase db = new DataBase();/string sqlStr = Select userPassword,userPurview from tbl_User where UserName =+ txtUserName.Text.Trim() + ;string sqlStr = string .Format( Select userPassword,userPurview from tbl_User where UserName = 0, txtUser

13、Name.Text.Trim();ds = db.GetDataFromDB(sqlStr);if (ds.Tables0.Rows0.ItemArray0.ToString() = txtUserPassword.Text.Trim() frmMain ob_FrmMain = new frmMain ();/ClassShared.userInfo0 = txtUserName.Text.Trim();/ClassShared.userInfo1 = ds.Tables0.Rows0.ItemArray1.ToString();LoginUser .userName = this .txt

14、UserName.Text.Trim();LoginUser ._userPassword = ds.Tables0.Rows0 userPassword .ToString();LoginUser ._userPurview = ds.Tables0.Rows0 userPurview .ToString();ob FrmMain.Show();this .Hide();elseMessageBoxShow(用户名或密码错误,请重新输入!);txtUserName.Text =;txtUserPassword.Text =;txtUserName.Focus(); catchMessageB

15、oxShow(用户名或者密码错误,错误);private void btnClose Click(object sender, EventArgs e) Application .Exit();12private void txtUserPassword_KeyDown( object sender, KeyEventArgs e) (if (e.KeyCode = Keys.Enter)btnOK_Click(sender, e);学生信息管理代码;namespace学生选课系统 (public partial classfrmStudentForm(public frmStudent()I

16、nitializeComponent();void objOpen()/ i殳置标签为可输入(txtNo.Enabled =true ;txtName.Enabled =true;1txtAge.Enabled =true ;cmbSex.Enabled =true ;txtDept.Enabled =trueJtxtNo.Focus();r void objClose()/设置标签为不可输入txtNo.Enabled =false ;txtName.Enabled =false;txtAge.Enabled =false;cmbSex.Enabled =false;txtDept.Enabl

17、ed =false;void Clear()/ 清除标签中输入的内容L txtNo.Text =;txtName.Text =;txtAge.Text =;cmbSex.SelectedIndex=-1;txtDept.Text =void RefreshData() (string comStr;13DataBase db = new DataBase();DataSet ds = new DataSet ();comStr =select * from tbl_Student;ds = db.GetDataFromDB(comStr);if (ds = null )(MessageBoxS

18、how(没有任何学生记录!);) else(dgrdvStudent.DataSource = ds.Tables0;SetHeaderText();)void SetHeaderText()/将DataGridView数据控件(dgrdvStudent )中显示的学生信息具有更好的表达效果,将各列的标题改成相应的中文。因此编写SetHeaderText()方法,然后在修改dgrdvStudent控件的DataSource属性后立即调用此方法,已达到修改列标题的效果(dgrdvStudent.Columns0.HeaderText =学号;dgrdvStudent.Columns1.Heade

19、rText =姓名;dgrdvStudent.Columns2.HeaderText =性别;dgrdvStudent.Columns3.HeaderText =年龄;dgrdvStudent.Columns4.HeaderText =所在系;j)private void frmStudent_Load( object sender, EventArgs e) (objClose();RefreshData();)private void dgrdvStudent RowHeaderMouseClick( object sender, DataGridViewCellMouseEventArg

20、se) /选择不同的学生记录时,将学生信息显示在相应的文本框中int n = this .dgrdvStudent.CurrentCell.RowIndex;txtNo.Text =this .dgrdvStudent0, n.Value.ToString();txtName.Text =this .dgrdvStudent1, n.Value.ToString();cmbSex.SelectedItem =this .dgrdvStudent2, n.Value.ToString();txtAge.Text =this .dgrdvStudent3, n.Value.ToString();t

21、xtDept.Text =this .dgrdvStudent4, n.Value.ToString();)private void btnAdd Click( object sender, EventArgs e)/ 添加学生信息 (14tryif (btnAdd.Text.Trim()=添力口)btnAdd.Text =确定;objOpen(); Clear(); btnUpdate.Enabled =false ;btnDelete.Enabled =false ;btnClose.Enabled =false ;dgrdvStudent.Enabled =false ; else (

22、btnAdd.Text =添加;if (txtNo.Text.Trim() != null & txtName.Text.Trim() != null )/ 向数据库中注入学 生信息 ( string sqlStr; sqlStr =insert into tbl_Student values (+ txtNo.Text.Trim() +,+txtName.Text.Trim() +,+ cmbSex.Text.Trim() +,+ txtAge.Text.Trim() +,+1txtDept.Text.Trim() +);DataBase db = new DataBase(); bool

23、b; b = db.UpdateDB(sqlStr); if (b = true ) (if ( MessageBoxShow(添力口成功!继续添加吗?,添力口, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult .Yes) (Clear(); | objOpen(); btnAdd.Text =确定;objClose();btnClose.Enabled =true ;btnDelete.Enabled =true ;btnUpdate.Enabled =true ;dgrdvStudent.Enabled =t

24、rue ; else(return ;15)elseMessageBoxShow(学号与姓名不能为空!);txtNo.Focus();btnAdd.Text =确定;) RefreshData(); txtNo.SelectAll(); ) ) catch ( Exception ex) MessageBoxShow(ex.Message);Clear();objClose();dgrdvStudent.Enabled =false ;)private void btnUpdate_Click( object sender, EventArgs e)/ 修改学生信息 tryif (btnUpd

25、ate.Text.Trim()=修改)btnUpdate.Text =确定;btnAdd.Enabled =false ;btnDelete.Enabled =false ;btnClose.Enabled =false ;txtName.Enabled =true ;txtAge.Enabled =true ;cmbSex.Enabled =true ;txtDept.Enabled =true ;txtName.Focus();) elsebtnUpdate.Text =修改;btnAdd.Enabled =true ;btnDelete.Enabled =true ;btnClose.E

26、nabled =true ;objClose();string sqlStr;16sqlStr =Update tbl_Student set Sname= + txtName.Text.Trim() +,Ssex=+cmbSex.Text.Trim() +,Sage=+ txtAge.Text.Trim() +,Sdept=+ txtDept.Text.Trim() + whereSno= + txtNo.Text.Trim() +;DataBase db = new DataBase。;db.UpdateDB(sqlStr);RefreshData();catch ( Exception

27、ex)private void btnDelete_Click( object sender, EventArgs e)/ 删除学生信息tryif (txtNo.Text.Trim() !=)if ( MessageBoxShow(确定要删除学生吗?,删除,MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult .Yes)string sqlStr;sqlStr =delete from tbl Student where Sno=+ txtNo.Text.Trim() +DataBase db = new DataBa

28、se();db.UpdateDB(sqlStr);RefreshData();else -MessageBoxShow(没有可删除的记录!,提示);private void btnClose Click(object sender, EventArgs e)this .Hide();174.5.3课程信息管理代码void SetHeaderText()/ 将DataGridView数据控件(dgrdvStudent )中显示的学生信息具有更好的表达效果, 将各列的标题改成相应的中文。因此编写SetHeaderText()方法,然后在修改dgrdvStudent控件的DataSource属性后立

29、即调用此方法,已达到修改列标题的效果dgrdvCourse.Columns0.HeaderText =课程号;dgrdvCourse.Columns1.HeaderText =课程名;dgrdvCourse.Columns2.HeaderText =学分;dgrdvCourse.Columns3.HeaderText =学期;dgrdvCourse.Columns4.HeaderText =学时;)private void frmCourse_Load( object sender, EventArgs e) ObjClose();RefreshData();private void dgrd

30、vCourse_RowHeaderMouseClick( object sender, DataGridViewCellMouseEventArgse)/选择不同的课程记录时,将课程信息显示在相应的文本框中int n = this .dgrdvCourse.CurrentCell.RowIndex;txtNo.Text =this .dgrdvCourse0, n.Value.ToString();txtName.Text =this .dgrdvCourse1, n.Value.ToString();txtCredit.Text =this .dgrdvCourse2, n.Value.To

31、String();cmbSemester.SelectedItem =this .dgrdvCourse3, n.Value.ToString();txtPeriod.Text =this .dgrdvCourse4, n.Value.ToString();)private void btnAdd_Click( object sender, EventArgs e)/ 添加课程信息 tryif (btnAdd.Text.Trim()=添力口)btnAdd.Text =确定;ObjOpen();Clear();18btnUpdate.Enabled =false ;btnDelete.Enabl

32、ed =false ;btnClose.Enabled =false ;dgrdvCourse.Enabled =false ;)else(btnAdd.Text =添加;if (txtNo.Text.Trim() != null & txtName.Text.Trim() != null )(string sqlStr; TOC o 1-5 h z sqlStr =insert into tbl_Course values (+ txtNo.Text.Trim() +,+txtName.Text.Trim() +,+ txtCredit.Text.Trim() +,+ cmbSemester

33、.Text.Trim() +,+txtPeriod.Text.Trim() +);DataBase db = new DataBase(); bool b;b = db.UpdateDB(sqlStr); if (b = true )if ( MessageBoxShow(添力口成功!继续添加吗?,添加MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult .Yes) (Clear();ObjOpen();btnAdd.Text =确定;)else(ObjClose();btnClose.Enabled =true ;b

34、tnDelete.Enabled =true ;btnUpdate.Enabled =true ;dgrdvCourse.Enabled =true ;一 else( return ; elseMessageBoxShow(课程号与课程名不能为空!); txtNo.Focus();19btnAdd.Text =确定) RefreshData();|txtNo.SelectAll();)catch ( Exception ex)(MessageBoxShow(ex.Message);Clear();ObjClose();dgrdvCourse.Enabled =false)private voi

35、d btnUpdate_Click( object sender, EventArgs e)/ 修改课程信息 (try if (btnUpdate.Text.Trim()=修改)( btnUpdate.Text =确定;btnAdd.Enabled =false ;btnDelete.Enabled =false ;btnClose.Enabled =false ;txtName.Enabled =true ;txtPeriod.Enabled =true ;cmbSemester.Enabled =true ;txtCredit.Enabled =true ;txtName.Focus();

36、 一 else ( btnUpdate.Text =修改;btnAdd.Enabled =true ;btnDelete.Enabled =true ;btnClose.Enabled =true ;ObjClose(); string sqlStr; sqlStr =Update tbl Course set Cname= + txtName.Text.Trim()+,Credit= +txtCredit.Text.Trim() + ,Csemester= +cmbSemester.Text.Trim() + ,Cperiod= +txtPeriod.Text.Trim() +;DataBa

37、se db = new DataBase(); db.UpdateDB(sqlStr);|20RefreshData();)catch ( Exception ex)二MessageBoxShow(ex.Message);)private void btnDelete_Click( object sender, EventArgs e)/ 删除课程信息 tryif (txtNo.Text.Trim() !=)if ( MessageBoxShow(确定要删除课程吗?,删除,MessageBoxButtons .YesNo, MessageBoxIcon.Question) = DialogRe

38、sult .Yes)string sqlStr;sqlStr =delete from tbl_Course where Sno= + txtNo.Text.Trim() +DataBase db = new DataBase();db.UpdateDB(sqlStr); RefreshData();) else MessageBoxShow(没有可删除的记录!,提示); catch ( Exception ex)MessageBoxShow(ex.Message);private void btnClose Click( object sender, EventArgs e)this .Hi

39、de();匚b4.5.4成绩录入系统代码namespace学生选课系统21( public partial class frmSC : Form ( public frmSC() 丁(InitializeComponent(); ) string selectcondition;private void frmSC_Load( object sender, EventArgs e) (DataBase dbStudent = new DataBase();DataSet dataSetStudent = new DataSet ();#region /提取学生信息string sqlStr =

40、 select Sno,Sname from tbl Student;dataSetStudent = dbStudent.GetDataFromDB(sqlStr); if (dataSetStudent.Tables0.Rows.Count 0) ( cmbStudent.Items.Clear();/ 清空for ( int i = 0; i 0) (cmbCourse.Items.Clear(); for ( int i = 0; i dataSetCourse.Tables0.Rows.Count; i+)/课程号(4位)-课程名cmbCourse.Items.Add(dataSet

41、Course.Tables0.RowsiCno.ToString() +- +dataSetCourse.Tables0.RowsiCname.ToString(); 一 ) #endregion private void btnGradeIn Click(object sender, EventArgs e) / 成绩录入22(try(if (cmbSelcondition.SelectedIndex = -1 | txtSelText.Text =)/ 当标签为空时,录入失败(MessageBoxShow(录入成功);cmbCourse.SelectedIndex = -1;cmbStud

42、ent.SelectedIndex = -1;txtGrade.Text =;)Else/满足条件,将学生成绩插入数据库中string sqlStr = SELECTtbl SC.Sno,tbl Student.Sname,tbl SC.Cno,tbl Course.Cname,tbl SC.grade FROMtbl_Student,tbl_Course,tbl_SC where tbl_Course.Cno=tbl_SC.Cno and tbl_Student.Sno=tbl_SC.Sno and + selectcondition += + txtSelText.Text.Trim()

43、+;sqlStr =string .Format( SELECTtbl_SC.Sno,tbl_Student.Sname,tbl_SC.Cno,tbl_Course.Cname,tbl_SC.grade FROMtbl Student,tbl Course,tbl SC where tbl Course.Cno=tbl SC.Cno and tbl Student.Sno=tbl SC.Sno and0=1, selectcondition, this .txtSelText.Text.Trim();DataBase db = new DataBase。;DataSet dataSetSele

44、ct = new DataSet ();dataSetSelect = db.GetDataFromDB(sqlStr);if (dataSetSelect.Tables0.Rows.Count = 0) MessageBoxShow(没有符合条件的成绩记录!); else dgrdvResult.DataSource = dataSetSelect.Tables0;SetHeaderText();catch ( Exception ex)MessageBoxShow(ex.Message);private void btnSelect_Click( object sender, EventA

45、rgs e)/ 查询课程号或者学号 try23if (cmbSelcondition.SelectedIndex=-1|txtSelText.Text=)( MessageBoxShow(请选择查询条件并输入查询值!); 口 else(/ string sqlStr = SELECTtbl_SC.Sno,tbl_Student.Sname,tbl_SC.Cno,tbl_Course.Cname,tbl_SC.grade FROMtbl Student,tbl Course,tbl SC where tbl Course.Cno=tbl SC.Cnoand tbl Student.Sno=tbl

46、 SC.Snoand +selectcondition + = + txtSelText.Text.Trim() + ;string sqlStr = string .Format( SELECTtbl SC.Sno,tbl Student.Sname,tbl SC.Cno,tbl Course.Cname,tbl SC.grade FROM tbl_Student,tbl_Course,tbl_SC where tbl_Course.Cno=tbl_SC.Cno and tbl_Student.Sno=tbl_SC.Sno and 0=1, selectcondition, this .tx

47、tSelText.Text.Trim();DataBase db = new DataBase。; DataSet dataSetSelect = new DataSet (); dataSetSelect = db.GetDataFromDB(sqlStr);if (dataSetSelect.Tables0.Rows.Count = 0)MessageBoxShow(没有符合条件的成绩记录!);elsedgrdvResult.DataSource = dataSetSelect.Tables0;SetHeaderText();catch ( Exception ex)MessageBoxS

48、how(ex.Message); Ivoid SetHeaderText()/ 将DataGridView数据控件(dgrdvStudent )中显示的学生信息具有更好的表达 效果,将各列的标题改成相应的中文。因此编写SetHeaderText()方法,然后在修改dgrdvStudent控件的DataSource属性后立即调用此方法,已达到修改列标题的效果dgrdvResult.Columns0.HeaderText =学号;dgrdvResult.Columns1.HeaderText =姓名;dgrdvResult.Columns2.HeaderText =课程号;dgrdvResult.

49、Columns3.HeaderText =课程名;dgrdvResult.Columns4.HeaderText =成绩;24private void cmbSelcondition_SelectedIndexChanged( object sender, EventArgsswitch (cmbSelcondition.SelectedIndex) case 0: selectcondition =tbl_SC.Sno;break; case 1: selectcondition =tbl_SC.Cno;break; private void btnSelAll_Click( object sender, EventArgs e)/ ;将 sc表中数据全部显示 trystring sqlStr = string .Format( SELECTtbl SC.Sno,tbl Student.Sname,tbl SC.Cno,tbl Course.Cname,tbl SC.grade FROMtbl_Student,tbl_Course,tbl_SC where tbl_SC.Sno=tbl_Student.Sno and tbl_SC.Cno= tbl_Course.Cnoselectcondition, this .txtSelText.Text.Trim();

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论