学生学籍管理系统

这是一个小小的学籍管理系统,分享给大家。本人是小白一枚,有什么问题大家可以提出来。
#目的
如今,学校的现代化管理下,学生的学籍管理显得至关重要。其中学籍内容也成为学校管理的一部分。因此,我们需要一个比较完善的学籍管理系统,为用户提供重要的信息和可查询的内容。我们小组设计的学籍管理系统,不仅可以对学生的基本信息进行查询管理,管理员还可以对系统的基础数据进行管理,对学籍信息进行维护等功能。

开发平台:Microsoft Windows 10
开发工具:采用数据库SQL SERVER和Visual Studio 2017来进行系统开发。
2.3需求规定:
该系统能基本完成学生学籍管理的基本要求。我们考虑一个学生学籍管理系统,应与题目相结合,具备支持两种不同用户,其中管理员可以对系统的基础数据进行管理,对学籍信息进行维护;学生用户可以维护个人信息,查询专业、成绩等信息。
设计要求:

  1. 支持两种不同用户,学生和管理员
  2. 学生的功能包括:
    ①学生可以登录查看自己的个人信息、专业信息、院系信息、以及自己各个学期的课程成绩
    ②学生可以修改个人的部分信息,比如联系方式
    ③学生可以修改个人登录系统的密码
  3. 管理员的功能包括:
    ①管理员登录可以查看所有学生的信息
    ② 管理员可以对学生信息进行删除、添加、修改等操作
    ③ 学生成绩管理:管理员根据学生的成绩,以学号和姓名为条件,添加学生的成绩

详细设计
1.登录界面

2.账号信息
(1)用户名:从数据库导入相关数据与所输入匹配
(2)密码: 从数据库导入相关数据与所输入匹配
(3)验证码:随机生成验证码进行验证
(4)人脸识别:利用百度云人脸识别函数进行验证登录。
3.登录人类型
(1)管理员:输入正确的信息后,跳转到管理员界面。
(2)专业负责人:输入正确的信息后,跳转到专业负责人界面。
(3)教师:输入正确的信息后,跳转到教师界面。
(4)学生:输入正确的信息后,跳转到学生界面。
4.功能按键
(1)登录:跳转到相应的登录界面
(2)取消:撤销跳转
3. 系统设计
3.1总体设计
3.1.1基本思路:
总体设计的目的就是要回答“概括地说,系统应该如何去实现?”对于这个问题,结合自身的选题,也就是需要我们设计出一个完善的模型,让程序员与软件设计人员清楚学生管理系统的系统结构和软件结构。
在这里插入图片描述

3.1.2遇到的问题:
1.在使用数据库插入语句的时候,发现自己按所学的sql语句在sql编译器来插入有些不一样。
解决办法:例如:“select * from YONGHU where LEIBIE=‘管理员’and YNO=’” + textBox1.Text.Trim() + “‘and YMIMA=’” + textBox2.Text.Trim() + “’”;极其要注意单双引号的输入匹配。我输错好几次。
方法二:在web课时,跟林老师学了在vs中直接添加数据库,在解决方案组中直接创建数据库也可。随后给它创建表,以及添加相关属性。
2.一开始自己不会如何用C#SQL连接数据库,弄了好久都不行,后面查阅相关资料才得以决,还有数据库我也不知如何设计,后面需参考数据库这本书。
解决方法:参阅了网上的相关资料和这学期学的数据库这本书籍,慢慢发现它有一些方法与格式,模仿它就慢慢可以做出来。需要用心和仔细。如:SqlConnection conn = new SqlConnection(“Data Source=DESKTOP-B4TQ3K9(服务器);Initial Catalog=xueshengguanli(数据库名字);Integrated Security=True”);这是链接数据库的关键代码。
3.还有自己想添加媒体文件播放。但是不知选择什么类型控件。后面查找相关资料发现直接添加window的播放器。同时得加上openFileDialog1这个控件。
解决方法:添加了一个任务栏,有打开和退出的功能。

