c#学生课程管理系统.docx

上传人:b****3 文档编号:4793923 上传时间:2023-05-07 格式:DOCX 页数:41 大小:566.03KB
下载 相关 举报
c#学生课程管理系统.docx_第1页
第1页 / 共41页
c#学生课程管理系统.docx_第2页
第2页 / 共41页
c#学生课程管理系统.docx_第3页
第3页 / 共41页
c#学生课程管理系统.docx_第4页
第4页 / 共41页
c#学生课程管理系统.docx_第5页
第5页 / 共41页
c#学生课程管理系统.docx_第6页
第6页 / 共41页
c#学生课程管理系统.docx_第7页
第7页 / 共41页
c#学生课程管理系统.docx_第8页
第8页 / 共41页
c#学生课程管理系统.docx_第9页
第9页 / 共41页
c#学生课程管理系统.docx_第10页
第10页 / 共41页
c#学生课程管理系统.docx_第11页
第11页 / 共41页
c#学生课程管理系统.docx_第12页
第12页 / 共41页
c#学生课程管理系统.docx_第13页
第13页 / 共41页
c#学生课程管理系统.docx_第14页
第14页 / 共41页
c#学生课程管理系统.docx_第15页
第15页 / 共41页
c#学生课程管理系统.docx_第16页
第16页 / 共41页
c#学生课程管理系统.docx_第17页
第17页 / 共41页
c#学生课程管理系统.docx_第18页
第18页 / 共41页
c#学生课程管理系统.docx_第19页
第19页 / 共41页
c#学生课程管理系统.docx_第20页
第20页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c#学生课程管理系统.docx

《c#学生课程管理系统.docx》由会员分享,可在线阅读,更多相关《c#学生课程管理系统.docx(41页珍藏版)》请在冰点文库上搜索。

c#学生课程管理系统.docx

c#学生课程管理系统

《面向对象程序设计》综合作业报告

专业班级:

类19-7班姓名:

刘一一学号:

190702140509

时间:

2020.06.20

一、作业题目要求:

基于面向对象的程序开发思想,结合C#窗体应用程序开发步骤,采用ADO.NET访问数据库相应组件,构建完成一套学生成绩系统。

学生成绩系统是学校教务系统中不可缺少的一个子系统,它涉及到学生、课程等信息的结合。

本套学生成绩系统主要包括以下四个功能模块,具体功能要求如下:

1、登录模块

登录模块提供用户登录界面,用户输入正确的用户名和密码后,则可进入系统主窗口(即导航页面),从而可以选择进入相应的子系统。

2、学生信息模块

学生信息模块主要用户管理学生的基本信息,包括学号、姓名、性别、年龄和所在系,能对学生信息进行添加、删除和修改等操作。

3、课程信息模块

课程信息模块主要用于管理课程信息,包括课程号、课程名、学分和学时,能对课程信息进行添加、删除和修改等操作。

4、成绩信息模块

成绩信息模块主要用于管理学生成绩的录入及查询。

二、数据库设计:

本节根据前面对学生成绩系统的分析,介绍创建SqlServer数据库、数据表以及数据表之间的关系的方法和步骤。

2.1数据表结构

基于SQLServer2008数据库管理系统构建数据库,根据作业题目要求共设计实现了四张表,分别是系统用户表、学生信息表、课程信息表以及成绩信息表。

首先,我们登录数据库。

如图2-1

图2-1

其次,在数据库中建表,如图2-2

图2-2

1、系统用户表

系统用户表“tbl_User”用于存放系统用户的相关数据。

其结构如图2.3所示。

图2-4

2、学生信息表

学生信息表“tbl_Student”结构如图2-4所示。

图2-4

3、课程信息表

课程信息表“tbl_Course”结构如图2-5所示。

图2-5

4、成绩信息表

成绩信息表“tbl_SC”结构如2.4所示。

图2-6

三、公共类设计

考虑到系统的各个模块(登录、学生信息管理、课程信息管理、成绩信息管理)都需要访问数据库,因此最好的方法是编写一些访问数据库的方法,如返回数据集的公共查询方法,执行数据操作的公共方法,并把它们放在一个公共的类(DataBase)中,然后在各模块中调用这些方法来实现对数据库的访问。

