选修课作业.docx
《选修课作业.docx》由会员分享,可在线阅读,更多相关《选修课作业.docx(21页珍藏版)》请在冰豆网上搜索。
选修课作业
.NET
程
序
设
计
选
修
课
实
验
报
告
系统名称:
学生成绩管理系统
姓名:
薛靖峰
学号:
1009034122
设计目的
本实验的目的是使学生能熟练掌握简单的简单Windows窗体应用程序的设计和.net的应用,希望通过本次课程设计锻炼学生使用C#语言解决实际问题的能力。
开发工具选择
本系统后台数据库采用MicrosoftSQLServer数据库,该数据库系统在安全性、准确性和运行速度方面有绝对的优势,并且处理数据量大,效率高;采用Microsoft公司的VisualStudio2008作为主要开发工具。
开发环境
系统开发平台:
MicrosoftVisualStudio2008
系统开发语言:
C#
数据库管理软件:
SQLServer2008
本报告的主要内容
本报告详细的介绍了学生信息管理系统的开发过程,主要涉及到的工作如下:
系统的需求分析、系统的总体设计、系统的概念设计、系统各模块的详细设计、系统运行与测试。
系统目标
(1)根据查询条件实现学生信息的查询
(2)学生选课信息查询、成绩信息的查询
(3)学生信息、课程信息、成绩信息的增加、删除、修改
(4)对基本信息完成增加、删除、修改时,需注意表与表之间的关联
功能需求分析
本系统的功能需求分析如下:
(1)学生信息查询:
学生可以根据学号、姓名、专业进行查询.
(2)学生信息管理:
主要是用于学生信息更新、插入、删除;
(3)学生成绩录入:
用于学生成绩管理,录入学生成绩,也可以更新;
性能需求分析
(1)登录、用户界面需求:
简洁、易懂、易用、友好的用户界面。
(2)安全保密性需求:
只有凭借用户名和密码登陆系统,才能进行信息的管理等。
设计概述
根据需求把整个系统分化成不同的模块,每个模块完成一个特定的子功能。
把这些模块结合起来组成一个整体。
逐一实现各个功能;
系统总体结构及功能模块划分
经过对系统的需求分析,学生信息管理系统主要划分为三个部分:
学生信息查询,学生信息管理,学生成绩录入三个功能模块。
如图3.2.1系统的总体结构。
学生信息查询模块
学生信息查询:
学生可以根据学号、姓名、专业进行查询。
如图3.2.2学生信息查询模块结构。
学生信息管理模块
学生信息管理:
主要是用于学生信息更新、插入、删除,如图3.2.3学生管
理模块结构。
系统数据库概念结构设计
根据对数据项与数据结构的分析,设计出能够满足系统需求的各种实体,及它们之间的关系,为后面的逻辑结构设计打下基础。
系统E-R图
系统E-R图可以将各个实体之间的关系显示出来,将各个实体间的属性依赖表示明白。
如图3.3.1系统E-R图结构。
系统数据库的设计
综合以上分析,要实现上面的所有功能模块,主要设计表如下:
安全保密设计
用户登录安全性
系统设计了登录界面,每个合法用户有用户名及一个密码,只有当用户输入正确的用户名及密码组合后才能够对学生信息进行操作。
详细设计
概述
详细设计阶段的根本目标是确定应该怎样具体的实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。
系统程序流程图
程序流程图又称为程序框图,它是历史悠久使用最广泛的描述软件设计的方法。
它可将整个程序的总体流程清楚明白的显示出来。
如图4.2.1系统总流程图结构。
系统主要功能模块简介
系统登录
用户凭借用户名及密码登录,成功登录后可对学生信息进行操作。
用户界面如图4.3.1用户登录界面所示。
在程序主界面(如图4.3.2程序主界面)学生可以根据学号、姓名进行查询。
学生也可以只用一种条件进行信息查询,也可以多个条件查询。
双击记录任一单元格可显示学生的更详细信息(如图4.3.3详细信息窗口)。
通过右击程序主界面的相应记录弹出的上下文菜单(如图4.3.4上下文菜单)可对当前选定学生信息进行详细信息查询(如图4.3.3详细信息窗口)、修改信息(如图4.3.5修改信息窗口)、删除信息(如图4.3.6删除信息提示)。
更新时如果输入的学号不存在,可选择是否添加学生信息。
通过程序主界面的新建信息记录可添加学生信息(如图4.3.7添加信息窗口)。
主要功能模块代码
公共类代码设计
namespaceMySql
{
publicclassmySql
publicStringconnectionString=@"SERVER=.\SQLEXPRESS;AttachDbFilename=D:
\学习\C#\课程设计\StuScoreManSystem\StuScoreManSystem\StuScoManSys.mdf;
IntegratedSecurity=True;ConnectTimeout=30;UserInstance=True;";
publicStringcommondText;
publicboolflag;//指示有条该条记录
publicSystem.Data.DataViewtable;
publicvoidrunSql()//执行查询、删除SQL语句
using(SqlConnectionconnection=newSqlConnection(connectionString))
connection.Open();
SqlCommandcmdQuery=newSqlCommand(commondText,connection);
SqlDataAdaptersda=newSqlDataAdapter(commondText,connection);
DataSetds=newDataSet();
sda.Fill(ds);
if(commondText.IndexOf("SELECT")>=0)
table=ds.Tables[0].DefaultView;
}
connection.Close();
publicboolgetFlag()//判断是否有该条记录
SqlDataReaderreader=cmdQuery.ExecuteReader();
if(reader.Read())flag=true;
elseflag=false;
reader.Close();
returnflag;
publicStringgetContent(Stringrequire,StringSNO)//获取视图表的的指定单元格内容
try
commondText="SELECT"+require+"FROMdetailWHERE学号="+SNO;
if(require=="up课程名称")
commondText="SELECT课程名称FROMdetailWHERE学号="+SNO;
if(require=="up成绩")
commondText="SELECT成绩FROMdetailWHERE学号="+SNO;
SqlDataAdaptersda=newSqlDataAdapter(commondText,connectionString);
Stringresult="";
if(require=="课程名称"||require=="成绩")
inti=newint();
for(i=0;i{result=result+ds.Tables[0].Rows[i][require].ToString()+"\n";}}elseresult=ds.Tables[0].Rows[0][require].ToString().Trim();returnresult;}catch{return"无";}}publicvoidupdate(){//添加、更新语句try{using(SqlConnectionconnection=newSqlConnection(connectionString)){connection.Open();SqlCommandcmdInsert=newSqlCommand(commondText,connection);cmdInsert.ExecuteNonQuery();connection.Close();}}catch(Exceptionex){MessageBox.Show(ex.ToString(),"提示");}}}}登录界面代码设计privatevoidlogin_Click(objectsender,EventArgse){//用户名及密码组合判断if(username.Text.ToString().Trim()!=""&&password.Text.ToString().Trim()!=""){mySqlsql=newmySql();mondText="SELECT*FROMuserdataWHEREUSERNAME='"+username.Text.ToString().Trim()+"'ANDPASSWORD='"+password.Text.ToString().Trim()+"'";try{booltemp=newbool();temp=sql.getFlag();if(temp){this.Visible=false;mainfacemain=newmainface(this);main.Show();}}catch(Exceptionex){MessageBox.Show(ex.ToString(),"提示");}}else{MessageBox.Show("请输入用户名和密码","提示");}}查询模块代码设计privatevoidbtQuery_Click(objectsender,EventArgse){mySqlquery=newmySql();if(sNInput.Text.Trim()==""&&sNoinput.Text.Trim()!="")mondText="SELECTSNOAS学号,SNAS姓名,MNAS专业名称,SEXAS性别,BIRDAYAS出生日期,TSAS总学分,COMAS备注FROMSWHERESNO="+sNoinput.Text.Trim()+"";if(sNInput.Text.Trim()!=""&&sNoinput.Text.Trim()=="")mondText="SELECTSNOAS学号,SNAS姓名,MNAS专业名称,SEXAS性别,BIRDAYAS出生日期,TSAS总学分,COMAS备注FROMSWHERESN='"+sNInput.Text.Trim()+"'";if(sNInput.Text.Trim()!=""&&sNoinput.Text.Trim()!="")mondText="SELECTSNOAS学号,SNAS姓名,MNAS专业名称,SEXAS性别,BIRDAYAS出生日期,TSAS总学分,COMAS备注FROMSWHERESN='"+sNInput.Text.Trim()+"'andSNO="+sNoinput.Text.Trim()+"";if(sNInput.Text.Trim()==""&&sNoinput.Text.Trim()=="")MessageBox.Show("您输入的信息为空,请重新输入!","错误信息");else{if(query.getFlag()){query.runSql();dataGridView1.DataSource=query.table;}elseMessageBox.Show("您查找的信息不存在","错误信息");}}添加模块代码设计privatevoidaddbtOK_Click(objectsender,EventArgse){if(addStuNo.Text.Trim()!=""&&addStuName.Text.Trim()!=""&&addStuMajor.Text.Trim()!=""){mySqlsql=newmySql();mondText="SELECTCNOFROMCWHERECN='"+listmn.Text.ToString().Trim()+"'";sql.runSql();Stringtemp=sql.table.Table.Rows[0]["CNO"].ToString();StringsexTemp=radioButton1.Checked?"男":"女";StringcomTemp;if(addStuCom.Text.ToString().Trim()=="")comTemp="";elsecomTemp=addStuCom.Text.ToString().Trim();StringbirTemp="";if(addStuBir.Text.ToString().Trim()=="")comTemp="";elsebirTemp=addStuCom.Text.ToString().Trim();mondText="INSERTINTOS(SNO,SN,MN,SEX,BIRDAY,COM)VALUES("+addStuNo.Text.ToString().Trim()+",'"+addStuName.Text.ToString().Trim()+"','"+addStuMajor.Text.ToString().Trim()+"','"+sexTemp+"','"+birTemp+"','"+comTemp+"');";sql.update();if(score.Text.ToString().Trim()!=""){mondText="INSERTINTOSC(SNO,CNO,SCORE)VALUES("+addStuNo.Text.ToString().Trim()+","+temp+","+score.Text.ToString().Trim()+");";sql.update();}this.Close();}else{MessageBox.Show("学号、姓名和专业名称都不可以为空!!!","错误!");}}privatevoidAddNew_Load(objectsender,EventArgse){//获取专业列表mySqlsql=newmySql();mondText="SELECTDISTINCTCNFROMC";SqlDataAdaptersda=newSqlDataAdapter(mondText,sql.connectionString);DataSetds=newDataSet();sda.Fill(ds);listmn.DataSource=ds.Tables[0].DefaultView;listmn.DisplayMember="CN";listmn.DisplayMember=listmn.DisplayMember.ToString().Trim();}更新模块代码设计privatevoidupbtOK_Click(objectsender,EventArgse){mySqlsql=newmySql();mondText="SELECT学号FROMdetailWHERE学号="+upStuNo.Text.ToString().Trim();boolflagtemp=sql.getFlag();if(!flagtemp)//如果表中无该条记录,提示是否进行添加新记录操作{if(MessageBox.Show("查无当前记录,无法进行更新操作!\n是否进行添加新记录的操作?","提示",MessageBoxButtons.OKCancel)==DialogResult.OK){if(upStuNo.Text.Trim()!=""&&upStuName.Text.Trim()!=""&&upStuMajor.Text.Trim()!=""){mySqlsqlme=newmySql();mondText="SELECTCNOFROMCWHERECN='"+listmn.Text.ToString().Trim()+"'";sqlme.runSql();Stringtemp=sqlme.table.Table.Rows[0]["CNO"].ToString();//课程号StringsexTemp=radioButton1.Checked?"男":"女";StringcomTemp;if(upStuCom.Text.ToString().Trim()=="")comTemp="";elsecomTemp=upStuCom.Text.ToString().Trim();StringbirTemp;if(upStuBir.Text.ToString().Trim()=="")birTemp="";elsebirTemp=upStuCom.Text.ToString().Trim();mondText="INSERTINTOS(SNO,SN,MN,SEX,BIRDAY,COM)VALUES("+upStuNo.Text.ToString().Trim()+",'"+upStuName.Text.ToString().Trim()+"','"+upStuMajor.Text.ToString().Trim()+"','"+sexTemp+"','"+birTemp+"','"+comTemp+"');";sqlme.update();if(upStuScore.Text.ToString().Trim()!=""){mondText="INSERTINTOSC(SNO,CNO,SCORE)VALUES("+upStuNo.Text.ToString().Trim()+","+temp+","+upStuScore.Text.ToString().Trim()+");";sqlme.update();}this.Close();}else{MessageBox.Show("学号、姓名和专业名称都不可以为空!!!","错误!");}}}else{if(upStuNo.Text.Trim()!=""&&upStuName.Text.Trim()!=""&&upStuMajor.Text.Trim()!=""){mondText="SELECTCNOFROMCWHERECN='"+listmn.Text.ToString().Trim()+"'";sql.runSql();Stringtemp=sql.table.Table.Rows[0]["CNO"].ToString();//获取课程号StringsexTemp=radioButton1.Checked?"男":"女";StringcomTemp;if(upStuCom.Text.ToString().Trim()=="")comTemp="";elsecomTemp=upStuCom.Text.ToString().Trim();StringbirTemp;if(upStuBir.Text.ToString().Trim()=="")birTemp="";elsebirTemp=upStuBir.Text.ToString().Trim();mondText="UPDATESSETSN='"+upStuName.Text.ToString().Trim()+"',MN='"+upStuMajor.Text.ToString().Trim()+"',SEX='"+sexTemp+"',BIRDAY='"+upStuBir.Text.ToString().Trim()+"',
result=result+ds.Tables[0].Rows[i][require].ToString()+"\n";
else
result=ds.Tables[0].Rows[0][require].ToString().Trim();
returnresult;
catch
return"无";
publicvoidupdate()
{//添加、更新语句
SqlCommandcmdInsert=newSqlCommand(commondText,connection);
cmdInsert.ExecuteNonQuery();
catch(Exceptionex)
MessageBox.Show(ex.ToString(),"提示");
登录界面代码设计
privatevoidlogin_Click(objectsender,EventArgse)
{//用户名及密码组合判断
if(username.Text.ToString().Trim()!
=""&&password.Text.ToString().Trim()!
="")
mySqlsql=newmySql();
mondText="SELECT*FROMuserdataWHEREUSERNAME='"+username.Text.ToString().Trim()+"'ANDPASSWORD='"+password.Text.ToString().Trim()+"'";
booltemp=newbool();
temp=sql.getFlag();
if(temp)
this.Visible=false;
mainfacemain=newmainface(this);
main.Show();
MessageBox.Show("请输入用户名和密码","提示");
查询模块代码设计
privatevoidbtQuery_Click(objectsender,EventArgse)
mySqlquery=newmySql();
if(sNInput.Text.Trim()==""&&sNoinput.Text.Trim()!
="")mondText="SELECTSNOAS学号,SNAS姓名,MNAS专业名称,SEXAS性别,BIRDAYAS出生日期,TSAS总学分,COMAS备注FROMSWHERESNO="+sNoinput.Text.Trim()+"";
if(sNInput.Text.Trim()!
=""&&sNoinput.Text.Trim()=="")mondText="SELECTSNOAS学号,SNAS姓名,MNAS专业名称,SEXAS性别,BIRDAYAS出生日期,TSAS总学分,COMAS备注FROMSWHERESN='"+sNInput.Text.Trim()+"'";
=""&&sNoinput.Text.Trim()!
="")mondText="SELECTSNOAS学号,SNAS姓名,MNAS专业名称,SEXAS性别,BIRDAYAS出生日期,TSAS总学分,COMAS备注FROMSWHERESN='"+sNInput.Text.Trim()+"'andSNO="+sNoinput.Text.Trim()+"";
if(sNInput.Text.Trim()==""&&sNoinput.Text.Trim()=="")MessageBox.Show("您输入的信息为空,请重新输入!
","错误信息");
if(query.getFlag())
query.runSql();
dataGridView1.DataSource=query.table;
elseMessageBox.Show("您查找的信息不存在","错误信息");
添加模块代码设计
privatevoidaddbtOK_Click(objectsender,EventArgse)
if(addStuNo.Text.Trim()!
=""&&addStuName.Text.Trim()!
=""&&addStuMajor.Text.Trim()!
mondText="SELECTCNOFROMCWHERECN='"+listmn.Text.ToString().Trim()+"'";
sql.runSql();
Stringtemp=sql.table.Table.Rows[0]["CNO"].ToString();
StringsexTemp=radioButton1.Checked?
"男":
"女";
StringcomTemp;
if(addStuCom.Text.ToString().Trim()=="")
comTemp="";
elsecomTemp=addStuCom.Text.ToString().Trim();
StringbirTemp="";
if(addStuBir.Text.ToString().Trim()=="")
elsebirTemp=addStuCom.Text.ToString().Trim();
mondText="INSERTINTOS(SNO,SN,MN,SEX,BIRDAY,COM)VALUES("
+addStuNo.Text.ToString().Trim()+",'"
+addStuName.Text.ToString().Trim()+"','"
+addStuMajor.Text.ToString().Trim()+"','"
+sexTemp+"','"
+birTemp+"','"
+comTemp+"');";
sql.update();
if(score.Text.ToString().Trim()!
=""){
mondText="INSERTINTOSC(SNO,CNO,SCORE)VALUES("+addStuNo.Text.ToString().Trim()
+","+temp+","+score.Text.ToString().Trim()+");";
this.Close();
MessageBox.Show("学号、姓名和专业名称都不可以为空!
!
","错误!
");
privatevoidAddNew_Load(objectsender,EventArgse)
{//获取专业列表
mondText="SELECTDISTINCTCNFROMC";
SqlDataAdaptersda=newSqlDataAdapter(mondText,sql.connectionString);
listmn.DataSource=ds.Tables[0].DefaultView;
listmn.DisplayMember="CN";
listmn.DisplayMember=listmn.DisplayMember.ToString().Trim();
更新模块代码设计
privatevoidupbtOK_Click(objectsender,EventArgse)
mondText="SELECT学号FROMdetailWHERE学号="+upStuNo.Text.ToString().Trim();
boolflagtemp=sql.getFlag();
if(!
flagtemp)//如果表中无该条记录,提示是否进行添加新记录操作
if(MessageBox.Show("查无当前记录,无法进行更新操作!
\n是否进行添加新记录的操作?
","提示",MessageBoxButtons.OKCancel)==DialogResult.OK)
if(upStuNo.Text.Trim()!
=""&&upStuName.Text.Trim()!
=""&&upStuMajor.Text.Trim()!
mySqlsqlme=newmySql();
sqlme.runSql();
Stringtemp=sqlme.table.Table.Rows[0]["CNO"].ToString();//课程号
if(upStuCom.Text.ToString().Trim()=="")
elsecomTemp=upStuCom.Text.ToString().Trim();
StringbirTemp;
if(upStuBir.Text.ToString().Trim()=="")
birTemp="";
elsebirTemp=upStuCom.Text.ToString().Trim();
+upStuNo.Text.ToString().Trim()+",'"
+upStuName.Text.ToString().Trim()+"','"
+upStuMajor.Text.ToString().Trim()+"','"
sqlme.update();
if(upStuScore.Text.ToString().Trim()!
mondText="INSERTINTOSC(SNO,CNO,SCORE)VALUES("+upStuNo.Text.ToString().Trim()
+","+temp+","+upStuScore.Text.ToString().Trim()+");";
Stringtemp=sql.table.Table.Rows[0]["CNO"].ToString();//获取课程号
elsebirTemp=upStuBir.Text.ToString().Trim();
mondText="UPDATESSETSN='"+upStuName.Text.ToString().Trim()+"',MN='"
+upStuMajor.Text.ToString().Trim()+"',SEX='"
+sexTemp+"',BIRDAY='"
+upStuBir.Text.ToString().Trim()+"',
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1