完整版学生选课管理系统的开发.docx
- 文档编号:19294986
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:58
- 大小:717.12KB
完整版学生选课管理系统的开发.docx
《完整版学生选课管理系统的开发.docx》由会员分享,可在线阅读,更多相关《完整版学生选课管理系统的开发.docx(58页珍藏版)》请在冰豆网上搜索。
完整版学生选课管理系统的开发
第八章项目实训-学生选课管理系统的开发
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(" "');window.history.back();"); HttpContext.Current.Response.End(); } ●ShowAndFramGo()方法 ShowAndFramGo()方法用于提示信息并跳转页面(用于框架页)。 其代码如下: /// ///提示信息并跳转页面(用于框架页) /// /// /// publicstaticvoidShowAndFramGo(stringtext,stringurl) { HttpContext.Current.Response.Write(" "');window.top.location='"+url+"';"); } ●FramGo()方法 FramGo()方法用于跳转页面(用于框架页)。 其代码如下: /// ///跳转页面 /// /// publicstaticvoidFramGo(stringurl) { HttpContext.Current.Response.Write(""); } 4.Common类(代码位置: 光盘/ElectiveSystem/App_Code/Common.cs) Common类主要用于管理在项目中用到的公共方法,主要包括MD5()方法、InputText()方法、GetMapPath()方法、UploadPicFile()方法。 下面详细介绍Common类中的方法。 ●MD5(stringInput,boolHalf)方法 MD5类用于字符串加密。 其代码如下: /// ///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 (fil
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 学生 选课 管理 系统 开发