同样,在用户登录时,可能需要记录一些关于用户的信息,例如用户名、用户权限等,因此也需要使用到一些公共的静态变量,把这些变量放置在一个名为“ClassShared”的类中。

3.1添加DataBase公共类

首先为系统添加一个名为“DataBase”的公共类,用于存放访问数据库的公共方法。

添加公共类的方法和步骤如下:

(1)选择【项目】->【添加类】菜单项,将弹出【添加新项】对话框,保留默认的选择,在“名称”文本框中输入“DataBase”,如图3-1所示。

图3-1

(2)单击【添加】按钮,则类“DataBase”已经被添加到项目中,并自动切换到该类的代码窗口,如图3-2所示。

图3-2

(3)从图1-2可以看到,“DataBase”类默认的访问修饰符为空,而该类应该是公共的,因此需要给其添加访问修饰符“Public”,如图1-3所示。

图3-3

3.2添加LoginUser公共类

类似于添加DataBase公共类那样,为项目添加一个名为“LoginUser”的公共类,用来存放一些公共的静态变量,以在窗体之间传递数据。

添加的“LoginUser”公共类代码窗口如图3-4所示。

图3-4“ClassShared”类的代码窗口

3.3编写公共方法

代码如图所示:

四、系统窗体设计及功能代码编写

4.1主窗体设计

1选择启动项[BOOKUITSXS]单击鼠标右键,[添加]——[添加新项],选择[windows窗体],在[新建项目]对话框的[名称]文本框中,输入项目名称“frmMain”,单击[确定]按钮进行项目文件保存路径的选择,也可以直接输入项目文件保存的路径,如下图4-1所示:

图4-1

2在主窗体中添加Label、GroupBox和Button等控件,并进行修改调整各个控件的大小位置,最终效果如下图4-2所示:

图4-2

 

4.2登录窗体设计

1、选择启动项[BOOKUITSXS]单击鼠标右键,[添加]——[添加新项],选择[windows窗体],在[新建项目]对话框的[名称]文本框中,输入项目名称“Login.cs”,单击[确定]按钮进行项目文件保存路径的选择,也可以直接输入项目文件保存的路径,如下图4-3:

图4-3

2、默认选中[为解决方案创建目录]。

3、在frmUserLogin.cs窗体上添加标签、文本框及按钮,并对窗体属性进行修改,最终效果如下图4-4:

图4-4

 

4.3学生信息管理窗体设计1、添加Windows窗体:

在BOOKUITSXS类库中添加一个新的Windows窗体frmStudent.cs。

2、设计窗体外观

在窗体添加控件,调整各个控件的大小和位置,设计窗体的属性;设计效果如图4-5

图4-5

4.4课程信息管理窗体设计

1、添加Windows窗体:

在BOOKUITSXS类库中添加一个新的Windows窗体frmCourse.cs。

2、设计窗体外观

在窗体添加控件,调整各个控件的大小和位置,设计窗体的属性;设计效果如图4-6所示。

 

图4-6

 

4.4成绩管理窗体设计

1、添加Windows窗体:

所用部分控件

在BOOKUITSXS类库中添加一个新的Windows窗体frmSC.cs。

2、设计窗体外观

在窗体添加控件,调整各个控件的大小和位置,设计窗体的属性;设计效果如图4-7所示

 

图4-7

4.5代码设计

4.5.1登录代码

namespace学生选课系统

