C 学生成绩管理系统.docx
《C 学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《C 学生成绩管理系统.docx(17页珍藏版)》请在冰豆网上搜索。
C学生成绩管理系统
C#课程设计
姓名:
班级:
学号:
指导老师:
简介
该系统是用VisuaStudio2010和Access2007,通过C#语言进行相关代码的编写,生成相关程序。
学生成绩管理系统是构建于VisualC#.NET平台上的Windows应用程序。
本文描述的是基于Windows环境的学生成绩管理系统,主要工具MicrosoftVisualStudio2010设计窗体,Access2007建立数据库,学生成绩管理管理系统为用户提供充足的信息和快捷的查询手段,实现学生基本信息、成绩的录入,删除,查询,维护以及成绩的统计分析等几方面的功能,是现实问题的迫切要求。
本篇报告介绍一个学生信息管理系统的从分析到设计最后到开发的全过程为,给出了学生信息管理系统的设计和技术实现的过程,特别在细节上分析功能和函数的实现思想。
涉及到学生信息管理的基本功能在本报告中都有相应的描述。
管理信息系统正在向着网络化、智能化和集成化等趋势发展。
学生成绩管理系统是为了更好的管理学生考试成绩而开发的数据管理软件。
它对于一个学校是不可缺少的重要部分,它的内容对于学校的决策者和管理者来说都至关重要。
在这次的课程设计中,让我了解到MicrosoftVisualStudio2010,同时学习了Access数据库的建立和连接与导入。
能在VisualC#.NET平台上进行Access数据库的修改与控制,将C#语句与SQL语句混合使用,成功的完成了学生成绩管理系统的整体设计,加深巩固了选择的条件语句,还有曾经学习过的基本运算语句,同时也为以后的进一步学习垫下了了良好的基础。
第一章绪论……………………………………………………4
设计目的…………………………………………………4
开发工具选择……………………………………………4
开发环境…………………………………………………4
第二章需求分析………………………………………………5
系统目标…………………………………………………5
功能需求分析……………………………………………6
性能需求分析……………………………………………6
第三章总体设计………………………………………………7
设计概述…………………………………………………7
功能模块设计……………………………………………7
第四章数据库设计……………………………………………8
数据库需求分析………………………………………8
数据库表设计…………………………………………9
第五章详细设计………………………………………………10
系统程序流程图…………………………………………11
系统主要功能模块………………………………………13
系统登录……………………………………………13
学生登录模块………………………………………15
管理员登录模块……………………………………20
第六章总结………………………………………………………41
第一章绪论
课程设计目的
本次课程设计的目的是使学生能熟练掌握简单的简单Windows窗体应用程序的设计和的应用,复习熟练基本运算符,和基本的条件语句、判断语句,将Access的使用和MicrosoftVisualStudio2010的使用结合起来,希望通过本次的课程设计锻炼我们使用C#语言解决实际问题的能力。
系统开发环境
系统开发平台:
MicrosoftVisualStudio2010系统开发语言C#数据库管理软件:
Access系统开发程序本系统后台数据库采用Access数据库,该数据库系统在安全性、准确性和运行速度方面有绝对的优势,并且处理数据量大,效率高;前台采用Microsoft公司的VisualStudio2010作为主要开发工具,可与Access2007数据库无缝链接。
报告主要内容
本报告详细的介绍了学生信息管理系统的开发过程,主要涉及到的工作如下:
系统的需求分析、系统的总体设计设计思路、系统的数据库设计、系统各模块的详细设计、系统运行测试。
第二章需求分析
2.1系统设计目标
(1)登录模块中,有不同的权限设置,分为学生登录和管理员登录
(2)学生用户可根据不同的用户名和相应的密码进行登录,并可修改密码。
(3)管理员可以根据不同的用户名和相应的密码进行登录,并可修改密码。
(4)学生界面中学生可以按照姓名,学号,邮箱来查询成绩
(5)管理员界面中管理员可以实现学生成绩的录入,删除,修改,查询,成绩的分析,将成绩导出到Excel表中,还可以根据成绩画出柱状图。
功能需求分析
本系统的功能需求分析如下:
(1)学生密码修改:
学生可在成功登录后对自己的密码进行修改,以防个人信息外泄。
(2)学生成绩查询:
学生根据姓名,学号,邮箱进行查询。
(3)学生成绩和信息的录入:
用于学生成绩管理,录入学生成绩和学生个人信息,也可以实现对成绩的其他操作。
性能需求分析
(1)登录、用户界面需求:
简洁、易懂、易用、友好的用户界面。
(2)安全保密性需求:
只有凭借用户名和密码登陆系统,才能进行信息的管理,同时也可以进行密码修改。
(3)数据分析需求:
可根据学生要求进行条件查询,分不同的姓名,学号,邮箱进行相应查询。
(4)数据统计要求:
可对学生成绩和个人信息进行添加更改和删除。
第三章总体设计
设计总体概述
根据需求把整个系统分化成不同的模块,每个模块完成一个特定的子功能。
把这些模块结合起来组成一个整体。
逐一实现各个功能;
功能模块设计
(1)登录模块,根据不同权限,链接数据库,然后登录。
(2)管理员登录模块,在此模块中有成绩查询,修改,删除,添加,分析,导出Excel表,绘出矩形图,退出登录,帮助,密码修改等功能模块。
(3)学生登录模块,在此模块中有查询,退出登录,帮助,密码修改等模块功能。
(4)成绩查询模块,连接数据库,用SELECT语句实现
(5)成绩修改模块,连接数据库,用UPDATE语句实现
(6)成绩删除模块,连接数据库,用DELETE语句实现
(7)成绩添加模块,连接数据库,用INSERT语句插入实现
(8)成绩分析模块,连接数据库,读出数据库中的成绩,按照个门成绩分别求出他们的最高分,最低分,平均分等。
(9)导出Excel表模块,将想要保存的信息导出到Excel表中
(10)绘出矩形图模块,根据成绩分析模块绘出矩形图。
(11)退出登录模块,退出当前登录,切换用户
(12)帮助模块,给与一些非法操作的解决办法
(13)密码修改模块,修改当前用户的密码
第四章数据库设计
数据库需求分析
数据库中存储学生的基本信息和成绩、管理员和学生的登录号和密码。
数据库的E-R图如下
数据库表设计
本系统在登录时需要验证使用者的身份,用户需要输入用户名和密码,所建立的数据库表如下:
1、管理员表:
2、学生表:
3、学生基本信息和成绩表:
第五章详细设计
系统总体结构
经过对系统的需求分析,学生成绩管理系统主要划分为两个部分:
学生成绩查询,管理员模块。
系统程序模块流程图:
学生登录模块
管理员登录模块
系统主要功能模块
模块
登录:
代码:
privatevoidbuttonLogin_Click(objectsender,EventArgse)
{
i++)
{
();
if(reader["username"].Equals(user)&&reader["password"].Equals(password))
{
=;
();
break;
}
}
if(i==["student"].
("用户名或者密码输入有误!
");
();
();
}
{
strConnection+=@"DataSource="++"\\";
OleDbConnectionobjConnection=newOleDbConnection(strConnection);
();
OleDbCommandobjCommand=newOleDbCommand("select*fromadmin",objConnection);
DataSetds=newDataSet();
OleDbDataAdaptersda=newOleDbDataAdapter("select*fromadmin",objConnection);;
(ds,"admin");
OleDbDataReaderreader=();
inti;
for(i=0;i<["admin"].;i++)
{
();
if(reader["username"].Equals(user)&&reader["password"].Equals(password))
{
=;
();
break;
}
}
if(i==["admin"].
("用户名或者密码输入有误!
");
();
();
}
}
}
(1)学生界面模块
(2)成绩查询模块
代码:
oString().Equals(checkInfo)||reader["studentID"].ToString().Equals(checkInfo)
||reader["email"].ToString().Equals(checkInfo))
{
ListViewItemlvi=newListViewItem(reader["name"].ToString());
}
}
}
();
();
(3)密码修改模块
代码:
privatevoidtoolStripMenuItem8_Click(objectsender,EventArgse)
{
xiugaimima2xiu=newxiugaimima2();
();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
stringuser=;
stringpassword=;
strConnection+=@"DataSource="++"\\";
OleDbConnectionobjConnection=newOleDbConnection(strConnection);
();
OleDbCommandobjCommand=newOleDbCommand("select*fromstudent",objConnection);
DataSetds=newDataSet();
OleDbDataAdaptersda=newOleDbDataAdapter("select*fromstudent",objConnection);;
(ds,"student");
OleDbDataReaderreader=();
inti;
for(i=0;i<["student"].;i++)
{
();
if(reader["username"].Equals(user)&&reader["password"].Equals(password))
{
re[username]='"+user+"'";
OleDbCommandcmd=newOleDbCommand(s,objConnection);
();
("修改成功!
");
break;
}
}
if(i==["student"].
("请确认密码!
");
();
();
}
(4)退出登录模块
privatevoidtoolStripMenuItem1_Click(objectsender,EventArgse)
{
();
}
(5)帮助模块
privatevoidtoolStripMenuItem4_Click(objectsender,EventArgse)
{
("请确定是不是没考!
");
}
privatevoidtoolStripMenuItem6_Click(objectsender,EventArgse)
{
("请联系管理员!
");
}
privatevoidtoolStripMenuItem7_Click(objectsender,EventArgse)
{
("请联系老师!
");
}
(1)管理员界面模块
(2)成绩添加模块
代码:
privatevoidtoolStripMenuItem3_Click(objectsender,EventArgse)
{
oString().Equals(checkInfo)||reader["studentID"].ToString().Equals(checkInfo)
||reader["email"].ToString().Equals(checkInfo))
{
ListViewItemlvi=newListViewItem(reader["name"].ToString());
}
}
}
();
();
}
(4)成绩修改模块
代码:
privatevoidtoolStripMenuItem2_Click(objectsender,EventArgse)
{
("未选中修改项!
");
else
{
xiugaixi=newxiugai();
strConnection+=@"DataSource="++"\\";
OleDbConnectionobjConnection=newOleDbConnection(strConnection);
();
OleDbCommandobjCommand=newOleDbCommand("select*frominformationwherename='"
OleDbDataReaderreader=();
();
oString();
if(reader["sex"].ToString()=="男")
else
Int32sum=0;
Int32max=0,min=100;
Int32i=0,m=0,n=0;
foreach(DataRowdrindd)
{
sum+=(dr["courseOne"].ToString());
}
for(intj=0;j<;j++)
{
if((dd[j]["courseOne"].ToString()))>=max)
max=(dd[j]["courseOne"].ToString());
if((dd[j]["courseOne"].ToString()))<=min)
min=(dd[j]["courseOne"].ToString());
if((dd[j]["courseOne"].ToString()))>=0&&(dd[j]["courseOne"].ToString()))<=60)
i++;
elseif((dd[j]["courseOne"].ToString()))>=60&&(dd[j]["courseOne"].ToString()))<=80)
m++;
else
n++;
}
floatavg=(float)sum/;
floatjg=(float)i/;
();
oString());
}
for(intj=0;j<;j++)
{
if((dd1[j]["courseTwo"].ToString()))>=max1)
max1=(dd1[j]["courseTwo"].ToString());
if((dd1[j]["courseTwo"].ToString()))<=min1)
min1=(dd1[j]["courseTwo"].ToString());
if((dd1[j]["courseTwo"].ToString()))>=0&&(dd1[j]["courseTwo"].ToString()))<=60)
i1++;
elseif((dd1[j]["courseTwo"].ToString()))>=60&&(dd1[j]["courseTwo"].ToString()))<=80)
m1++;
else
n1++;
}
floatavg1=(float)sum1/;
floatjg1=(float)i1/;
();
oString());
}
for(intj=0;j<;j++)
{
if((dd2[j]["courseThree"].ToString()))>=max2)
max2=(dd2[j]["courseThree"].ToString());
if((dd2[j]["courseThree"].ToString()))<=min2)
min2=(dd2[j]["courseThree"].ToString());
if((dd2[j]["courseThree"].ToString()))>=0&&(dd2[j]["courseThree"].ToString()))<=60)
i2++;
elseif((dd2[j]["courseThree"].ToString()))>=60&&(dd2[j]["courseThree"].ToString()))<=80)
m2++;
else
n2++;
}
floatavg2=(float)sum2/;
floatjg2=(float)i2/;
();
lsx)|*.xlsx";
=0;
=true;
=false;
=strTitle+".xls";
if()==ext;
strHeaderText+="\t";
}
(strHeaderText);
stringstrItemValue="";
foreach(ListViewItemItin
{
strItemValue="";
{
strItemValue+=[j].Text;
strItemValue+="\t";
}
(strItemValue);
}
}
catch(Exceptionex)
{
"软件提示!
");
throwex;
}
finally
{
();
();
}
}
}
(8)绘出矩形图
代码:
privatevoidtoolStripMenuItem13_Click(objectsender,EventArgse)
{
CreateImage();
("绘图成功!
");
}
oString(),font,,x,348);oString(),font,,25,y);oString()))>=0&&(dd[j]["courseOne"].ToString()))<=60)
h++;
elseif((dd[j]["courseOne"].ToString()))>=60&&(dd[j]["courseOne"].ToString()))<=80)
k++;
else
p++;
}
oString()))>=0&&(dd1[j]["courseTwo"].ToString()))<=60)
i1++;
elseif((dd1[j]["courseTwo"].ToString()))>=60&&(dd1[j]["courseTwo"].ToString()))<=80)
m1++;
else
n1++;
}
Count2[0]=i1;
Count2[1]=m1;
Count2[2]=n1;
oString()))>=0&&(dd2[j]["courseThree"].ToString()))<=60)
i2++;
elseif((dd2[j]["courseThree"].ToString()))>=60&&(dd2[j]["courseThree"].ToString()))<=80)
m2++;
else
n2++;
}
Count3[0]=i2;
Count3[1]=m2;
Count3[2]=n2;
x=80;
SolidBrushmybrush=newSolidBrush;
SolidBrushmybrush2=newSolidBrush;
SolidBrushmybrush3=newSolidBrush;
oString(),font2,,x,115-Count1[0]-15);
x=x+20;
(mybrush2,x,115-Count2[0],20,Count2[0]*26);
(Count2[0].ToString(),font2,,x,115-Count2[0]-15);
x=x+20;
(mybrush3,x,91-Count3[0],20,Count3[0]*26);
(Count3[0].ToString(),font2,,x,91-Count3[0]-15);
oString(),font2,,x,215-Count1[1]-15);
x=x+20;
(mybrush2,x,265-Count2[1],20,Count2[1]*26);
(Count2[1].ToString(),font2,,x,265-Count2[1]-15);
x=x+20;
(mybrush3,x,240-Count3[1],20,Count3[1]*26);
(Count3[1].ToString(),font2,,x,240-Count3[1]-15);
oString(),font2,,x,290-Count