这篇文章仅是对我这一学期所学知识的总结与记录,供我自己查漏补缺,其中难免有设计不合理之处。

摘要

学生成绩管理系统主要提供用户登录、信息查询及修改、成绩查询、学生选课、教师排课等许多功能,是一个方便管理的网上的信息查阅平台。学生可以通过该系统查阅与自己相关信息(查询成绩、选课、查询信息、修改密码等)。教师可以通过学生管理系统查看自己的信息以及排课信息,还可以自己选择授课等。系统管理员可以添加、删除、修改、教师和学生的信息,进行课程的开设以及成绩的登记。

系统概述

数据库设计与操作部分:通过本系统可以对学生个人信息、课程和任课教师信息、选课信息进行管理及维护。学生可以通过本系统进行个人信息查询、考试成绩查询以及完成选课操作。教师可以通过学生管理系统查看自己的信息以及排课信息,选择对哪门课进行授课等。系统管理员可以添加、删除、修改、教师和学生的信息,并且可以进行学生的成绩登记,以及开设课程等。数据库一共建立了六张表,包括(1)学生表;(2)课程表;(3)教师表;(4)选课表;(5)成绩表;(6)授课表。
**应用系统部分:**选择开发环境C#,建立一个简单的应用系统, 主要功能包括用户登录、信息查询及修改、成绩查询、学生选课、教师排课等。
通过本系统可以对学生个人信息、课程和任课教师信息、选课信息进行管理及维护。学生可以通过该系统查阅与自己相关信息(查询成绩、选课、查询信息、修改密码等)。教师可以通过学生管理系统查看自己的信息以及排课信息等功能。系统管理员可以添加、删除、修改、教师和学生的信息、学生成绩信息和课程信息等。

关系模式:

Student(Sno,Sname,Ssex,Sdepart,Smajor,SclassNo,Spwd)
Course(Cno,Cname,Ccredit,Cnature,LectureHours)
Teacher(Tno,Tname,Tgender,Tpwd)
StudentCourse(Sno,Cno,ElectiveSemester)
Score(Sno,Cno,ExamRes)
Teach(Cno,Tno,TeachingTerm,TeachingHours)

局部ER图:

全局ER图:

在这里插入图片描述

面向系统应用的数据库建立与操作SQL程序

SQL数据库的设计

1、六张表的建立:

(1)学生表;(2)课程表;(3)教师表;(4)选课表;(5)成绩表;(6)授课表。
在这里插入图片描述
在这里插入图片描述

2、各个表之间关系的建立(主键和外键的联系):

在这里插入图片描述

3、数据的插入,更新,删除,添加

利用insert into…values语句插入数据
update…set进行修改
delete from进行删除

4、查询的建立:

用select语句

5、视图的建立:

应用系统设计与实现

1、业务流程和系统架构

在这里插入图片描述

2、系统设计:

在这里插入图片描述

3、主要功能模块

教师端管理:
教师登录,修改密码,进行自己的信息查看,以及查询自己的课程安排,还可以自行选择添加自己的授课课程;

学生端:
学生端的功能包括学生登陆和密码的修改,学生自己信息的查询,查询课程信息,查询自己所选的课程,增删自己的选课功能,以及查询自己课程的成绩和自己目前所得的学分;

管理员端:
教师管理员端可以实现管理员密码的修改,对学生信息或者教师信息进行增删改查,对学生课程成绩进行增删改查,并且可以查询及格以上成绩和每门课的平均成绩,以及对学生选课信息的增删改查,以及对登录日志的查询等其他功能。

4、视窗设计

登录界面

在这里插入图片描述
主要代码