private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        openFileDialog1.ShowDialog();
        axWindowsMediaPlayer1.URL = openFileDialog1.FileName;
    }
  1. 还有想设计验证码来验证,我知道的运用用到图片的控件,在图片里面增加随机数或随机字母。后面肯定要到Random()方法。但是图片一开始加载不了随机数。
    解决方法:新增一个timer的控件用它来实现。

    private void timer1_Tick(object sender, EventArgs e)
    {
    Bitmap bmp = new Bitmap(120, 120);
    Graphics g = Graphics.FromImage(bmp);

        for (int i = 0; i < 5; i++)
        {
            String[] fonts = { "微软雅黑", "宋体", "黑体", "隶书", "仿宋" };//随机设置字体的样式
            Point p = new Point(i * 15, 0);
            Color[] colors = { Color.Red, Color.Pink, Color.Black, Color.Gray, Color.GreenYellow };//随机设置字体的颜色
            g.DrawString(arr[i].ToString(), new Font(fonts[r.Next(0, 5)], 20, FontStyle.Bold), new SolidBrush(colors[r.Next(0, 5)]), p);//画图
    
        }
        for (int i = 0; i < 100; i++)//画出声燥线
    
        {
            Point p1 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
            Point p2 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
            g.DrawLine(new Pen(Brushes.Green), p1, p2);
    
        }
        PictureBox1.Image = bmp;
    }
    

3.2功能设计
功能框图(流程图)

1.数据处理与任务需求
下面列出的是学生管理数据库应用应该支持的事务。

(1) 数据应该能够支持下述维护事务。
a) 创建和维护学校内学生的详细信息。
b) 创建和维护学校内课程的详细信息。
(2) 数据应该能够支持下述查询事务
a) 以报表形式列出学生的姓名,学号及其他详细信息
b) 以报表形式列出专业的名称、专业号及其他详细信息
c) 以报表形式列出课程的名称、课程号及其他详细信息
d) 列出某一给定学生的课程及成绩
e) 列出某一专业的课程信息

#功能设计
在这里插入图片描述
#测试页面
<2>登录表界面窗口实现的功能。
在这里插入图片描述

智能人脸识别的功能实现,调用百度云智能的人脸识别函数,实现智能人脸识别,人脸识别库有学生,老师,管理员,专业负责人

百度云人脸识别库的用户组如下:
在这里插入图片描述
在这里插入图片描述
学生界面窗口实现的功能
如查询成绩,查寻个人信息,修改密码的功能。最终显示在dataGridView中显示所查询的具体数据。
在这里插入图片描述

教师界面窗口实现的功能
如查询成绩,用学号查询学生个人信息中的课程号和成绩等,查询教师本人信息,修改密码的功能。最终显示在dataGridView中显示所查询的具体数据。在这里插入图片描述

管理员界面窗口实现的功能
在学生栏(groupBox1)中实现学生注册和查询学生,修改信息、删除信息等功能。在教师栏(groupBox2)中实现教师注册和查询教师等功能,学生成绩管理(groupBox3)中对学生成绩的管理。最终显示在dataGridView中显示所查询的具体数据。
在这里插入图片描述

专业负责人界面窗口实现的功能
如查询本专业课,本专业学生,本专业教师,专业负责人等功能,最终显示在dataGridView中显示所查询的具体数据。
在这里插入图片描述

满意度评测(Satisfaction)窗口和学校(School)窗口
如有三幅图,好,一般,不好。可以点击它。三个次数不同触发能量条到满时,School窗口的彩蛋视频将会弹出。
在这里插入图片描述
在这里插入图片描述
##部分数据库截图
<1>数据库上各个表的数据,下面所列的图在vs2017中截取。
(1)学生表Student(学号SNO,姓名SNAME,性别TSEX,出生日期SBIRTHDAY,民族SNATIVE,所在专业编号SDEPTNO,指导老师编号STEACHERRNO,电话STEL,家庭住址SADDRESS,备注信息SNOTE)
在这里插入图片描述
#部分源码

