C#学生成绩管理系统课程设计报告.docx

上传人:b****8 文档编号:8837137 上传时间:2023-02-02 格式:DOCX 页数:26 大小:358.06KB
下载 相关 举报
C#学生成绩管理系统课程设计报告.docx_第1页
第1页 / 共26页
C#学生成绩管理系统课程设计报告.docx_第2页
第2页 / 共26页
C#学生成绩管理系统课程设计报告.docx_第3页
第3页 / 共26页
C#学生成绩管理系统课程设计报告.docx_第4页
第4页 / 共26页
C#学生成绩管理系统课程设计报告.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

C#学生成绩管理系统课程设计报告.docx

《C#学生成绩管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《C#学生成绩管理系统课程设计报告.docx(26页珍藏版)》请在冰豆网上搜索。

C#学生成绩管理系统课程设计报告.docx

C#学生成绩管理系统课程设计报告

 

C#课程设计报告

 

2015年1月1日

 

目录

第一章绪 论1

1.1设计目的1

1.2开发工具选择1

1.3开发环境1

1.4本报告的主要内容1

第二章需求分析2

2.1系统需求简介2

2.1.1系统目标2

2.1.2功能需求分析2

2.1.3性能需求分析2

第三章总体设计3

3.1设计概述3

3.2系统总体结构及功能模块划分3

3.2.1学生信息查询模块3

3.2.2学生信息管理模块4

3.3系统数据库概念结构设计4

3.3.1系统E-R图4

3.3.2系统数据库的设计5

3.4安全保密设计6

3.4.1用户登录安全性6

第四章详细设计7

4.1概述7

4.2系统程序流程图7

4.3系统主要功能模块简介8

4.3.1系统登录8

4.3.2学生信息查询模块8

4.3.3学生信息管理模块9

第五章主要功能模块代码11

5.1公共类代码设计11

5.2登录界面代码设计13

5.3查询模块代码设计14

5.4添加模块代码设计15

5.5更新模块代码设计16

5.6删除模块代码设计19

第六章课程设计心得20

 

第一章绪 论

1.1设计目的

本课程设计的目的是使学生能熟练掌握简单的简单Windows窗体应用程序的设计和ADO.net的应用,希望通过本次课程设计锻炼学生使用C#语言解决实际问题的能力。

1.2开发工具选择

本系统后台数据库采用MicrosoftSQLServer数据库,该数据库系统在安全性、准确性和运行速度方面有绝对的优势,并且处理数据量大,效率高;前台采用Microsoft公司的VisualStudio2008作为主要开发工具,可与SQLServer2005数据库无缝链接。

1.3开发环境

系统开发平台:

MicrosoftVisualStudio2005

系统开发语言:

C#

数据库管理软件:

SQLServer2005

1.4本报告的主要内容

本报告详细的介绍了学生信息管理系统的开发过程,主要涉及到的工作如下:

系统的需求分析、系统的总体设计、系统的概念设计、系统各模块的详细设计、系统运行与测试。

第二章需求分析

2.1系统需求简介

2.1.1系统目标

(1)根据查询条件实现学生信息的查询

(2)学生选课信息查询、成绩信息的查询

(3)学生信息、课程信息、成绩信息的增加、删除、修改

(4)对基本信息完成增加、删除、修改时,需注意表与表之间的关联

2.1.2功能需求分析

本系统的功能需求分析如下:

(1)学生信息查询:

学生可以根据学号、姓名、专业进行查询.

(2)学生信息管理:

主要是用于学生信息更新、插入、删除;

(3)学生成绩录入:

用于学生成绩管理,录入学生成绩,也可以更新;

2.1.3性能需求分析

(1)登录、用户界面需求:

简洁、易懂、易用、友好的用户界面。

(2)安全保密性需求:

只有凭借用户名和密码登陆系统,才能进行信息的管理等。

第三章总体设计

3.1设计概述

根据需求把整个系统分化成不同的模块,每个模块完成一个特定的子功能。

把这些模块结合起来组成一个整体。

逐一实现各个功能;

3.2系统总体结构及功能模块划分

