简单学生信息管理系统实现
设计要求
熟练掌握使用 SQL 语句设计数据库的方法,实现学生管理系统。
- 新生入学信息增加,学生信息修改。
- 课程信息维护。
- 录入学生成绩,修改学生成绩。
- 按系统计学生的平均成绩、最好成绩、最差成绩、优秀率、不及格人数。
- 按系对学生成绩进行排名,同时显示出学生、课程和成绩信息。
- 输入学号,显示该学生的基本信息和选课信息。
系统总体框架
系统主要分为五个部分:学生管理系统(主界面)、学生信息界面、课程信息界面、学生成绩界面、选课信息界面。并使用win form进行系统实现,因为win form能与数据库(SQL Server)进行良好的数据交互,并且有美观的界面。
各模块设计
主界面
在此界面主要实现了四个板块的入口
学生信息界面(按钮1)
在此界面主要展示了现有学生的所有信息,并只需在框内填入相关信息便可实现对这些信息的更新维护以及修改。
// 部分实现代码(修改信息按钮)
string n1 = textBox1.Text.Trim();
string n2 = textBox2.Text.Trim();
string n3 = textBox3.Text.Trim();
string n4 = textBox4.Text.Trim();
string n5 = textBox5.Text.Trim();
const string ConnectionString = "数据库连接字符串";
SqlConnection con = new SqlConnection(ConnectionString);
try
{
if ((n1 == "") | (n2 == "") | (n3 == "") | (n4 == "") | (n5 == ""))
{
string message = null;
if (message == null)
{
throw new MyException("输入不能为空");
}
}
con.Open();
string insertStr = "UPDATE Student SET Sname = '" + n2 + "' ,Ssex = '" + n3 + "' ,Sage = '" + n4 + "' ,Sdept = '" + n5 + "' where Sno = '" + n1 + "'";
SqlCommand sqlommand = new SqlCommand(insertStr, con);
sqlommand.ExecuteNonQuery();
MessageBox.Show("修改成功!");
string selectall = "select * from Student";
SqlCommand sqlCommand = new SqlCommand(selectall, con);
SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();
BindingSource bindingSource = new BindingSource();
bindingSource.DataSource = sqlDataReader;
dataGridView1.DataSource = bindingSource;
}
catch
{
MessageBox.Show("输入错误,学号不存在");
}
finally
{
con.Close();
}
其他界面
因为其他界面与学生信息界面类似,所以不作过多介绍,只进行简单展示:
项目注意事项
与数据库的连接
因为项目使用平台为VS win form,所以连接方式十分简单。
步骤1:在本机安装sql Server(过程略)
步骤2:在sql Server中建立我们所需要的数据库及表或视图(过程略)
步骤3:VS->工具->连接到数据库->选择我们之前所建立的数据库
步骤4:使用数据库连接字符串,在代码段中使用sql connection进行连接
字符串连接实例,可查看学生信息界面,代码段部分
同时在VS中也自带SQL相关服务,可在VS组件部分安装,在本文中不进行过多说明。
数据库相关表项设计
课程信息
表建立sql语句
CREATE TABLE [dbo].[Course] (
[Cno] CHAR (4) NOT NULL,
[Cname] CHAR (40) NULL,
[Cpno] CHAR (4) NULL,
[Ccredit] SMALLINT NULL,
PRIMARY KEY CLUSTERED ([Cno] ASC),
FOREIGN KEY ([Cpno]) REFERENCES [dbo].[Course] ([Cno])
);
成绩信息
表建立sql语句
扫描二维码关注公众号,回复:
12438038 查看本文章
CREATE TABLE [dbo].[SC] (
[Sno] CHAR (9) NOT NULL,
[Cno] CHAR (4) NOT NULL,
[Grade] SMALLINT NULL,
PRIMARY KEY CLUSTERED ([Sno] ASC, [Cno] ASC),
FOREIGN KEY ([Sno]) REFERENCES [dbo].[Student] ([Sno]),
FOREIGN KEY ([Cno]) REFERENCES [dbo].[Course] ([Cno])
);
学生信息
表建立sql语句
CREATE TABLE [dbo].[Student] (
[Sno] CHAR (9) NOT NULL,
[Sname] CHAR (20) NULL,
[Ssex] CHAR (2) NULL,
[Sage] SMALLINT NULL,
[Sdept] CHAR (20) NULL,
[Scholarship] CHAR (2) NULL,
PRIMARY KEY CLUSTERED ([Sno] ASC),
UNIQUE NONCLUSTERED ([Sname] ASC)
);
可改进方向
- 因为时间有限,在sql语句方面并没有进行很多过深的考虑,函数,索引等方法使用较少。当进行大型项目时,这是必须要考虑的方面。
- 系统进入前,可使用用户名,密码登录方式,只需增加一个用户登录信息表,因为实现较为重复,所以本简单系统并没有采用。
备注
因为本项目只是一个数据库的简单实验,所以在设计上并没有使用很多复杂操作,之后也会将项目源码发送上来。
有任何问题或设计错误,都可在评论区进行交流~~