登录界面上验证码的关键实现与代码:
From1的加载项:
private void Form1_Load(object sender, EventArgs e)
        {
           
            for (int i = 0; i < 5; i++)
            {
                int rn = r.Next(0, 10);
                arr += rn;
            }
        }
PictureBox1_Click的点击事件,也就是随机数显示的图
        private void PictureBox1_Click(object sender, EventArgs e)
        {
            arr = null;
            for (int i = 0; i < 5; i++)
            {
                int rn = r.Next(0, 10);
                arr += rn;
            }
        }
用Timer1_Tick计时器的触发事件
private void timer1_Tick(object sender, EventArgs e)
        {
             Bitmap bmp = new Bitmap(120, 120);
             Graphics g = Graphics.FromImage(bmp);
           
            for (int i = 0; i < 5; i++)
            {
                String[] fonts = { "微软雅黑", "宋体", "黑体", "隶书", "仿宋" };//随机设置字体的样式
                Point p = new Point(i * 15, 0);
                Color[] colors = { Color.Red, Color.Pink, Color.Black, Color.Gray, Color.GreenYellow };//随机设置字体的颜色
                g.DrawString(arr[i].ToString(), new Font(fonts[r.Next(0, 5)], 20, FontStyle.Bold), new SolidBrush(colors[r.Next(0, 5)]), p);//画图

            }
            for (int i = 0; i < 100; i++)//画出声燥线

            {
                Point p1 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
                Point p2 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
                g.DrawLine(new Pen(Brushes.Green), p1, p2);

            }
            PictureBox1.Image = bmp;
        }
