当前位置:文档之家› 学生信息管理系统报告及总结

学生信息管理系统报告及总结

数据库系统课程设计报告题目:学生学籍信息管理系统课程代号: 8888888课程名称:数据库系统课程设计学号:8888888888姓名:8888888888班级:8888888888指导教师:88888888完成日期:2011年12月目录第一章引言 (4)第二章系统分析与设计 (4)2.1 需求分析 (4)2.1.1 用户需求 (4)2.1.2划分功能模块 (5)2.1.3 数据流图 (5)2.1.4数据字典 (6)2.2 数据库概念结构设计 (8)2.3 数据库逻辑结构设计 (9)2.3.1 关系模型 (10)2.3.1关系模式的优化 (10)2.4 数据库创建 (10)2.5 系统总体结构设计 (12)第三章系统开发及实现 (12)3.1 连接数据库 (12)3.1.1 连接数据库的字符串 (12)3.1.2打开和关闭数据库的语句 (13)3.2 登录界面 (14)3.2.1关键实现算法 (14)3.2.2设计算法 (16)3.3 主界面 (19)3.3.1显示当前时间栏 (19)3.4权限设置 (20)3.5修改登录密码 (21)第四章总结 (24)参考文献 (24)第一章引言21世纪是信息产业的时代,全球信息电子化的潮流势不可挡,计算机被广泛应用使我们的经济和社会生活因此发生了深刻的变革。

与此同时,我国的教育事业蓬勃发展,升学率普遍提高,各类学校校规模不断扩大,对于学生管理工作的高效性和规范性提出了更高的要求。

随着我国教育体制改革的深入进行,教育系统得到了前所未有的发展。

学生管理正在逐步迈向管理信息现代化。

但是我国的学生管理信息化水平还处在初级阶段,主要表现在对学生的交费管理、学生的档案管理还是采用原有的人工管理方式。

学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长。

由于大学生类别和专业的设置的多样化,大学生的学籍管理历来是非常繁琐和复杂的工作。

面对庞大的信息量,这时的人工管理几乎无法实现,在这种情况下用数据库进行管理变的尤为必要,这可以发挥计算机的优势,就需要有学生信息管理系统来提高学生管理工作的效率.通过这样的系统,可以做到信息的规范管理,科学统计和快速的查询,从而减少管理方面的工作量和减少人为的错误。

本文的设计是依据C#的“三层架构”的关键技术,参考了国内学校的学生学籍管理信息系统,并结合本学校的实际情况,提出“设计简单、使用方便、安全性高”的设计理念,且依据现代化校园的发展而设计的基于C#的学生学籍管理软件开发。

系统分为学生信息管理、学生成绩管理、系统管理和用户管理三大模块,具备信息录入/修改/删除/查询、成绩录入/修改/删除/查询、添加/修改/删除系统用户和账户密码管理等功能。

它能方便老师、学生查询信息。

整体上实现了全校学生信息的数字化、信息化管理。

该系统是在Windows XP系统下完全采用C#+SQL2008开发的一套学生学籍管理系统。

用户需要到指定的计算机上使用本系统。

第二章系统分析与设计2.1需求分析2.1.1 用户需求本系统是针对高等院校的学生学籍管理,因此学籍信息管理系统的用户包括系统管理员和学生。

主要涉及学生信息、成绩信息以及用户信息。

实现的具体功能如下:●基本信息管理——系统管理员负责对各种基本信息的录入、修改、删除等操作。

●学生成绩管理——系统管理员负责对学生成绩的录入、修改、删除等操作,学生可以查询各科成绩。

●信息查询——学生可以查询基本信息和各科的考试成绩。

●系统用户管理——系统管理员负责用不同的权限来限制不同用户对系统的使用。

以上是用户对系统的基本的功能要求,此外用户还要求系统的效率要高,查询速度要快,比较小的冗余,易维护,具有较高的数据安全性。

2.1.2 划分功能模块根据系统功能的需求分析和高等院校学籍管理的特点,经过模块化的分析得到如下系统功能模块:学生模块:查询成绩、选课信息教师模块:修改学生成绩、选课信息、查询成绩、选课信息管理员模块:修改用户权限、密码、修改学生成绩、选课信息、查询成绩、选课信息2.1.3数据流图2.1.4 数据字典数据项数据字典是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果,数据字典是对系统所用到的所有表结构的描述,学籍管理的主要数据见下表。