private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "" && textBox2.Text != "") //判断是否有输入
            {
                if (radioButton1.Checked == false && radioButton2.Checked == false && radioButton3.Checked == false)
                {
                    MessageBox.Show("请选择登录类型!");
                }
                else
                {
                    if (radioButton1.Checked == true)
                    {
                        var from = new 学生栏();
                      
                        SqlConnection con = new SqlConnection("Data Source=LAPTOP-F6UB3P7F;Initial Catalog=高校学生信息管理系统;Persist Security Info=True;User ID=sa;Password=666666");
                        con.Open();
                        SqlCommand cmd = new SqlCommand("select * from Student where Sno='" + textBox1.Text.Trim() + "'and Spwd='" + textBox2.Text.Trim() + "'", con);
                       
                        SqlDataReader odr = cmd.ExecuteReader();//阅读器指向它
                        if (odr.HasRows)
                            {
                               // Program.Sno = this.textBox1.Text;
                                MessageBox.Show("登录成功!", "欢迎学生" + textBox1.Text);
                                this.DialogResult = DialogResult.OK;
                                
                                from.Show();
                                this.Hide();

                            }
                        else
                            MessageBox.Show("用户名或密码错误");
                        con.Close();   
                    }
                    else if (radioButton2.Checked == true)
                    {
                        var from = new 教师栏();

                        SqlConnection con = new SqlConnection("Data Source=LAPTOP-F6UB3P7F;Initial Catalog=高校学生信息管理系统;Persist Security Info=True;User ID=sa;Password=666666");
                        con.Open();
                        SqlCommand cmd = new SqlCommand("select * from Teacher where Tno='" + textBox1.Text.Trim() + "'and Tpwd='" + textBox2.Text.Trim() + "'", con);

                        SqlDataReader odr = cmd.ExecuteReader();//阅读器指向它
                        if (odr.HasRows)
                        {
                           
                            MessageBox.Show("登录成功!", "欢迎老师" + textBox1.Text);
                            this.DialogResult = DialogResult.OK;

                            from.Show();
                            this.Hide();

                        }
                        else
                            MessageBox.Show("用户名或密码错误");
                        con.Close();
                    }
                    else if (radioButton3.Checked && this.textBox1.Text == "1" && this.textBox2.Text == "1")
                    {
                        //管理员可以添加、删除学生、增加/删除老师、给老师分配课程、
                        //修改管理员密码

                        //user.use = "administrator";
                        var from = new 管理员栏();
                        MessageBox.Show("欢迎您,管理员" + textBox1.Text);
                        from.Show();
                        this.Hide();

                    }
                    else 
                    {
                        MessageBox.Show("请输入正确的用户名或者密码,或者选择正确的相应人员");
                    }
                }
            }
            

        }
忘记密码:

若是忘记了登录的密码或者想要修改自己的密码,可以点击忘记密码进行密码的修改,在修改密码界面选择自己的身份,输入自己的用户名和自己的编号以及用户密码进行修改,修改完之后点击确认,显示“修改成功”,点击退出即返回登录界面。
在这里插入图片描述

 private void button1_Click(object sender, EventArgs e)
        {
            string Rname = textBox1.Text.Trim();//用户名
            string Rpassword = textBox3.Text.Trim();//密码
            string Rid = textBox2.Text.Trim();//编号
            string identity = comboBox1.Text.Trim();//身份
            if (identity.Equals("学生"))
            {
                SqlConnection con = new SqlConnection("Data Source=LAPTOP-F6UB3P7F;Initial Catalog=高校学生信息管理系统;Persist Security Info=True;User ID=sa;Password=666666");
                con.Open();
                try
                {

                    string insertStr = "UPDATE  Student SET Spwd = '" + Rpassword + "' WHERE Sname = '" + Rname + "'and Sno='" + Rid + "' ";
                    SqlCommand cmd = new SqlCommand(insertStr, con);
                    cmd.ExecuteNonQuery();
                    MessageBox.Show("修改成功");
                }
                catch
                {
                    MessageBox.Show("输入数据违反要求!");
                }
                finally
                {
                    con.Dispose();
                }
            }
            if (identity.Equals("老师"))
            {
                SqlConnection con1 = new SqlConnection("Data Source=LAPTOP-F6UB3P7F;Initial Catalog=高校学生信息管理系统;Persist Security Info=True;User ID=sa;Password=666666");
                con1.Open();
                try
                {

                    string insertStr1 = "UPDATE Teacher SET Tpwd = '" + Rpassword + "' WHERE Tname = '" + Rname + "'and Tno='" + Rid + "' ";
                    SqlCommand cmd1 = new SqlCommand(insertStr1, con1);
                    cmd1.ExecuteNonQuery();
                    MessageBox.Show("修改成功");
                }
                catch
                {
                    MessageBox.Show("输入数据违反要求!");
                }
                finally
                {
                    con1.Dispose();
                }
            }
        }
学生登录

学生登录的用户名和密码分别对应Sno和Spwd,密码可以进行自行修改。
在这里插入图片描述
登录成功后跳转到学生管理系统界面,在此界面学生可以根据自己的需求进行相应的操作,如查看成绩,选课信息等。
在这里插入图片描述

(1)选择查看成绩:
在此界面上输入学号便可以进行成绩的查询;
在这里插入图片描述
主要代码:


