学生选课管理系统的开发.docx

上传人:b****5 文档编号:7873294 上传时间:2023-01-26 格式:DOCX 页数:50 大小:696.31KB
下载 相关 举报
学生选课管理系统的开发.docx_第1页
第1页 / 共50页
学生选课管理系统的开发.docx_第2页
第2页 / 共50页
学生选课管理系统的开发.docx_第3页
第3页 / 共50页
学生选课管理系统的开发.docx_第4页
第4页 / 共50页
学生选课管理系统的开发.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

学生选课管理系统的开发.docx

《学生选课管理系统的开发.docx》由会员分享,可在线阅读,更多相关《学生选课管理系统的开发.docx(50页珍藏版)》请在冰豆网上搜索。

学生选课管理系统的开发.docx

学生选课管理系统的开发

第八章项目实训-学生选课管理系统的开发

8.1需求分析

8.1.1选课工作流程分析

新的学年,系统管理人员首先对学生进行基本的信息录入,然后安排老师和所开的课程,

系统默认生成的学生和教师登陆系统密码为888888。

学生登陆系统后自身实际情况,查看教师信息,查看课程信息,选择课程。

每举行一次考试后由任课老师对成绩录入,任课老师根据实际情况对录入的成绩进行维护,各位同学对以上录入的信息可以根据自己的需要进行适当的查询。

8.1.2系统具体需求分析

系统的具体需求如下:

●系统管理员学校全体学生的信息管理,对教师和课程信息进行录入和必要的维护。

●教师查看选课学生和成绩录入等。

●学生查询课程、选课、退课和成绩查询等。

8.1.3系统设计分析

本系统的功能主要分为如下几类

●课程管理用于对各学期课程的开设和修改

●教师信息管理添加、修改和删除教师信息等。

●学生信息管理添加、修改和删除学生信息等。

●成绩管理用于对成绩的输入、修改。

●选课管理用于学生对课程的查询和选课、退课等。

8.2用户角色及功能结构

本系统用户角色主要有三类:

系统管理员、老师和学生。

●系统管理员可进行老师信息管理、学生信息管理和课程信息管理等工作,如图8-1所示。

●教师可以进行学生信息查询、选课查询和成绩录入等工作,如图8-2所示。

●学生可以进行选课信息查询、选课、退课和成绩查询等工作,如图8-3所示。

图8-1管理员能图

图8-2教师功能图

图8-3学生功能图

8.3系统功能模块设计

本系统从功能上可以分为三大模块:

学生模块、教师模块和系统管理员模块。

以下对各模块进行说明。

●学生模块:

学生登录、查看选课信息、选课、查看成绩和修改密码等。

●教师模块:

教师登录、查询选课学生、成绩管理和修改密码等。

●系统管理员模块:

管理员登录、教师信息管理、学生信息管理、课程信息管理和修改密码。

系统模块图如图8-4所示。

图8-4系统模块图

8.4数据库设计

8.4.1数据库概念设计

通过对学生选课进行的需求分析、网站流程设计以及系统功能结构的确定,规划出系统中使用的数据实体对象分别为“管理员”、“学生”、“教师”、和“课程”四个实体,核心的实体E-R图在第六章已经给出。

8.4.2数据库表的逻辑结构设计

本系统定义的数据库中包含以下5张个表,下面介绍这些表的结构。

●tbAdmin(管理员信息表)

表tbAdmin用于保存管理员的基本信息,如表8.1所示。

表8.1管理员信息表

序号

字段

描述

类型和长度

是否为空

说明

1

aname

用户名

varchar(20)

主键

2

apwd

密码

varchar(50)

MD5加密

●tbStudent(学生信息表)

表tbStudent用来保存学生信息如表8.2所示

表8.2学生信息表

序号

字段

描述

类型和长度

是否为空

说明

1

sno

学号

char(10)

主键

2

sname

学生姓名

char(20)

3

ssex

学生性别

char

(2)

4

sclass

学生班级

char(20)

5

sdept

学生系别

char(20)

6

spwd

学生密码

varchar(50)

MD5加密

●tbTeacher(教师信息表)

表tbTeacher用来保存教师信息如表8.3所示。

表8.3教师信息表

序号

字段

描述

类型和长度

是否为空

说明

1

tno

教师编号

char(10)

主键

2

tname

教师姓名

char(20)

3

tsex

教师性别

char

(2)

4

tdept

教师系别

char(20)

5

temail

教师邮箱

char(50)

6

tpwd

教师密码

varchar(40)

MD5加密

●tbCourse(课程信息表)

表tbCourse用来保存课程信息如表8.4所示。

表8.4课程信息表

序号

字段

描述

类型和长度

是否为空

说明

1

cno

课程号

char(10)

主键

2

tno

教师编号

char(20)

外键

3

cname

课程名

char(50)

4

ccredit

学分

float

5

cdescribe

课程描述

text

●tbSC(选课信息表)