经过对系统的需求分析,学生信息管理系统主要划分为三个部分:

学生信息查询,学生信息管理,学生成绩录入三个功能模块。

如图3.2.1系统的总体结构。

 

图3.2.1系统的总体结构

3.2.1学生信息查询模块

学生信息查询:

学生可以根据学号、姓名、专业进行查询。

如图3.2.2学生信息查询模块结构。

 

图3.2.2学生信息管理模块结构

3.2.2学生信息管理模块

学生信息管理:

主要是用于学生信息更新、插入、删除,如图3.2.3学生管理模块结构。

 

 

图3.2.3学生信息管理模块结构

3.3系统数据库概念结构设计

根据对数据项与数据结构的分析,设计出能够满足系统需求的各种实体,及它们之间的关系,为后面的逻辑结构设计打下基础。

3.3.1系统E-R图

系统E-R图可以将各个实体之间的关系显示出来,将各个实体间的属性依赖表示明白。

如图3.3.1系统E-R图结构。

 

图3.3.1系统E-R图结构

3.3.2系统数据库的设计

综合以上分析,要实现上面的所有功能模块,主要设计表如下:

表3.3.1用户表(usedata)

表3.3.2成绩表(SC)

表3.3.3课程表(C)

表3.3.4学生表(S)

3.4安全保密设计

3.4.1用户登录安全性

系统设计了登录界面,每个合法用户有用户名及一个密码,只有当用户输入正确的用户名及密码组合后才能够对学生信息进行操作。

第四章详细设计

4.1概述

详细设计阶段的根本目标是确定应该怎样具体的实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。

4.2系统程序流程图

程序流程图又称为程序框图,它是历史悠久使用最广泛的描述软件设计的方法。

它可将整个程序的总体流程清楚明白的显示出来。

如图4.2.1系统总流程图结构。

图4.2.1系统总体流程图

4.3系统主要功能模块简介

4.3.1系统登录

用户凭借用户名及密码登录,成功登录后可对学生信息进行操作。

用户界面如图4.3.1用户登录界面所示。

图4.3.1用户登录界面

4.3.2学生信息查询模块

学生信息查询:

在程序主界面(如图4.3.2程序主界面)学生可以根据学号、姓名进行查询。

学生也可以只用一种条件进行信息查询,也可以多个条件查询。

双击记录任一单元格可显示学生的更详细信息(如图4.3.3详细信息窗口)。

图4.3.2程序主界面

图4.3.3详细信息窗口

4.3.3学生信息管理模块

学生信息管理:

通过右击程序主界面的相应记录弹出的上下文菜单(如图4.3.4上下文菜单)可对当前选定学生信息进行详细信息查询(如图4.3.3详细信息窗口)、修改信息(如图4.3.5修改信息窗口)、删除信息(如图4.3.6删除信息提示)。

更新时如果输入的学号不存在,可选择是否添加学生信息。

通过程序主界面的新建信息记录可添加学生信息(如图4.3.7添加信息窗口)。

图4.3.4上下文菜单

图4.3.5修改信息窗口

图4.3.6删除信息提示

图4.3.7添加信息窗口

第五章主要功能模块代码

5.1公共类代码设计

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()//判断是否有该条记录

{

using(SqlConnectionconnection=newSqlConnection(connectionString))

{

connection.Open();

SqlCommandcmdQuery=newSqlCommand(commondText,connection);

SqlDataReaderreader=cmdQuery.ExecuteReader();

if(reader.Read())flag=true;

elseflag=false;

reader.Close();

connection.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);

DataSetds=newDataSet();

sda.Fill(ds);

Stringresult="";

if(require=="课程名称"||require=="成绩")

{

inti=newint();

for(i=0;i

{

result=result+ds.Tables[0].Rows[i][require].ToString()+"\n";

}

}

else

result=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(),"提示");

}

}

}

}

5.2登录界面代码设计

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("请输入用户名和密码","提示");

}

}

5.3查询模块代码设计

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("您查找的信息不存在","错误信息");

}

}

5.4添加模块代码设计

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();

}

5.5更新模块代码设计

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.ToStr

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1