```csharp
FORM1//学生信息管理系统登录界面
namespace C
{
    public partial class Form1 : Form
    {
        SqlConnection conn = new SqlConnection("Data Source=DESKTOP-B4TQ3K9;Initial Catalog=xueshengguanli;Integrated Security=True");
         
        static public string sn, sub;
        String arr = "";//全局变量
        Random r = new Random();//全局对象
        string str = "Data Source=DESKTOP-B4TQ3K9;Initial Catalog=xueshengguanli;Integrated Security=True";
        //创建连接对象的变量 
        public Form1()
        {
            InitializeComponent();
        }
        Form2 fr2 = new Form2(); Form3 fr3 = new Form3(); Form4 fr4 = new Form4(); Form5 fr5 = new Form5();


       

        private void dl_Click(object sender, EventArgs e)
        {
           
            SqlConnection conn = new SqlConnection(str);
            // 执行对数据表中数据的增加、删除、修改操作 
            conn.Open();
            if (textBox1.Text == "" || textBox2.Text == "")
                MessageBox.Show("请不要遗漏信息!");
            if (arr != textBox_Code.Text.Trim())
            {
                MessageBox.Show("验证码输入错误");
            }
           
            if (gly.Checked)
            {
                string cstr = "select * from YONGHU where LEIBIE='管理员'and YNO='" + textBox1.Text.Trim() + "'and YMIMA='" + textBox2.Text.Trim() + "'";
                SqlCommand comm = new SqlCommand(cstr, conn);
                SqlDataReader dr = comm.ExecuteReader();//尽快可能对数据库进行查询并得到结果
               
              
                if (dr.Read()&& arr == textBox_Code.Text.Trim())
                {
                  
                    sn = textBox1.Text.Trim();
                   
                    Form4 fm = new Form4();
                    fm.Show();
                    fr4.Show(); this.Visible = false;
                }
                else
                {
                    MessageBox.Show("输入有误,请重新输入!");
                    textBox1.Text = ""; textBox2.Text = "";textBox_Code.Text = "";
                }
            }
            if (js.Checked)
            {
                string cstr = "select * from YONGHU where LEIBIE='教师'and YNO='" + textBox1.Text.Trim() + "'and YMIMA='" + textBox2.Text.Trim() + "'";
                SqlCommand comm = new SqlCommand(cstr, conn);
                SqlDataReader dr = comm.ExecuteReader();
                if (dr.Read() && arr == textBox_Code.Text.Trim())
                { sn = textBox1.Text.Trim(); fr3.Show(); this.Visible = false; }
                else
                {
                    MessageBox.Show("输入有误,请重新输入!");
                    textBox1.Text = ""; textBox2.Text = ""; textBox_Code.Text = "";
                }
            }
            if (xs.Checked)
            {
                string cstr = "select * from YONGHU where LEIBIE='学生'and YNO='" + textBox1.Text.Trim() + "'and YMIMA='" + textBox2.Text.Trim() + "'";
                SqlCommand comm = new SqlCommand(cstr, conn);
                SqlDataReader dr = comm.ExecuteReader();
                if (dr.Read() && arr == textBox_Code.Text.Trim())
                { sn = textBox1.Text.Trim(); fr2.Show(); this.Visible = false; }
                else
                {
                    MessageBox.Show("输入有误,请重新输入!");
                    textBox1.Text = ""; textBox2.Text = ""; textBox_Code.Text = "";
                }
            }
            if (zyfzr.Checked)
            {
                string cstr = "select * from YONGHU where LEIBIE='专业负责人'and YNO='" + textBox1.Text.Trim() + "'and YMIMA='" + textBox2.Text.Trim() + "'";
                SqlCommand comm = new SqlCommand(cstr, conn);
                SqlDataReader dr = comm.ExecuteReader();
                if (dr.Read() && arr == textBox_Code.Text.Trim())
                { sn = textBox1.Text.Trim(); fr5.Show(); this.Visible = false; }
                else
                {
                    MessageBox.Show("输入有误,请重新输入!");
                    textBox1.Text = ""; textBox2.Text = ""; textBox_Code.Text = "";
                }
            }
            conn.Close(); conn.Dispose();
        }

        private void qx_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        

       

        private void Form1_Load(object sender, EventArgs e)
        {
           
            for (int i = 0; i < 5; i++)
            {
                int rn = r.Next(0, 10);
                arr += rn;
            }
           
        }

        private void PictureBox1_Click(object sender, EventArgs e)
        {
            arr = null;
            for (int i = 0; i < 5; i++)
            {
                int rn = r.Next(0, 10);
                arr += rn;
            }
        }

        private void pictureBox2_Click(object sender, EventArgs e)
        {
            Satisfaction satisfaction = new Satisfaction();
            satisfaction.Show();
           
        }

        private void buttonface_Click(object sender, EventArgs e)
        {
            useCamera useCamera = new useCamera();
            useCamera.Show();
         
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
             Bitmap bmp = new Bitmap(120, 120);
             Graphics g = Graphics.FromImage(bmp);
           
            for (int i = 0; i < 5; i++)
            {
                String[] fonts = { "微软雅黑", "宋体", "黑体", "隶书", "仿宋" };//随机设置字体的样式
                Point p = new Point(i * 15, 0);
                Color[] colors = { Color.Red, Color.Pink, Color.Black, Color.Gray, Color.GreenYellow };//随机设置字体的颜色
                g.DrawString(arr[i].ToString(), new Font(fonts[r.Next(0, 5)], 20, FontStyle.Bold), new SolidBrush(colors[r.Next(0, 5)]), p);//画图

            }
            for (int i = 0; i < 100; i++)//画出声燥线

            {
                Point p1 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
                Point p2 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
                g.DrawLine(new Pen(Brushes.Green), p1, p2);

            }
            PictureBox1.Image = bmp;
        }
    }
}

`

#END
好好学习吧,利用好平时课余时间,慢慢补上来,一些不懂的知识,还有需要了解更多的前沿知识。

附上小视频

学生学籍管理系统

  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值