表tbSC用来保存学生选课信息如表8.5所示。

表8.5选课信息表

序号

字段

描述

类型和长度

是否为空

说明

1

scId

Id号

int

主键(自增)

2

sno

学号

char(10)

外键

3

cno

课程号

char(10)

外键

4

grade

成绩

char(10)

8.5Web.Config文件配置

为了使应用程序方便移植,需要在应用程序配置文件(Web.Config文件)中设置数据库连接信息。

连接数据库代码(代码位置:

光盘/ElectiveSystem/web.config)如下:

connectionString="server=.;database=dbChooseCourse;uid=ChooseCourse;

pwd=ChooseCourse"/>

......

8.6公共类的编写

开发项目中以类的形式来组织、封装一些常用的方法和事件,不仅可以提高代码的复用率,也大大方便了代码的管理。

在学生选课系统中共建了4个公共类,具体如下。

●Alert:

用于管理在项目中用到的多种页面跳转提示框,如直接跳转、提示信息并跳转等。

●Common:

用于管理在项目中用的公共类,如MD5加密,清除脚本等。

●DBBase:

用于管理在项目中对数据库的各种操作,如连接数据库、获取数据表DataTable等。

●RandomImg:

用于管理在项目组用到的获取随机验证码。

因为数据库操作类DBBase类在本书第七章(7.11数据库操作类DBBase简介和使用)中已经进行了详细的介绍。

下面主要介绍RandomImg类、Alert类和Common类的创建过程。

1.类的创建

在创建类时,用户可以在该项目中找到App_Code文件夹,如果项目中没有App_Code文件夹,用户可以在项目上单击鼠标右键,在弹出的菜单中选择“添加ASP.NET文件夹”,添加一个App_Code文件夹。

新建好文件夹后点击鼠标右键,在弹出菜单中选择“添加新项”,在弹出的“添加新项”对话框中选择“类”,并将其命名,单击“添加”按钮即可创建一个新类。

出现得窗口如图8-5所示(此处以创建RandomImg为例)。

图8-5“添加新项”对话框图

2.RamdomImg类(代码位置:

光盘/ElectiveSystem/App_Code/RandomImg.cs)

RamdomImg类主要完成一些与验证码相关的功能,比如生成随机验证码字符串、生成验证码的图片等等,其中主要方法包括GenerateCheckCode()、CreateCheckCodeImage(),下面我们将对这些方法分别进行详细讲解。

●GenerateCheckCode()方法

GenerateCheckCode方法用于在登入页面自动生成随机验证码。

其代码如下:

///

///生成验证码

///

///验证码字符串

publicstaticstringGenerateCheckCode()

{

intnumber;

charcode;

stringcheckCode=String.Empty;

System.Randomrandom=newRandom();

for(inti=0;i<5;i++)

{

number=random.Next();

if(number%2==0)

code=(char)('0'+(char)(number%10));

else

code=(char)('A'+(char)(number%26));

checkCode+=code.ToString();

}

returncheckCode;

}

●CreateCheckCodeImage(stringcheckCode)方法

CreateCheckCodeImage方法用于给生成的随机验证码加上背景图片。

其代码如下:

///

///生成验证码图片

///

///验证码字符串

publicstaticvoidCreateCheckCodeImage(stringcheckCode)

{

if(checkCode==null||checkCode.Trim()==String.Empty)

return;

System.Drawing.Bitmapimage=new

System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length*12.5)),22);

Graphicsg=Graphics.FromImage(image);

//生成随机生成器

Randomrandom=newRandom();

//清空图片背景色

g.Clear(Color.White);

//画图片的背景噪音线

for(inti=0;i<25;i++)

{

intx1=random.Next(image.Width);

intx2=random.Next(image.Width);

inty1=random.Next(image.Height);

inty2=random.Next(image.Height);

g.DrawLine(newPen(Color.Silver),x1,y1,x2,y2);

}

Fontfont=newSystem.Drawing.Font("Arial",12,

(System.Drawing.FontStyle.Bold|System.Drawing.FontStyle.Italic));

System.Drawing.Drawing2D.LinearGradientBrushbrush=new

System.Drawing.Drawing2D.LinearGradientBrush(newRectangle(0,0,

image.Width,image.Height),Color.Blue,Color.DarkRed,1.2f,true);

g.DrawString(checkCode,font,brush,2,2);

//画图片的前景噪音点

for(inti=0;i<100;i++)

{

intx=random.Next(image.Width);

inty=random.Next(image.Height);

image.SetPixel(x,y,Color.FromArgb(random.Next()));

}

//画图片的边框线

g.DrawRectangle(newPen(Color.Silver),0,0,image.Width-1,image.Height-1);

System.IO.MemoryStreamms=newSystem.IO.MemoryStream();

image.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);

System.Web.HttpContext.Current.Response.ClearContent();

System.Web.HttpContext.Current.Response.ContentType="image/Gif";

