C#实现简单学生成绩管理系统
一、需求分析
本系统是一个简单的学生成绩管理系统,包括学生信息录入,成绩录入,成绩查询和统计等功能。
软件运行需求:.Net Framework 4.0以上
二、技术选型
- 编程语言:C#
- 数据库:MS SQL Server
- 开发环境:Visual Studio 2017以上版本
三、数据库设计
本系统需要一个用于存储学生信息和成绩的数据库。学生信息表和成绩表需要建立主外键关系,并设置级联删除和更新。
学生信息表设计如下:
CREATE TABLE [dbo].[Students](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[Gender] [nvarchar](2) NOT NULL,
[Grade] [nvarchar](50) NOT NULL,
[Major] [nvarchar](50) NOT NULL,
[Class] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_Students] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
成绩表设计如下:
CREATE TABLE [dbo].[Grades](
[Id] [int] IDENTITY(1,1) NOT NULL,
[StudentId] [int] NOT NULL,
[Math] [decimal](18, 2) NULL,
[English] [decimal](18, 2) NULL,
[Physics] [decimal](18, 2) NULL,
CONSTRAINT [PK_Grades] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
ALTER TABLE [dbo].[Grades] WITH CHECK ADD CONSTRAINT [FK_Grades_Students] FOREIGN KEY([StudentId])
REFERENCES [dbo].[Students] ([Id])
ON DELETE CASCADE
ON UPDATE CASCADE
四、界面设计
本系统主要包括四个页面,学生信息录入、成绩录入、成绩查询和成绩统计。
学生信息录入页面
学生信息录入页面需要输入学生的基本信息,包括姓名、性别、年级、专业和班级等。
成绩录入页面
成绩录入页面需要在录入学生信息后,录入学生的成绩信息,包括数学、英语、物理等科目的成绩。
成绩查询页面
成绩查询页面需要按照学生的学号或姓名查询学生的成绩信息。
成绩统计页面
成绩统计页面需要统计学生的平均分、最高分和最低分等数据。
五、程序设计
本系统需要实现以下功能:
1. 学生信息录入
2. 成绩录入
3. 成绩查询
4. 成绩统计
实现学生信息录入功能
public int AddStudent(string name, string gender, string grade, string major, string @class)
{
int result = 0;
string sql = "insert into Students (Name, Gender, Grade, Major, Class) values (@Name, @Gender, @Grade, @Major, @Class)";
using (SqlConnection conn = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@Name", name);
cmd.Parameters.AddWithValue("@Gender", gender);
cmd.Parameters.AddWithValue("@Grade", grade);
cmd.Parameters.AddWithValue("@Major", major);
cmd.Parameters.AddWithValue("@Class", @class);
conn.Open();
result = cmd.ExecuteNonQuery();
}
}
return result;
}
实现成绩录入功能
public int AddGrade(int studentId, decimal math, decimal english, decimal physics)
{
int result = 0;
string sql = "insert into Grades (StudentId, Math, English, Physics) values (@StudentId, @Math, @English, @Physics)";
using (SqlConnection conn = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@StudentId", studentId);
cmd.Parameters.AddWithValue("@Math", math);
cmd.Parameters.AddWithValue("@English", english);
cmd.Parameters.AddWithValue("@Physics", physics);
conn.Open();
result = cmd.ExecuteNonQuery();
}
}
return result;
}
实现成绩查询功能
public DataTable GetGrades(int studentId, string name)
{
DataTable dt = new DataTable();
string sql = "select Students.Id as 学号, Students.Name as 姓名, Math as 数学, English as 英语, Physics as 物理 " +
"from Grades join Students on Grades.StudentId = Students.Id where 1 = 1";
if (studentId > 0)
{
sql += " and Students.Id = " + studentId;
}
if (!string.IsNullOrEmpty(name))
{
sql += " and Students.Name like '%" + name + "%'";
}
using (SqlConnection conn = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
}
}
return dt;
}
实现成绩统计功能
public DataTable GetGradeStats()
{
DataTable dt = new DataTable();
string sql = "select avg(Math) as 数学平均分, avg(English) as 英语平均分, avg(Physics) as 物理平均分, max(Math) as 数学最高分, max(English) as 英语最高分, max(Physics) as 物理最高分, min(Math) as 数学最低分, min(English) as 英语最低分, min(Physics) as 物理最低分 from Grades";
using (SqlConnection conn = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
}
}
return dt;
}
六、总结
本系统实现了学生信息录入、成绩录入、成绩查询和成绩统计功能。本系统还有一些不足之处,比如没有加入用户权限控制,没有处理数据库连接异常,后续可以对这些进行完善。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现简单学生成绩管理系统 - Python技术站