C学生成绩管理.docx
- 文档编号:28454085
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:23
- 大小:77.68KB
C学生成绩管理.docx
《C学生成绩管理.docx》由会员分享,可在线阅读,更多相关《C学生成绩管理.docx(23页珍藏版)》请在冰豆网上搜索。
C学生成绩管理
《C#程序设计》
课程设计报告
(20—20学年第学期)
题目:
学生成绩信息管理系统
专业:
班级:
姓名学号:
指导教师:
成绩:
年
月
日
目录
摘 要1
第一章绪 论2
1.1设计目的2
1.2开发工具选择2
1.3开发环境2
1.4本报告的主要内容2
第二章需求分析3
2.1系统需求简介3
2.1.1系统目标3
2.1.2功能需求分析3
2.1.3性能需求分析3
第三章总体设计4
3.1设计概述4
3.2系统总体结构及功能模块划分4
3.2.1学生信息查询模块4
3.2.2学生信息管理模块5
3.3系统数据库概念结构设计5
3.3.1系统E-R图5
3.3.2系统数据库的设计6
3.4安全保密设计7
3.4.1用户登录安全性7
第四章详细设计8
4.1概述8
4.2系统程序流程图8
4.3系统主要功能模块简介9
4.3.1系统登录9
4.3.2学生信息查询模块9
4.3.3学生信息管理模块10
第五章主要功能模块代码12
5.1公共类代码设计12
5.2登录界面代码设计14
5.3查询模块代码设计15
5.4添加模块代码设计16
5.5更新模块代码设计17
5.6删除模块代码设计20
第六章课程设计心得21
第七章设计日志22
C#学生成绩管理系统
摘 要
本文描述的是基于Windows环境的学生信息管理系统,主要功能模块包括:
学生信查询,学生信息管理,学生成绩录入,主要工具MicrosoftVisualStudio2010设计窗体,SQLserver2005建立数据库,实现学校信息管理的各个功能。
本篇报告介绍一个学生信息管理系统的从分析到设计最后到开发的全过程为,给出了学生信息管理系统的设计和技术实现的过程,特别在细节上分析功能和函数的实现思想。
涉及到学生信息管理的基本功能在本报告中都有相应的描述。
第一章绪 论
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 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+"','"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩 管理
![提示](https://static.bdocx.com/images/bang_tan.gif)