{

publicpartialclassLogin:

Form

{

publicLogin()

{

InitializeComponent();

}

privatevoidbtnOK_Click(objectsender,EventArgse)

{

try

{

DataSetds=newDataSet();

DataBasedb=newDataBase();

stringsqlStr=string.Format("SelectuserPassword,userPurviewfromtbl_UserwhereUserName='{0}'",txtUserName.Text.Trim());

ds=db.GetDataFromDB(sqlStr);

if(ds.Tables[0].Rows[0].ItemArray[0].ToString()==txtUserPassword.Text.Trim())//判断输入的账户名密码是否相同

{

frmMainob_FrmMain=newfrmMain();

LoginUser._userName=this.txtUserName.Text.Trim();

LoginUser._userPassword=ds.Tables[0].Rows[0]["userPassword"].ToString();

LoginUser._userPurview=ds.Tables[0].Rows[0]["userPurview"].ToString();

ob_FrmMain.Show();

this.Hide();

}

Else//如果不相同,则提示错误

{

MessageBox.Show("用户名或密码错误,请重新输入!

");

txtUserName.Text="";

txtUserPassword.Text="";

txtUserName.Focus();

}

}

catch

{

MessageBox.Show("用户名或者密码错误","错误");

}

}

privatevoidbtnClose_Click(objectsender,EventArgse)

{

Application.Exit();

}

privatevoidtxtUserPassword_KeyDown(objectsender,KeyEventArgse)

{

if(e.KeyCode==Keys.Enter)

{

btnOK_Click(sender,e);

}

}

}

}

4.5.2主窗体代码

namespace学生选课系统

{

publicpartialclassLogin:

Form

{

publicLogin()

{

InitializeComponent();

}

privatevoidbtnOK_Click(objectsender,EventArgse)

{

try

{

DataSetds=newDataSet();

DataBasedb=newDataBase();

//stringsqlStr="SelectuserPassword,userPurviewfromtbl_UserwhereUserName='"+txtUserName.Text.Trim()+"'";

stringsqlStr=string.Format("SelectuserPassword,userPurviewfromtbl_UserwhereUserName='{0}'",txtUserName.Text.Trim());

ds=db.GetDataFromDB(sqlStr);

if(ds.Tables[0].Rows[0].ItemArray[0].ToString()==txtUserPassword.Text.Trim())

{

frmMainob_FrmMain=newfrmMain();

//ClassShared.userInfo[0]=txtUserName.Text.Trim();

//ClassShared.userInfo[1]=ds.Tables[0].Rows[0].ItemArray[1].ToString();

LoginUser._userName=this.txtUserName.Text.Trim();

LoginUser._userPassword=ds.Tables[0].Rows[0]["userPassword"].ToString();

LoginUser._userPurview=ds.Tables[0].Rows[0]["userPurview"].ToString();

ob_FrmMain.Show();

this.Hide();

}

else

{

MessageBox.Show("用户名或密码错误,请重新输入!

");

txtUserName.Text="";

txtUserPassword.Text="";

txtUserName.Focus();

}

}

catch

{

MessageBox.Show("用户名或者密码错误","错误");

}

}

privatevoidbtnClose_Click(objectsender,EventArgse)

{

Application.Exit();

}

privatevoidtxtUserPassword_KeyDown(objectsender,KeyEventArgse)

{

if(e.KeyCode==Keys.Enter)

{

btnOK_Click(sender,e);

}

}

}

}

4.5.3学生信息管理代码

namespace学生选课系统

{

publicpartialclassfrmStudent:

Form

{

publicfrmStudent()

{

InitializeComponent();

}

voidobjOpen()//设置标签为可输入

{

txtNo.Enabled=true;

txtName.Enabled=true;

txtAge.Enabled=true;

cmbSex.Enabled=true;

txtDept.Enabled=true;

txtNo.Focus();

}

voidobjClose()//设置标签为不可输入

{

txtNo.Enabled=false;

txtName.Enabled=false;

txtAge.Enabled=false;

cmbSex.Enabled=false;

txtDept.Enabled=false;

}

voidClear()//清除标签中输入的内容

{

txtNo.Text="";

txtName.Text="";

txtAge.Text="";

cmbSex.SelectedIndex=-1;

txtDept.Text="";

}

voidRefreshData()

{

stringcomStr;

DataBasedb=newDataBase();

DataSetds=newDataSet();

comStr="select*fromtbl_Student";

ds=db.GetDataFromDB(comStr);

if(ds==null)

{

MessageBox.Show("没有任何学生记录!

");

}

else

{

dgrdvStudent.DataSource=ds.Tables[0];

SetHeaderText();

}

}

voidSetHeaderText()//将DataGridView数据控件(dgrdvStudent)中显示的学生信息具有更好的表达效果,将各列的标题改成相应的中文。

因此编写SetHeaderText()方法,然后在修改dgrdvStudent控件的DataSource属性后立即调用此方法,已达到修改列标题的效果

{

dgrdvStudent.Columns[0].HeaderText="学号";

dgrdvStudent.Columns[1].HeaderText="姓名";

dgrdvStudent.Columns[2].HeaderText="性别";

dgrdvStudent.Columns[3].HeaderText="年龄";

dgrdvStudent.Columns[4].HeaderText="所在系";

}

privatevoidfrmStudent_Load(objectsender,EventArgse)

{

objClose();

RefreshData();

}

privatevoiddgrdvStudent_RowHeaderMouseClick(objectsender,DataGridViewCellMouseEventArgse)//选择不同的学生记录时,将学生信息显示在相应的文本框中

{

intn=this.dgrdvStudent.CurrentCell.RowIndex;

txtNo.Text=this.dgrdvStudent[0,n].Value.ToString();

txtName.Text=this.dgrdvStudent[1,n].Value.ToString();

cmbSex.SelectedItem=this.dgrdvStudent[2,n].Value.ToString();

txtAge.Text=this.dgrdvStudent[3,n].Value.ToString();

txtDept.Text=this.dgrdvStudent[4,n].Value.ToString();

}

privatevoidbtnAdd_Click(objectsender,EventArgse)//添加学生信息

{

try

{

if(btnAdd.Text.Trim()=="添加")

{

btnAdd.Text="确定";

objOpen();

Clear();

btnUpdate.Enabled=false;

btnDelete.Enabled=false;

btnClose.Enabled=false;

dgrdvStudent.Enabled=false;

}

else

{

btnAdd.Text="添加";

if(txtNo.Text.Trim()!

=null&&txtName.Text.Trim()!

=null)//向数据库中注入学生信息

{

stringsqlStr;

sqlStr="insertintotbl_Studentvalues('"+txtNo.Text.Trim()+"','"+txtName.Text.Trim()+"','"+cmbSex.Text.Trim()+"','"+txtAge.Text.Trim()+"','"+txtDept.Text.Trim()+"')";

DataBasedb=newDataBase();

boolb;

b=db.UpdateDB(sqlStr);

if(b==true)

{

if(MessageBox.Show("添加成功!

继续添加吗?

","添加",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.Yes)

{

Clear();

objOpen();

btnAdd.Text="确定";

}

else

{

objClose();

btnClose.Enabled=true;

btnDelete.Enabled=true;

btnUpdate.Enabled=true;

dgrdvStudent.Enabled=true;

}

}

else

{

return;

}

}

else

{

MessageBox.Show("学号与姓名不能为空!

");

txtNo.Focus();

btnAdd.Text="确定";

}

RefreshData();

txtNo.SelectAll();

}

}

catch(Exceptionex)

{

MessageBox.Show(ex.Message);

Clear();

objClose();

dgrdvStudent.Enabled=false;

}

}

privatevoidbtnUpdate_Click(objectsender,EventArgse)//修改学生信息

{

try

{

if(btnUpdate.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();

}

else

{

btnUpdate.Text="修改";

btnAdd.Enabled=true;

btnDelete.Enabled=true;

btnClose.Enabled=true;

objClose();

stringsqlStr;

sqlStr="Updatetbl_StudentsetSname='"+txtName.Text.Trim()+"',Ssex='"+cmbSex.Text.Trim()+"',Sage='"+txtAge.Text.Trim()+"',Sdept='"+txtDept.Text.Trim()+"'whereSno='"+txtNo.Text.Trim()+"'";

DataBasedb=newDataBase();

db.UpdateDB(sqlStr);

RefreshData();

}

}

catch(Exceptionex)

{

MessageBox.Show(ex.Message);

}

}

privatevoidbtnDelete_Click(objectsender,EventArgse)//删除学生信息

{

try

{

if(txtNo.Text.Trim()!

="")

{

if(MessageBox.Show("确定要删除学生吗?

","删除",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.Yes)

{

stringsqlStr;

sqlStr="deletefromtbl_StudentwhereSno='"+txtNo.Text.Trim()+"'";

DataBasedb=newDataBase();

db.UpdateDB(sqlStr);

RefreshData();

}

}

else

{

MessageBox.Show("没有可删除的记录!

","提示");

}

}

catch(Exceptionex)

{

MessageBox.Show(ex.Message);

}

}

privatevoidbtnClose_Click(objectsender,EventArgse)

{

this.Hide();

}

}

}

4.5.3课程信息管理代码

voidSetHeaderText()//将DataGridView数据控件(dgrdvStudent)中显

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2