最新学生选课管理系统的开发

  • 格式:doc
  • 大小:1.16 MB
  • 文档页数:38

第八章项目实训-学生选课管理系统的开发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张个表,下面介绍这些表的结构。

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

表8.1 管理员信息表表tbStudent用来保存学生信息如表8.2所示表8.2 学生信息表表tbTeacher用来保存教师信息如表8.3所示。

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

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

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

连接数据库代码(代码位置:光盘/ElectiveSystem/web.config)如下:<configuration><connectionStrings><add name="sqlconn"providerName="System.Data.SqlClient"connectionString="server=.;database=dbChooseCourse;uid=ChooseCourse;pwd=ChooseCourse"/></connectionStrings>......</configuration>8.6 公共类的编写开发项目中以类的形式来组织、封装一些常用的方法和事件,不仅可以提高代码的复用率,也大大方便了代码的管理。

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

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

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

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

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

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

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

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

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

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

图8-5 “添加新项”对话框图2.RamdomImg类(代码位置:光盘/ElectiveSystem/App_Code/RandomImg.cs)RamdomImg类主要完成一些与验证码相关的功能,比如生成随机验证码字符串、生成验证码的图片等等,其中主要方法包括GenerateCheckCode()、CreateCheckCodeImage(),下面我们将对这些方法分别进行详细讲解。

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

其代码如下:///<summary>///生成验证码///</summary>///<returns>验证码字符串</returns>public static string GenerateCheckCode(){int number;char code;string checkCode = String.Empty;System.Random random = new Random();for (int i = 0; i < 5; i++){number = random.Next();if (number % 2 == 0)code = (char)('0' + (char)(number % 10));elsecode = (char)('A' + (char)(number % 26));checkCode += code.ToString();}return checkCode;}CreateCheckCodeImage(string checkCode)方法CreateCheckCodeImage方法用于给生成的随机验证码加上背景图片。

其代码如下:///<summary>///生成验证码图片///</summary>///<param name="checkCode">验证码字符串</param>public static void CreateCheckCodeImage(string checkCode){if (checkCode == null || checkCode.Trim() == String.Empty)return;System.Drawing.Bitmap image = newSystem.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);Graphics g = Graphics.FromImage(image);//生成随机生成器Random random = new Random();//清空图片背景色g.Clear(Color.White);//画图片的背景噪音线for (int i = 0; i < 25; i++){int x1 = random.Next(image.Width);int x2 = random.Next(image.Width);int y1 = random.Next(image.Height);int y2 = random.Next(image.Height);g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);}Font font = new System.Drawing.Font("Arial", 12,(System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));System.Drawing.Drawing2D.LinearGradientBrush brush = newSystem.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0,image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);g.DrawString(checkCode, font, brush, 2, 2);//画图片的前景噪音点for (int i = 0; i < 100; i++){int x = random.Next(image.Width);int y = random.Next(image.Height);image.SetPixel(x, y, Color.FromArgb(random.Next()));}//画图片的边框线g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);System.IO.MemoryStream ms = new System.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()方法,下面进行详细介绍。