System.Web.HttpContext.Current.Response.BinaryWrite(ms.ToArray());

}

3.Alert类(代码位置:

光盘/ElectiveSystem/App_Code/Alert.cs)

Alert类用于管理在项目中用到的多种页面跳转,主要包括Show()方法、FramGo()方法、ShowAndFramGo()方法,下面进行详细介绍。

●Show方法

Show方法用于提示信息并返回原页面。

其代码如下:

///

///提示信息并返回原页面

///

///提示信息

publicstaticvoidShow(stringtext)

{

HttpContext.Current.Response.Write("alert('"+text+

"');window.history.back();");

HttpContext.Current.Response.End();

}

●ShowAndFramGo()方法

ShowAndFramGo()方法用于提示信息并跳转页面(用于框架页)。

其代码如下:

///

///提示信息并跳转页面(用于框架页)

///

///提示信息

///要跳转的目标页面

publicstaticvoidShowAndFramGo(stringtext,stringurl)

{

HttpContext.Current.Response.Write("alert('"+text+

"');window.top.location='"+url+"';");

}

●FramGo()方法

FramGo()方法用于跳转页面(用于框架页)。

其代码如下:

///

///跳转页面

///

///目标页面的路径

publicstaticvoidFramGo(stringurl)

{

HttpContext.Current.Response.Write("

language='javascript'>window.top.location='"+url+"';");

}

4.Common类(代码位置:

光盘/ElectiveSystem/App_Code/Common.cs)

Common类主要用于管理在项目中用到的公共方法,主要包括MD5()方法、InputText()方法、GetMapPath()方法、UploadPicFile()方法。

下面详细介绍Common类中的方法。

●MD5(stringInput,boolHalf)方法

MD5类用于字符串加密。

其代码如下:

///

///MD5加密字符串处理

///

///加密是16位还是32位;如果为true为16位

///待加密码字符串

///MD5加密结果

publicstaticstringMD5(stringInput,boolHalf)

{

stringoutput=

System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(Input,

"MD5").ToLower();

if(Half)//16位MD5加密(取32位加密的9~25字符)

output=output.Substring(8,16);

returnoutput;

}

●InputText(stringtext)方法

InputText类用于删除脚本。

其代码如下:

///

///清除所有脚本

///

///输入要进行清除字符串

///返回清除过脚本后的字符串

publicstaticstringInputText(stringtext)

{

if(string.IsNullOrEmpty(text))

returnstring.Empty;

text=Regex.Replace(text,"[\\s]{2,}","");//twoormorespaces

text=Regex.Replace(text,"(<[b|B][r|R]/*>)+|(<[p|P](.|\\n)*?

>)","\n");//

text=Regex.Replace(text,"(\\s*&[n|N][b|B][s|S][p|P];\\s*)+","");// 

text=Regex.Replace(text,"<(.|\\n)*?

>",string.Empty);//anyothertags

text=text.Replace("'","''");

returntext;

}

●GetMapPath(stringstrPath)方法

GetMapPath()方法用于获取当前的绝对地址。

其代码如下:

///

///获得当前绝对路径

///

///指定的路径

///绝对路径

publicstaticstringGetMapPath(stringstrPath)

{

if(HttpContext.Current!

=null)

{

returnHttpContext.Current.Server.MapPath(strPath);

}

else//非web程序引用

{

strPath=strPath.Replace("/","\\");

if(strPath.StartsWith("\\"))

{

strPath=strPath.Substring(strPath.IndexOf('\\',1)).TrimStart('\\');

}

returnSystem.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory,

strPath);

}

}

●UploadPicFile(System.Web.UI.WebControls.FileUploadfileUpload,string

pathDir,stringfirstMark)方法

UploadPicFile()方法用于上传图片。

其代码如下:

///

///图片上传

///

///图片路径

///保存图片路径

///前缀名

///返回上传结果

publicstaticstringUploadPicFile(System.Web.UI.WebControls.FileUploadfileUpload,

stringpathDir,stringfirstMark)

{

stringfileName="";

stringretValue="";

try

{

stringtype=

"image/pjpeg|image/jpeg|image/bmp|image/gif|application/x-shockwave-flash|

image/png|application/msword|application/vnd.ms-excel";

boolallowType=type.Contains(fileUpload.PostedFile.ContentType.ToString());

stringlocalExp=fileUpload.PostedFile.ContentType.ToString().Substring

(fileUpload.PostedFile.ContentType.ToString().LastIndexOf("/")+1);

if(allowType)

{

if((fileUpload.PostedFile.ContentLength/1024)>ImagesMaxSize)

{

retValue="error:

对不起!

你上传的文件大小大于了"+

ImagesMaxSize.ToString()+"KB";

}

else

{

stringexpStr=

fileUpload.PostedFile.FileName.Substring

(fileUpload

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

当前位置:首页 > 外语学习 > 英语学习

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

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