表 4 用户信息表序号字段别名数据类型数据长度码1 User_Name 用户名nvarchar 10 Y2 User_Pwd 登陆密码nvarchar 8 N3 User_Statues 状态nvarchar N4 User_Power 权限nvarchar 20 N 2.2数据库概念结构设计(给出E-R图)分的E-R图:总的E-R图:2.3数据库逻辑结构设计(给出关系模式并用表格描述关系模式的属性名、类型、完整性约束等)将E-R图转换为关系模型实际上就是要奖实体型、实体的属性和实体型之间的联系转换为关系模式,这种转换一般遵循如下原则:一个实体型转换为一个关系模式。

实体的属性就是关系的属性,实体的码就是关系的码。

对于实体型间的联系则有以下不同的情况:(1)一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。

如果转换为一个独立的关系模式,则与该联系相连的个实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的侯选码。

如果与某一端实体对应的关系模式合并,则需要在关系模式的属性中加入另一个关系模式的码和联系本身的属性。

(2)一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。

如果转换为一个独立的关系模式,则与该联系相连的个各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。

(3)一个m:n联系转换为一个关系模式。

与该联系相连的个实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。

(4)3个或3个以上实体间的一个多元联系可以转换为一个关系模式。

与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。

(5)具有相同码的关系模式可合并。

由ER图可见:图中有四个实体:学生,管理员,考试和科目;四个关系:管理员管理学生关系,学生选课关系,学生参加考试关系,科目与考试成绩的对应关系。

2.3.1 关系模型将概念结构设计阶段设计好的基本E-R图转换为关系模型,如下所示:学生基本信息表:S(Stu_Id Stu_Name Stu_Gender Stu_Nation Stu_Birth Stu_Statuse Class_Id Stu_Remark)课程基本信息表:C(Cour_Id Cour_Name Cour_Xuefen Cour_Collo Cour_Dept Cour_Teacher Cour_Remark )学生成绩信息表:P (Stu_Id Cour_Id Grade Sco_Time )管理员信息表: U (User_Name User_Pwd User_Statues User_Power )对应的属性分别为:学生编号,姓名,性别,民族,出生年月,状态,班级,备注课程号,课程名称,学分,学院,系别,教师,备注学生编号,课程号,成绩,考试时间用户名,登陆密码,状态,权限2.3.2关系模式的优化学生基本信息表:S(Stu_Id Stu_Name Stu_Gender Stu_Nation Stu_Birth Stu_Statuse Class_Id Stu_Remark)该关系模式的码为Stu_Id,由于只有一个码,所以不存在非主属性对码的部分函数依赖,可以达到2NCF。

另外,该关系模式的函数依赖为: Stu_Id—> Stu_Name Stu_Id—>Stu_Gender Stu_Id—> Stu_Nation Stu_Id—> Stu_Birth Stu_Id—> Stu_Statuse Stu_Id—> Class_Id Stu_Id—>Stu_Remark ,其间不存在传递依赖,故学生表可达到3NCF.2.4数据库创建(创建表的界面、创建外码的界面)Users 表:Student 表:Score 表:Course 表:2.5系统总体结构设计(给出系统总体结构图)第三章系统开发及实现3.1连接数据库3.1.1连接数据库的字符串:private void DBConnect(){conn = "Data Source=.;Initial Catalog=StudentManage;Integrated Security=True";sqlconn = new SqlConnection(conn);}其中,. 为本机服务器名,StudentManage为数据库名。

