C#学生成绩管理系统课程设计报告Word文档下载推荐.docx
《C#学生成绩管理系统课程设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C#学生成绩管理系统课程设计报告Word文档下载推荐.docx(21页珍藏版)》请在冰豆网上搜索。
5.4添加模块代码设计16
5.5更新模块代码设计17
5.6删除模块代码设计20
第六章课程设计心得21
第七章设计日志22
C#学生成绩管理系统
摘 要
计算机从产生到现在只不过50多年,而网络的迅速发展也不过10年的时间。
但是,计算机和网络对社会的影响已经迅速扩大,甚至在改变人们的生活。
特别是90年代以来,多媒体和网络技术的飞速发展正在以惊人的速度改变着人们的工作方式、交往方式和生活方式。
正像著名的未来学家尼葛洛庞帝(1997)所说的:
“数字不再只和计算有关,它决定我们的生存。
”科学技术是第一生产力,是最先进的生产力。
现在,已经没有人怀疑信息技术的发展将会引起人类社会全面和深刻的变革,使人类社会由工业社会迈向信息社会。
目前,在社会各个方面都呈现出了与工业社会显著不同的特点。
网上书店,网上医院,网上学校,网上购物,网上银行,政府上网等新事物如雨后春笋般涌现出来,对人们的传统生活方式、工作方式产生极大的冲击。
使人们感受到技术发展的脉搏和信息时代前进的步伐。
本文是基于Windows环境的学生信息管理系统,主要功能模块包括:
学生信查询,学生信息管理,学生成绩录入,主要工具MicrosoftVisualStudio2010设计窗体,SQLserver2005建立数据库,实现学校信息管理的各个功能。
1系统概述
2.1系统功能与应用简介
2.1.1系统功能
(1)根据查询条件实现学生信息的查询
(2)学生选课信息查询、成绩信息的查询
(3)学生信息、课程信息、成绩信息的增加、删除、修改
(4)对基本信息完成增加、删除、修改时,需注意表与表之间的关联
2.1.2功能需求分析
本系统的功能需求分析如下:
(1)学生信息查询:
学生可以根据学号、姓名、专业进行查询.
(2)学生信息管理:
主要是用于学生信息更新、插入、删除;
(3)学生成绩录入:
用于学生成绩管理,录入学生成绩,也可以更新;
2.1.3性能需求分析
(1)登录、用户界面需求:
简洁、易懂、易用、友好的用户界面。
(2)安全保密性需求:
只有凭借用户名和密码登陆系统,才能进行信息的管理等。
2系统设计
2.1系统设计思想
本系统选用C#作为开发语言,采用结合后台SQLServer数据库的C/S结构开发模式,优化了程序代码及结构,提高了程序的运行效率。
根据需求把整个系统分化成不同的模块,每个模块完成一个特定的子功能。
把这些模块结合起来组成一个整体,逐一实现各个功能。
2.2系统总体结构及功能模块划分
经过对系统的需求分析,学生信息管理系统主要划分为三个部分:
学生信息查询,学生信息管理,学生成绩录入三个功能模块。
如图3.2.1系统的总体结构。
图3.2.1系统的总体结构
2.2.1学生信息查询模块
学生信息查询:
学生可以根据学号、姓名、专业进行查询。
如图3.2.2学生信息查询模块结构。
图2.2.2学生信息管理模块结构
2.2.2学生信息管理模块
学生信息管理:
主要是用于学生信息更新、插入、删除,如图3.2.3学生管理模块结构。
图2.2.3学生信息管理模块结构
2.3数据库概念结构设计
根据对数据项与数据结构的分析,设计出能够满足系统需求的各种实体,及它们之间的关系,为后面的逻辑结构设计打下基础。
2.3.1系统E-R图
系统E-R图可以将各个实体之间的关系显示出来,将各个实体间的属性依赖表示明白。
如图3.3.1系统E-R图结构。
图2.3.1系统E-R图结构
2.3.2系统数据库的设计
综合以上分析,要实现上面的所有功能模块,主要设计表如下:
表2.3.1用户表(usedata)
表2.3.2成绩表(SC)
表2.3.3课程表(C)
表2.3.4学生表(S)
2.4安全保密设计
2.4.1用户登录安全性
系统设计了登录界面,每个合法用户有用户名及一个密码,只有当用户输入正确的用户名及密码组合后才能够对学生信息进行操作。
3具体设计
3.1概述
详细设计阶段的根本目标是确定应该怎样具体的实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。
3.2系统程序流程图
程序流程图又称为程序框图,它是历史悠久使用最广泛的描述软件设计的方法。
它可将整个程序的总体流程清楚明白的显示出来。
如图4.2.1系统总流程图结构。
图3.2.1系统总体流程图
3.3系统主要功能模块简介
3.3.1系统登录
用户凭借用户名及密码登录,成功登录后可对学生信息进行操作。
用户界面如图3.3.1用户登录界面所示。
图3.3.1用户登录界面
3.3.2学生信息查询模块
在程序主界面(如图3.3.2程序主界面)学生可以根据学号、姓名进行查询。
学生也可以只用一种条件进行信息查询,也可以多个条件查询。
双击记录任一单元格可显示学生的更详细信息(如图3.3.3详细信息窗口)。
图3.3.2程序主界面
图3.3.3详细信息窗口
3.3.3学生信息管理模块
通过右击程序主界面的相应记录弹出的上下文菜单(如图3.3.4上下文菜单)可对当前选定学生信息进行详细信息查询(如图3.3.3详细信息窗口)、修改信息(如图3.3.5修改信息窗口)、删除信息(如图3.3.6删除信息提示)。
更新时如果输入的学号不存在,可选择是否添加学生信息。
通过程序主界面的新建信息记录可添加学生信息(如图3.3.7添加信息窗口)。
图3.3.4上下文菜单
图3.3.5修改信息窗口
图3.3.6删除信息提示
图3.3.7添加信息窗口
4主要功能模块代码
4.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()//判断是否有该条记录
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课程名称"
)
SELECT课程名称FROMdetailWHERE学号="
up成绩"
SELECT成绩FROMdetailWHERE学号="
SqlDataAdaptersda=newSqlDataAdapter(commondText,connectionString);
Stringresult="
if(require=="
课程名称"
||require=="
成绩"
inti=newint();
for(i=0;
i<
ds.Tables[0].Rows.Count;
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()
{//添加、更新语句
SqlCommandcmdInsert=newSqlCommand(commondText,connection);
cmdInsert.ExecuteNonQuery();
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()+"
booltemp=newbool();
temp=sql.getFlag();
if(temp)
this.Visible=false;
mainfacemain=newmainface(this);
main.Show();
MessageBox.Show(ex.ToString(),"
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()=="
SELECTSNOAS学号,SNAS姓名,MNAS专业名称,SEXAS性别,BIRDAYAS出生日期,TSAS总学分,COMAS备注FROMSWHERESN='
+sNInput.Text.Trim()+"
sNoinput.Text.Trim()!
+sNInput.Text.Trim()+"
andSNO="
+sNoinput.Text.Trim()+"
)MessageBox.Show("
您输入的信息为空,请重新输入!
"
错误信息"
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()!
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();
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()!
){
INSERTINTOSC(SNO,CNO,SCORE)VALUES("
+addStuNo.Text.ToString().Trim()
+"
+temp+"
+score.Text.ToString().Trim()+"
this.Close();
学号、姓名和专业名称都不可以为空!
!
错误!
privatevoidAddNew_Load(objectsender,EventArgse)
{//获取专业列表
SELECTDISTINCTCNFROMC"
SqlDataAdaptersda=newSqlDataAdapter(mondText,sql.connectionString);
listmn.DataSource=ds.Tables[0].DefaultView;
listmn.DisplayMember="
CN"
listmn.DisplayMember=listmn.DisplayMember.ToString().Trim();
5总结
本次系统设计让我知道了进行管理系统开发这样的工作,要有恒心,要能静下新来做,而不能浮躁。
要真真实实的多查资料,多问,多看。
要善于同同学和老师交流与合作,善于获取各种有用的资源。
经过本次准备的结课论文,让我学把老师上课讲的内容融会贯通,不再只是机械的复制老师思想。
巩固和加深了对C#的理解,提高综合运用本课程所学知识的能力。
培养了我选用参考书,查阅手册及文献资料的能力,及身边所能利用的一切资源。
培养独立思考,深入研究,分析问题、解决问题的能力。
独立自主设计和编码等一系列的程序。
通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。
由于本次的论文准备遇到的问题,我将在以后的学习当中注意以下几个方面:
上课认真听讲,做好笔记,课下认真复习,掌握课本中的知识,多在电脑上实践,上好专业实验课;
写程序的过程中要考虑周到,严密;
在做设计的时候要有信心,有耐心,切勿浮躁;
在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。
更让我认识到一个系统开发的过程中编码不是重要的,最重要的是分析系统、建立起系统模型。
只有分析出来才能进行编码。
在分析一个系统前,操作者必须要对将要开发的系统所涉及到的各方面知识有一个整体的认识,然后将系统的模型建立起来。
在程序编写中,我认识到软件要有简便的界面,良好的程序风格。
拥有这些条件,程序的可读性才会好,开发的复杂度才能大大减少,修改代码时更加容易下手。
参考文献
[1]《ASP.NET企业级开发案例精解(C#)》中国林业出版社
[2]《SQLServer数据库开发入门与范例解析》夏邦贵著北京机械工
[3]《MicrosoftVisualStudio2010基础》(美)马歇尔著许华杰/刘光惠译
[4]XX搜索