资源描述
一 引言
在中国,各大中小学校各类信息管理系统并非一个新课题,但也有学校根本就没有信息任何管理系统,全部工作几乎还是手工操作来完成。计算机技术在日新月异发展,不过有很多学校,尤其是在西部贫困地域,学校种类管理全部仍然由手工操作来完成,这十分落后,效率极低,成本很大,而且极异犯错。伴随社会发展,信息化是社会进程肯定趋势,学校管理只有只有快、准、精、才能发挥其价值。 所以机器替换人力是肯定历史发展趋势,只有领导重视和支持才能从人工操作改为计算机自动化系统。人工操作必将被计算机替换。 有些学校虽使用了计算机,甚至管理系统,不过仍然存在很多问题,问题一日不处理,效率就一日提不上去。 还有,有系统很不完善四处是漏洞,能够说是千疮百孔,这么极不完善系统对管理来说是没有任何保障
学校学生成绩管理系统是针对数据库课程设计所做一个小型数据库。它也是一个教育单位不可缺乏部分,它内容对于学校决议者和管理者说全部至关关键,它能够为用户提供充足信息和快捷查询手段。能有效帮助学校和老师和管理员能够打击查询、修改、删除学生成绩信息,能够方便了解学生总体情况。同时在做课程设计过程中,能够巩固数据库知识,加强学生实际动手能力和提升学生综合素质十分必需。经过本试验达成以下目标
(1) 熟练掌握一个数据库系统SQL SERVER使用。
(2) 经过设计实际数据库系统应用课题,深入熟悉数据库管理系统操作技术,提升动手能力,提升分析问题和处理问题能力。
二 总体设计
1设计要求
系统名称:学生成绩管理系统
使用语言:C#程序设计语言
使用软件:Microsoft SQL Server 、Microsoft Visual Studio
针对给定数据库应用问题-学生成绩管理系统,全方面利用数据库原理课程所学知识,从系统需求分析着手,进行数据库概念设计、逻辑设计、物理设计、系统总体设计和模块设计、编程、调试,并在各个步骤中提供相关文档。
2 技术要求
关键进行数据库设计,并能实现简单前后台连接,即能够经过前台界面查询、录入、删除、修改数据。
系统功效基础要求:学生信息,包含学号,姓名,民族,性别,年纪等;课程信息,包含课程号、课程名,学分等;老师信息,包含老师编号、姓名,性别,民族,年纪,毕业院校,课程号等;成绩信息,包含学生学号,课程号,课程成绩等。
3 关键功效
关键提供管理员对学生信息、老师信息、课程信息及用户管理,图1所表示
管理员登录
学生管理
老师管理
课程管理
用户管理
学生信息添加
学生信息修改
学生信息删除
学生信息搜索
老师信息添加
老师信息修改
老师信息删除
老师信息搜索
课程信息添加
课程信息修改
课程信息删除
课程信息搜索
用户删除和注册
图1功效模块图
管理员登陆:每个用户能够注册成为管理员,对学生、课程及成绩信息进行管理。
学生管理:对学生信息进行添加,删除,修改,查询操作。
老师管理:对老师信息进行添加,删除,修改,查询操作。
课程管理:对课程信息进行添加,删除,修改,查询操作。
成绩管理:对学生成绩信息进行添加,删除,修改,查询操作。
用户管理:对用户进行删除操作。
4 可扩展性
能够适应应用要求改变和修改,含有灵活可扩充性。
5 安全性
含有较高安全性。系统对不一样用户提供不一样功效模块,只有含有高级权限部门管理者或维护人员用户才能对用户和图书信息进行增加、修改和删除等管理,通常读者用户只能查看图书信息和借阅情况。
还应含有一定保护机制,预防系统被恶意攻击,信息被恶意修改和窃取。有完善备份机制,假如系统被破坏应该能快速恢复。
三 数据库设计
1 四个表E-R实体模型图分析
用E-R图总体描述实体,以下图2所表示
教授
老师信息表
学生信息表
有
有
学习
课程表
学生成绩表
mNN
1
N
M
M
图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 建库代码
--创建数据库SU
create database SU;
--连接数据库SU
use 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
{
SqlConnection conn = 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 学生信息添加效果图
Protected void 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" "">
<html xmlns="" >
<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.Tables[0].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].北京:高等教育出版社,
[2]苗雪兰.《数据库系统原理及应用教程》[M].北京:机械工业出版社,
[3]张海藩.《软件工程》[M].北京:人民邮电出版社,
[4]杨冬青,马秀莉,唐世渭,数据库系统概念,北京;机械工业出版社,
展开阅读全文