3.1.2 打开和关闭数据库的语句根据参数传来的SQL语句,执行增、删、改操作;class DataAccess{protected SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=StudentManage;Integrated Security=True");public SqlDataReader GetReader(string sql){SqlCommand cmd = new SqlCommand(sql, conn);SqlDataReader myDataReader = null;try{conn.Open();myDataReader =cmd.ExecuteReader(CommandBehavior.CloseConnection);}catch (Exception ex){if (myDataReader != null) myDataReader.Close();conn.Dispose();cmd.Dispose();throw new Exception(ex.ToString());}return myDataReader;}}3.2登录界面3.2.1关键实现算法using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace StudentManage{public partial class FrmLogin : Form{public FrmLogin(){InitializeComponent();}private void btnOK_Click(object sender, EventArgs e){if (this.txtName.Text == string.Empty){MessageBox.Show("请输入用户名!");this.txtName.Focus();return;}else if (this.txtPwd.Text == string.Empty){MessageBox.Show("请输入密码!");this.txtPwd.Focus();return;}else{//设置数据库连接字符串string connectionString = "Data Source=.;InitialCatalog=StudentManage;Integrated Security=True";//建立连接SqlConnection conn;conn = new SqlConnection(connectionString);conn.Open();//读入所输入的用户名的密码SqlCommand cmd;cmd = conn.CreateCommand();String sql = "select User_Name,User_Pwd from Users where (User_Name =''' + txtName.Text.Trim() + ''')";mandText = sql;SqlDataReader myDataReader = cmd.ExecuteReader();//判断用户是否存在if (myDataReader.HasRows){MessageBox.Show("用户不存在,请重新输入!");}//读取数据库中的内容,并与当前输入比较while (myDataReader.Read()){//判断用户输入与数据库内容是否匹配if(myDataReader["User_Pwd"].ToString().Trim() != txtPwd.Text.Trim()){MessageBox.Show("用户名密码不正确,请重新输入!");txtName.Focus();return;}}FrmMain frmmain = new FrmMain();frmmain.Show();this.Hide();myDataReader.Close();conn.Close();}}private void btnCancel_Click(object sender, EventArgs e){this.Close();}}}3.2.2设计算法namespace StudentManage{partial class FrmLogin{///<summary>/// Required designer variable.///</summary>private ponentModel.IContainer components = null;///<summary>/// Clean up any resources being used.///</summary>///<param name="disposing">true if managed resources should bedisposed; otherwise, false.</param>protected override void Dispose(bool disposing){if (disposing && (components != null)){components.Dispose();}base.Dispose(disposing);}#region Windows Form Designer generated code///<summary>/// Required method for Designer support - do not modify/// the contents of this method with the code editor.///</summary>private void InitializeComponent(){bel1 = new bel();bel2 = new bel();this.txtName = new System.Windows.Forms.TextBox();this.txtPwd = new System.Windows.Forms.TextBox();this.btnOK = new System.Windows.Forms.Button();this.btnCancel = new System.Windows.Forms.Button();this.SuspendLayout();//// label1//bel1.AutoSize = true;bel1.Location = new System.Drawing.Point(32, 51); = "label1";bel1.Size = new System.Drawing.Size(53, 12);bel1.TabIndex = 0;bel1.Text = "用户名:";//// label2//bel2.AutoSize = true;bel2.Location = new System.Drawing.Point(34, 105); = "label2";bel2.Size = new System.Drawing.Size(41, 12);bel2.TabIndex = 1;bel2.Text = "密码:";//// txtName//this.txtName.Location = new System.Drawing.Point(99, 48); = "txtName";this.txtName.Size = new System.Drawing.Size(100, 21);this.txtName.TabIndex = 2;//// txtPwd//this.txtPwd.Location = new System.Drawing.Point(99, 102); = "txtPwd";this.txtPwd.PasswordChar = '*';this.txtPwd.Size = new System.Drawing.Size(100, 21);this.txtPwd.TabIndex = 3;//// btnOK//this.btnOK.Location = new System.Drawing.Point(34, 172); = "btnOK";this.btnOK.Size = new System.Drawing.Size(75, 23);this.btnOK.TabIndex = 4;this.btnOK.Text = "登录";eVisualStyleBackColor = true;this.btnOK.Click += newSystem.EventHandler(this.btnOK_Click);//// btnCancel//this.btnCancel.Location = new System.Drawing.Point(161, 172); = "btnCancel";this.btnCancel.Size = new System.Drawing.Size(75, 23);this.btnCancel.TabIndex = 5;this.btnCancel.Text = "取消";eVisualStyleBackColor = true;this.btnCancel.Click += newSystem.EventHandler(this.btnCancel_Click);//// FrmLogin//this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode =System.Windows.Forms.AutoScaleMode.Font;this.ClientSize = new System.Drawing.Size(284, 262);this.Controls.Add(this.btnCancel);this.Controls.Add(this.btnOK);this.Controls.Add(this.txtPwd);this.Controls.Add(this.txtName);this.Controls.Add(bel2);this.Controls.Add(bel1); = "FrmLogin";this.Text = "FrmLogin";this.ResumeLayout(false);this.PerformLayout();}#endregionprivate bel label1;private bel label2;private System.Windows.Forms.TextBox txtName;private System.Windows.Forms.TextBox txtPwd;private System.Windows.Forms.Button btnOK;private System.Windows.Forms.Button btnCancel;}}3.3主界面3.3.1显示当前时间栏关键代码:private void timer1_Tick(object sender, EventArgs e){toolStripStatusLabel2.Text ="现在时间是:"+DateTime.Now.ToString();}3.4权限设置关键算法:private string SetUserPowersByCheckBox(){string powers = "";Char[] ch = new Char[18];int i = 13;foreach (Control o in this.gbChecks.Controls){if (.Substring(0, 4) == "check"){if (((CheckBox)o).Checked == true){ch[i] = '1';}else{ch[i] = '0';}i--;}}foreach (Char c in ch){powers += c.ToString();}return powers;}3.5修改登录密码在修改密码的时候,有一关键的算法就是得先验证原密码的正确性,这是为了防止他人改变用户的密码,这样保证了信息的安全性。

相关主题