Csql学生成绩管理系统方案.doc
一 引言在我国,各大中小学校的各类信息管理系统并非一个新的课题,但也有的学校根本就没有信息任何管理系统,所有的工作几乎还是手工操作来完成。计算机技术在日新月异的开展,但是有的很多学校,特别是在西部贫困地区,学校的种类管理都依然由手工操作来完成,这十分落后,效率极低,本钱很大,而且极异出错。随着社会的开展,信息化是社会进程的必然趋势,学校管理只有只有快、准、精、才能发挥其价值。 所以机器代替人力是必然的历史开展趋势,只有领导的重视和支持才能从人工操作改为计算机的自动化系统。人工操作必将被计算机代替。 有些学校虽使用了计算机,甚至管理系统,但是仍然存在很多问题,问题一日不解决,效率就一日提不上去。 还有,有的系统很不完善到处是漏洞,可以说是千疮百孔,这样极不完善的系统对管理来说是没有任何保障的学校学生成绩管理系统是针对数据库课程设计所做的一个小型数据库。它也是一个教育单位不可缺少的局部,它的容对于学校的决策者和管理者说都至关重要,它能够为用户提供充足的信息和快捷的查询手段。能有效的帮助学校和教师和管理员可以打击查询、修改、删除学生的成绩信息,能够方便了解学生总体情况。同时在做课程设计的过程中,可以巩固数据库知识,加强学生的实际动手能力和提高学生综合素质十分必要。通过本实验达到以下目的(1) 熟练掌握一种数据库系统SQL SERVER的使用。(2) 通过设计实际的数据库系统的应用课题,进一步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力。二 总体设计1设计要求系统名称:学生成绩管理系统使用语言:C#程序设计语言使用软件:Microsoft SQL Server 2005、Microsoft Visual Studio 2005针对给定的数据库应用问题-学生成绩管理系统,全面运用数据库原理课程所学知识,从系统需求分析着手,进展数据库的概念设计、逻辑设计、物理设计、系统的总体设计和模块设计、编程、调试,并在各个环节中提供相关的文档。2 技术要求主要进展数据库设计,并能实现简单的前后台连接,即可以通过前台界面查询、录入、删除、修改数据。 系统功能根本要求:学生信息,包括学号,民族,性别,年龄等;课程信息,包括课程号、课程名,学分等;教师信息,包括教师编号、,性别,民族,年龄,毕业院校,课程号等;成绩信息,包括学生学号,课程号,课程成绩等。3 主要功能主要提供管理员对学生信息、教师信息、课程信息与用户的管理,如图1所示管理员登录学生管理教师管理课程管理用户管理学生信息添加学生信息修改学生信息删除学生信息搜索教师信息添加教师信息修改教师信息删除教师信息搜索课程信息添加课程信息修改课程信息删除课程信息搜索用户删除和注册 图1功能模块图管理员登陆:每个用户可以注册成为管理员,对学生、课程与成绩信息进展管理。学生管理:对学生信息的进展添加,删除,修改,查询操作。教师管理:对教师信息的进展添加,删除,修改,查询操作。课程管理:对课程信息的进展添加,删除,修改,查询操作。成绩管理:对学生成绩信息的进展添加,删除,修改,查询操作。用户管理:对用户进展删除操作。4 可扩展性能够适应应用要求的变化和修改,具有灵活的可扩大性。5 安全性具有较高的安全性。系统对不同的用户提供不同的功能模块,只有具有高级权限的部门管理者或维护人员用户才能对用户和图书信息进展增加、修改和删除等管理,一般的读者用户只能查看图书信息和借阅情况。还应具有一定的保护机制,防止系统被恶意攻击,信息被恶意修改和窃取。有完善的备份机制,如果系统被破坏应该能快速恢复。三 数据库设计1四个表的E-R实体模型图分析用E-R图总体描述实体,如下列图2所示教授 教师信息表学生信息表有有学习课程表学生成绩表mNN1NMM图2 E-R 图在教学管理中,学校开设假设干门学科,一门课程可以由多个教师来教,每个学生也需要学习其中的几门课程,因此,教学管理中涉与的对象有学生,教师和课程。用E-R图描述他们之间的联系。其中学生和课程之间是多对多的关系,教师和课程是多对一有关系2 设计数据表通过E-R图分析,现在已经对数据库有一个很清梦的认识,此学生成绩信息表中有5个表需要建立学生信息表(Student),包括学号(Sno)、(Sname)、民族(Snation)、性别(Ssex)、年龄(Sage);教师信息表(Teacher),包括教师编号(Tno)、(Tname)、性别(Tsex)、年龄(Tage)、毕业院校(Tcollege)、讲授课程(Ton);课程信息表(Course), 包括课程编号(Cno)、课程名称(Cname),课程学分(Cgrade)学生成绩表(Grade)、 包括学生学号(Sno)、课程编号(Cno)、成绩(Ggrade)用户表(Users), 包括用户名(Uname)、密码(Umima)3 实际操作建立数据库US,建立以下各表1学生信息表包括学号、民族、性别、年龄等,用于存储学生的主要信息,可以通过前台对学生表数据进展增加、删除、修改、查询操作。学生表的主键是Sno学生学号。学生表是本数据库的重要信息表。表1 学生表2 教师根本信息包括教师编号、性别、年龄、毕业院校、讲授课程等。用于存储教师的主要信息,可以通过前台对课程表数据进展增加、删除、修改、查询操作。教师表的主键是Tno教师编号,外键是Ton课程号教师表是本数据库的重要信息表。 表2 教师表3 课程根本信息包括课程编号、课程名称,课程学分等,用于存储课程的主要信息,可以通过前台对课程表数据进展增加、删除、修改、查询操作。课程表的主键是Cno教师编号,外键是Ton课程号,课程表是本数据库的重要信息表。表3 课程表4 学生成绩信息包括学生学号、课程编号、成绩等。用于存储学生成绩的主要信息,可以通过前台对成绩表数据进展增加、删除、修改、查询操作。课程表的主键是Sno学生学号,Cno课程编号,成绩表是本数据库的重要信息表。表4 成绩表5 用户管理信息包括用户名、密码等,用于存储用户信息,在登录时进展验证。表5 用户表四 各功能模块设计1建库代码-创建数据库SUcreate database SU;-连接数据库SUuse SU;-创建Student表create table Student( Sno char(10) primary key, Sname varchar(8) not null, Snation varchar(20) not null, Ssex char(2) check(Ssex in('男','女'), Sage smallint check(Sage>=5 and Sage<=30);-创建Course表create table Course( Cno char(3) primary key, Cname char(36) not null, Cgrade smallint, check(Cgrade>=0 and Cgrade<=6),)-创建Teacher表create table Teacher( Tno char(3) primary key, Tname varchar(8) not null, Tsex char(2) check(Tsex in('男','女'), Tage smallint check(Tage>=25 and Tage<=60), Tcollege varchar(36), Ton char(3), foreign key(Tno) references Course(Cno);-创建Grade表create table Grade( Sno char(10), Cno char(3), Ggrade int check(Ggrade>=0 and Ggrade<=100) primary key(Sno,Cno) foreign key(Sno) references Student(Sno) on delete cascade on update cascade, foreign key(Cno) references Course(Cno) on delete cascade on update cascade,)-创建用户表create table users( Uname varchar(8) primary key, Umima varchar(20)not null)2 C#后台主要代码1学生信息添加模块,输入要添加的学生信息,点击添加键即可将学生信息添加到学生表中,具体效果如图3所示图3 学生信息添加效果图 try conn.Open(); string sql = "select * from Student where Sno='" + this.studentID.Text + "'" SqlCommand cmd = new SqlCommand(sql, conn); SqlDataReader sdr = cmd.ExecuteReader();if (sdr.Read() = true) Response.Write("<script>window.alert('该学生已经存在,请换名!');</script>"); conn.Close(); else conn.Close(); conn.Open(); cmd.CommandText = "insert into Student(Sno,Sname,Snation,Ssex,Sage) values('" + this.studentID.Text + "','" + this.studentName.Text + "','" + this.studentMZ.Text + "','" + this.DropDownList1.Text + "','" + this.studentAge.Text + "')" cmd.ExecuteNonQuery(); conn.Close(); Response.Write("<script>window.alert('恭喜您,添加成功!');</script>"); catch (Exception ex) Response.Write("<script>window.alert('添加失败!');</script>"); 2学生信息删除模块,直接点击删除键,那么将该学生信息从学生表中删除,具体效果如图4所示图4 学生信息删除效果图protected void shanchu(object sender, EventArgs e) conn.Open(); string sql = "delete from Student where Sno='" + this.StudentID.Text + "'" SqlCommand cmd = new SqlCommand(sql, conn); cmd.ExecuteNonQuery(); conn.Close(); Response.Write("<script>window.alert('删除成功!');</script>");(3) 学生信息修改模块,修改学生信息,点击提交键,具体效果如图5所示图5 学生信息编辑效果图public partial class ST_studentmodify : System.Web.UI.Page SqlConnectionconn = new SqlConnection(ConfigurationSettings.AppSettings"connString"); protected void Page_Load(object sender, EventArgs e) if (!this.IsPostBack) string UserId = this.Request.QueryString"id".ToString(); SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings"connString"); conn.Open(); string sql = "select * from student where Sno='" + UserId + "'" SqlCommand cmd = new SqlCommand(sql, conn); SqlDataReader sdr = cmd.ExecuteReader(); if (sdr.Read() this.StudentID.Text = sdr"Sno".ToString(); this.StudentName.Text = sdr"Sname".ToString(); this.StudentMZ.Text = sdr"Snation".ToString(); this.DropDownList1.Text = sdr"Ssex".ToString(); this.StudentAge.Text = sdr"Sage".ToString(); conn.Close(); protected void tijiao(object sender, EventArgs e) conn.Open(); string sql = "update Student set Sno='" + this.StudentID.Text + "',Sname='" + this.StudentName.Text + "',Snation='" + this.StudentMZ.Text + "', Ssex='" + this.DropDownList1.Text + "',Sage='" + this.StudentAge.Text + "'where Sno='" + this.StudentID.Text + "'"SqlCommand cmd = new SqlCommand(sql, conn);cmd.ExecuteNonQuery();conn.Close(); Response.Write("<script>window.alert('修改成功!');</script>"); (4) 学生信息搜索模块,输入要查询的学生的学号,点出搜索即可,具体效果如图6所示图6 学生信息搜索效果图protected void ButtonSearch_Click(object sender, EventArgs e) SqlConnection con = new SqlConnection(ConfigurationSettings.AppSettings"connString"); string sql = "" if (this.studentID.Text = "") sql = "select * from Student where Sno like '%'" else sql = "select * from Student where Sno ='" + this.studentID.Text + "'" DataSet ds = new DataSet(); con.Open(); SqlDataAdapter sda = new SqlDataAdapter(sql, con); sda.Fill(ds); GridView1.DataSource = ds; GridView1.DataBind();(5) 登录后台代码,具体效果如图7所示图7 学生信息添加效果图Protectedvoid LoginOK_Click(object sender, ImageClickEventArgs e) SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings"connString"); conn.Open(); string sql = "select * from Users where Uname='" + this.UsersName.Text + "' and Umima='" + this.UsersPwd.Text + "'" SqlCommand cmd = new SqlCommand(sql, conn); SqlDataReader sdr = cmd.ExecuteReader(); if (sdr.Read() = true) conn.Close(); Response.Redirect("Default.aspx"); else Response.Write("<script>window.alert('您输入的用户密码有误!');</script>"); (6) 学生信息显示前台与后台代码前台代码:<% Page Language="C#" AutoEventWireup="true" CodeFile="ST_student.aspx.cs" Inherits="ST_studest" %><!DOCTYPE html PUBLIC "-/W3C/DTD XHTML 1.0 Transitional/EN" ".w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=".w3.org/1999/xhtml" ><head runat="server"> <title>无标题页</title></head><body> <form id="form1" runat="server"> <div> <table align="center" width="95%"> <tr> <td bgcolor="#999999"> 学生信息显示:</td> </tr> <tr> <td> 学生学号:<asp:TextBox ID="studentID" runat="server"></asp:TextBox> <asp:Button ID="ButtonSearch" runat="server" OnClick="ButtonSearch_Click" Text="搜索" /></td> </tr> <tr> <td style="height: 20px"> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Width="100%" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"> <Columns> <asp:BoundField DataField="Sno" HeaderText="学号" /> <asp:BoundField DataField="Sname" HeaderText="" /> <asp:BoundField DataField="Snation" HeaderText="民族" /> <asp:BoundField DataField="Ssex" HeaderText="性别" /> <asp:BoundField DataField="Sage" HeaderText="年龄" /> <asp:TemplateField HeaderText="修改/删除"> <ItemTemplate> <a href="ST_studentmodify.aspx?id=<%#DataBinder.Eval(Container.DataItem,"Sno")%>"> 删除/修改</a> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <asp:LinkButton ID="Stianjia" runat="server" PostBackUrl="/ST_studentadd.aspx">学生添加</asp:LinkButton></td> </tr> </table> </div> </form></body></html>后台代码:using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;public partial class ST_studest : System.Web.UI.Page DataView ddd; protected void Page_Load(object sender, EventArgs e) SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings"connString"); conn.Open(); string sql = "select * from Student " SqlDataAdapter sda = new SqlDataAdapter(sql, conn); DataSet ds = new DataSet(); sda.Fill(ds); ddd = ds.Tables0.DefaultView; conn.Close(); this.GridView1.DataSource = ddd; this.GridView1.DataBind(); protected void ButtonSearch_Click(object sender, EventArgs e) SqlConnection con = new SqlConnection(ConfigurationSettings.AppSettings"connString"); string sql = "" if (this.studentID.Text = "") sql = "select * from Student where Sno like '%'" else sql = "select * from Student where Sno ='" + this.studentID.Text + "'" DataSet ds = new DataSet(); con.Open(); SqlDataAdapter sda = new SqlDataAdapter(sql, con); sda.Fill(ds); GridView1.DataSource = ds; GridView1.DataBind(); protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 五 心得体会经过一周的时间,在教师的指导下和同学们的帮助下成功的做出了学生成绩管理数据库。通过在这个数据库中建立的四个表,继而在这四个表的根底上做出的添加记录、用查询语句来查看记录,添加字段,创建自定义数据类型等操作来巩固了我们对数据库根本原理和根底理论的理解,掌握数据库应用系统设计开发的根本方法,进一步,提高了我们运用所学知识的能力回顾此次学生管理数据库课程设计,至今仍感慨颇多,确实,从理论到实践,在这一周的日子里,可以说是苦多于甜,但是可以学到很多东西,同时不仅可以巩固以前所学过的知识,而且学到了书本上所没有学到的知识。通过这次课程设计使我懂得了理论与实践相结合是很重要的,只有理论知识是远远不够的,只有把所学到的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,这毕竟第一次做的,难免会遇到各种各样的问题,同时在设计的过程中也发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不有够结实,比如主键约束,添加字段,创建自定义类型的一些只看书觉得没有问题的,但一做具体的操作就发现了问题。知识的获得是无止境的,只要想学,只要行动,没有什么会难倒我们的。回首这一周的课程设计,尝尽酸甜苦辣同时也教师对我们的不懈帮助,学校给了我们这一次实践的机会,也同学们的关怀,这些美好的回忆将是我一生最在的财富。六 参考文献1王珊,萨师煊数据库系统概论(第4版) M:高等教育,2006 2苗雪兰数据库系统原理与应用教程M:机械工业,20053海藩.软件工程M.:人民邮电,20034冬青,马秀莉,唐世渭,数据库系统概念,;机械工业,200617 / 17