```csharp
 private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection("Data Source=LAPTOP-F6UB3P7F;Initial Catalog=高校学生信息管理系统;Persist Security Info=True;User ID=sa;Password=666666");
            
                conn.Open();

                SqlCommand command = new SqlCommand("select * from Score where Sno='" + this.textBox1.Text + "'", conn);

                SqlDataReader dr = command.ExecuteReader();
                BindingSource bs = new BindingSource();
                bs.DataSource = dr;
                this.dataGridView1.DataSource = bs;
            
        }
``


(2)选择查看选课:
在此界面上输入学号就可以进行自己的课程的查询;
在这里插入图片描述
点击选课按钮,可以跳转至学生选课界面,在该界面上会出现所有的课程信息,学生可以根据自己的需求进行选课。学生要选课时只需要输入自己的学号,然后点击自己想选的课程所在的那一列,点击选课即可完成选课操作,当课程已在自己的课程里时,选课会失败。选课完成后可以返回到学生管理系统。
在这里插入图片描述
主要代码:

 private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection("Data Source=LAPTOP-F6UB3P7F;Initial Catalog=高校学生信息管理系统;" +
                "Persist Security Info=True;User ID=sa;Password=666666");

            try
            {
                con.Open();
                string select_id = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();//选择的当前行第一列的值,也就是ID
                string delete_by_id = "INSERT INTO StudentCourse VALUES('" +textBox1.Text.Trim()+ "','" + select_id + "','" + 1 + "')";
                SqlCommand cmd = new SqlCommand(delete_by_id, con);
                cmd.ExecuteNonQuery();
                MessageBox.Show("选课成功");
            }
            catch
            {
                MessageBox.Show("请正确选择行!");
            }
            finally
            {
                con.Dispose();
            }
        }

(3)查看基本信息:
在该界面上输入自己的学号即可查询出自己的相关信息;
在这里插入图片描述

教师登录

在登录界面上选择老师身份,然后在用户名和密码栏填入教师编号和初始密码即可以教师身份登入。初始密码可以修改。
在这里插入图片描述在这里插入图片描述
(1)查询课程安排:
在此界面上输入教师的编号即可查看该教师的课程安排。
在这里插入图片描述
若点击选择授课,则会跳转至授课界面。在该界面,教师输入想要教授的课程信息,包括课程号,教师号,授课学期以及学时,确认后点击增加,若显示“修改成功”,代表已将增加进了自己的授课列表。如果该课程已经被该教师选择过,则无法添加,会显示“输入数据违反要求!”。
在这里插入图片描述
主要代码:在这里插入图片描述

(2)选择查询基本信息
选择查询基本信息后会跳转至教师基本信息界面,在该界面上输入教师编号便可以查询到该教师的一些基本情况。
在这里插入图片描述
在这里插入图片描述

管理员登录

在登录界面选择管理员身份,输入用户名1和密码,即可登录成功。登录成功后,会跳转至管理员系统界面;
在这里插入图片描述在该界面有学生管理、教师管理、成绩登记、课程开设、返回登录界面这四项功能。
由于界面过多,大部分代码语句基本类似,具体不再一一展示。

总结

本次实验中,使用了C#语言,运用visual studio软件进行可视化编程开发的一个学生选课信息管理数据库系统,将SQL服务添加到引用当中即可连接数据库。本次实验中有六个表,可以实现修改,查询,插入,删除数据等许多操作。

重点难点

在这个课设中,主要是要掌握数据库与visual studio之间的连接。
由于我用到的开发环境是sql server2018 和visual studio2017,对于建立与数据库之间的连接还是比较简单的,可以直接在服务器资源管理器进行连接,在网上也可以找到很多相关的文件或视频资源讲解。
在这里插入图片描述
编辑App.config,在App.config中添加这一句:

  <connectionStrings>
  <add name="SchoolManagement" connectionString="Data Source=******;Initial Catalog=高校学生信息管理系统;Persist Security Info=True;User ID=***;Password=*****"/>
  </connectionStrings>

在这里插入图片描述

开始.cs文件的编辑;

using System.Data.SqlClient;

其中,这句代码至关重要,要把他包含在头文件中。

参考文献
1、《数据库技术与应用》
2、《SQL Server从入门到精通》
3、数据库设计-学生管理系统数据库系统(链接https://blog.csdn.net/weixin_43979090/article/details/106839381)

Logo

开源、云原生的融合云平台

更多推荐