数据库课设之学生成绩管理系统

系统设计的内容

本系统主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、规范化和自动化,其主要任务是用计算机对学生信息进行日常管理,如查询、修改、增加、删除,另外还考虑到用户登录的权限,针对学生信息和权限登录的学生成绩管理系统。

本系统主要包括注册管理、教师管理、学生信息查询、添加、修改、删除等部分。其功能主要有:
(1)学生信息的添加,包括输入学生基本信息和成绩。
(2)学生信息的查询,包括查询学生基本信息和成绩。
(3)学生信息的修改,包括修改学生基本信息和成绩。
(4)学生信息的删除,包括修改学生基本信息和成绩。
(5)登录用户密码修改,用户登录到系统可进行相应的用户密码修改。
(6)管理员用户对用户名的管理,包括添加新用户、删除用户。

功能分析

该学生成绩管理系统是用Visual Studio 2019和SQL Server2014数据库,在系统中分为两类用户,即系统管理员和辅导员。
系统管理员进入学生成绩管理系统的主要功能是:实现管理员对所有用户的增删改查等基本功能,并且参与开设课程、选择课程的管理,安排教师的任课工作,管理员为每门课程设置是必修或则选修。实现对学生成绩的修改管理。
辅导员进入学生成绩管理系统的主要功能是:查询所管理班级成绩,打印不及格学生名单,录入学生信息,修改自己的帐号密码等。

数据项

数据项名:账号 含义:用户唯一的标示 数据类型:char长度:10 数据项之间的关 系:账号→密码
数据项名:密码 含义:登录时对应账号唯一的标示 数据类型:char长度:10数据 项之间的关系:
数据项名:学号 含义:学生的唯一标示 数据类型:char长度:10 数据项之间的 关系:
数据项名:学生姓名 含义:学生姓名 数据类型:char长度:10数据项之间的关系:
数据项名:性别 含义:学生性别 数据类型:char 长度:2 数据项之间的关系: 学号→性别
数据项名:系别 含义:学生所在系 数据类型:char 长度:20 数据项之间的关系: (学号,学生姓名)→系别
数据项名:专业 含义:学生所在专业 数据类型:char 长度:20 数据项之间的关 系:(学号,学生姓名)→专业
数据项名:年级 含义:学生年级 数据类型:char 长度:10 数据项之间的关系:
数据项名:课程名称 含义:学生所学课的名称 数据类型:char 长度:10 数据项 之间的关系:课程号→课程名称
数据项名:授课教师 含义:该课程授课教师姓名 数据类型:char 长度:10 数据 项之间的关系:(课程号,课程名)→授课教师
数据项名:开设院系 含义:该课程开设的院系名称 数据类型:char 长度:10 数 据项之间的关系:(课程号,课程名)→开设院系
数据项名:课程号 含义:课程唯一的标识 数据类型:char 长度:4 数据项之间 的关系:
数据项名:成绩 含义:成绩 数据类型:int 长度:4 数据项之间的关系:(课程 号,学号)→成绩

数据结构

数据结构名:学生信息表 含义说明:学生的各项基本信息 组成:学生的各项基本 信息
数据结构名:课程信息表 含义说明:课程的各项基本信息 组成:课程号+课程名 +授课教师+开设院系
数据结构名:学生成绩信息表 含义说明:选课的成绩信息 组成:课程号+学号+成 绩
数据结构名:登录信息表 含义说明:登录时需要输入的信息 组成:账号+密码

数据流

数据流名:学生 说明:用于查询学生的基本信息 数据流来源:学生数据流 数据流 去向:学生模块 组成:学号、姓名、年级、院系、专业、性别
数据流名:成绩 说明:用于查询学生的各科考试分数 数据流来源:成绩数据流 数 据流去向:成绩模块 组成:课程号、学号、成绩
数据流名:选修课程 说明:用于查询每门课程的基本信息 数据流来源:选修课程数 据流 数据流去向:选修课程模块 组成:课程号、课程名称、授课教师、 开设院系
数据流名:登录 说明:用于登入课程管理系统 数据流来源:登录数据流 数据流去 向:登录信息模块 组成:账号、密码

数据存储

编号:1 数据存储名:学生信息存储 说明:用于存储学生的各项信息 输入的数据流: 输出的数据流:学生信息表 组成:学号+学生姓名+性别+院系+年级+专业
编号:2 数据存储名:课程信息存储 说明:用于存储课程的各项信息 输入的数据流:课程信息 输出的数据流:课程基本信息表 组成:课程号+课程名授课教师+开设院系
编号:3 数据存储名:成绩信息存储 说明:用于存储成绩的各项信息输入的数据流:学生成绩信息 输出的数据流:选课成绩信息表 组成:课程号+学号+成绩
编号:4 数据存储名:登录信息存储 说明:用于存储学生登录的各项信息输入的数据流:登录的基本信息 输出的数据流:登录信息表 组成:账号+密码

处理过程

处理过程描述={处理过程名,说明,输入:{数据流},输出:{数据流},处理:{简要说明}}
处理过程名:登陆界面 说明:用户登录时候的界面 输入数据流:输入账号和登录密码 输出数据流:进入操作选择界面 处理:登录成功,进入操作选择界面;登 录失败,则退出系统
处理过程名:查询统计界面 说明:查询学生信息、课程信息、学生成绩信息时候的界面 输 入数据流:学号、课程号 输出数据流:进入学查询统计界面 处理:查看 学生、课程、学生成绩各项基本信息
处理过程名:添加信息界面 说明:添加学生、课程、学生成绩信息时候的界面 输入数 据流:学号、姓名、专业、院系、年级、课程号、课程名、成绩、授课教师、 开设院系 输出数据流:进入添加信息界面 处理:添加学生、课程、学 生成绩的各项基本信息
处理过程名:删除信息界面 说明:删除信息时候的界面 输入数据流:课程号、学号 输 出数据流:删除信息界面 处理:删除学生、课程、学生成绩的 各项基本信息
处理过程名:修改信息界面 说明:修改学生、课程、学生成绩信息时候的界面 输入数 据流:学号、姓名、专业、院系、年级、课程号、课程名、成绩、授课教师、 开设院系 输出数据流:进入添加信息界面 处理:修改学生、课程、学生 成绩的各项基本信息
处理过程名:密码修改界面 说明:修登录信息时候的界面 输入数据流:账号、密码 输 出数据流:进入修改登录信息界面 处理:修改登录信息的账号密码
处理过程名:用户管理界面 说明:数据库管理员管理用户信息时候的界面 输入数据流: 账号、密码 输出数据流:进入用户管理界面 处理:管理用户的账号和密码

操作界面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

登录界面源代码

private void Button4_Click(object sender, EventArgs e)
        {
            this.Close();
        }
private void Button3_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "" || textBox2.Text == "")
MessageBox.Show("提示:请输入用户名和密码!", "警告");
SqlConnection conn = new SqlConnection("Data Source=(local);Initial Catalog=Sperformance;Integrated Security=True;MultipleActiveResultSets=true");
conn.Open();
SqlCommand cmd = new SqlCommand("select * from 登陆信息表 where 账号='" + textBox1.Text.Trim() + "' and 密码='" + textBox2.Text.Trim() + "'", conn);
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Read();
 if (sdr.HasRows)
{
               		 MessageBox.Show("登录成功!", "提示");
                		 Form2 frm = new Form2();
               		 frm.Owner = this;
                		frm.ShowDialog();
            		}
 else
  MessageBox.Show("提示:账号或密码错误!", "警告");
  conn.Close();
            	  sdr.Close();
       	}

添加信息界面源代码

private void Button1_Click(object sender, EventArgs e)
        {
            string StuNo = sno.Text.Trim();
            string StuName = name.Text.Trim();
            string StuSex = sex.Text.Trim();
            string StuMajor = major.Text.Trim();
            string StuGrade = grade.Text.Trim();
            string StuDept = depart.Text.Trim();
            if (String.IsNullOrEmpty(StuNo))
            {
                MessageBox.Show("学号不能为空!");
            }
            if (String.IsNullOrEmpty(StuName))
            {
                MessageBox.Show("姓名不能为空!");
            }
            if (String.IsNullOrEmpty(StuMajor))
            {
                MessageBox.Show("专业不能为空!");
            }
            if (String.IsNullOrEmpty(StuGrade))
           {
               MessageBox.Show("年级不能为空!");
            }
            string mystr, mysql;
            SqlConnection myconn = new SqlConnection();
            SqlCommand mycmd = new SqlCommand();
            mystr = "Data Source=.;Initial Catalog=Sperformance;Integrated Security=True;MultipleActiveResultSets=true";
            myconn.ConnectionString = mystr;
            myconn.Open();
            mysql = string.Format ( " insert into 学生信息 values('{0}','{1}','{2}','{3}','{4}','{5}')", StuNo, StuName, StuSex, StuMajor, StuGrade, StuDept);  
            mycmd.CommandText = mysql;
            mycmd.Connection = myconn;
            int count = mycmd.ExecuteNonQuery();
             if (count > 0)
             {
                MessageBox.Show("添加成功!");
            }
            else
            {
                MessageBox.Show("添加失败!");
            }
            sno.Clear(); name.Clear(); sex.Clear();
            major.Clear(); grade.Clear(); depart.Clear();
            cno.Clear(); score.Clear();
            myconn.Close();
        }
        private void Button3_Click(object sender, EventArgs e)
        {
            string StuNo = sno.Text.Trim();
            string StuCno = cno.Text.Trim();
            string StuScore = score.Text.Trim();
            string StuMajor = major.Text.Trim();
            if (String.IsNullOrEmpty(StuNo))
            {
                MessageBox.Show("学号不能为空!");
            }
            if (String.IsNullOrEmpty(StuCno))
            {
                MessageBox.Show("课程号不能为空!");
            }          
            string mystr, mysql;
            SqlConnection myconn = new SqlConnection();
            SqlCommand mycmd = new SqlCommand();
            mystr = "Data Source=.;Initial Catalog=Sperformance;Integrated Security=True;MultipleActiveResultSets=true";
            myconn.ConnectionString = mystr;
            myconn.Open();
            mysql = string.Format(" insert into 学生成绩信息 values('{0}','{1}','{2}')", StuNo, StuCno, StuScore);
            mycmd.CommandText = mysql;
            mycmd.Connection = myconn;
            int count = mycmd.ExecuteNonQuery();
            if (count > 0)
            {
                MessageBox.Show("添加成功!");
            }
           else
            {
                MessageBox.Show("添加失败!");
            }
            sno.Clear(); name.Clear(); sex.Clear();
            major.Clear(); grade.Clear(); depart.Clear();
            cno.Clear(); score.Clear();
            myconn.Close();
        }
        private void Button4_Click(object sender, EventArgs e)
        {
            string CouCno = cno.Text.Trim();
            string CouSname = cname.Text.Trim();
            string TeaTname = name.Text.Trim();
            string TeaDept = depart.Text.Trim();
            if (String.IsNullOrEmpty(CouCno))
            {
                MessageBox.Show("课程号不能为空!");
            }
            if (String.IsNullOrEmpty(CouSname))
            {
                MessageBox.Show("课程名不能为空!");
            }
           if (String.IsNullOrEmpty(TeaTname))
           {
                MessageBox.Show("任课老师不能为空!");
            }
            if (String.IsNullOrEmpty(TeaDept))
            {
                MessageBox.Show("开设院系不能为空!");
            }            
            string mystr, mysql;
            SqlConnection myconn = new SqlConnection();
            SqlCommand mycmd = new SqlCommand();
            mystr = "Data Source=.;Initial Catalog=Sperformance;Integrated Security=True;MultipleActiveResultSets=true";
            myconn.ConnectionString = mystr;
            myconn.Open();
            mysql = string.Format(" insert into 课程信息 values('{0}','{1}','{2}','{3}')", CouCno, CouSname, TeaTname, TeaDept);
            mycmd.CommandText = mysql;
            mycmd.Connection = myconn;
            int count = mycmd.ExecuteNonQuery();
            if (count > 0)
            {
                MessageBox.Show("添加成功!");
            }
            else
            {
                MessageBox.Show("添加失败!");
            }
            sno.Clear(); name.Clear(); sex.Clear();
            major.Clear(); grade.Clear(); depart.Clear();
            cno.Clear(); score.Clear(); cname.Clear();
            myconn.Close();
        }

后续代码大致相同,c#与sql语句结合使用。项目在这

  • 17
    点赞
  • 276
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
学生成绩管理系统 1 问题描述 1.1 背景 1)某大学有学生若干万名,每个学生每学期必须学习若干门课程。 2)每个学生有学号、姓名、性别、班级、出生日期等基本信息。 3)每门课程有课程号,课程名称、任课教师、学分等信息。 4)学校需要对每个学生的基本信息、所学课程、成绩进行统一管理,以便于对信息进行 查询、浏览和修改。 1.2 数据需求 学生成绩管理系统主要用于学生成绩信息管理,据分析学生成绩管理系统的数据表可浓 缩为:学生基本信息表、课程基本信息表和学生成绩信息表。根据学校的情况,可按下 面的步骤来分析: 1) 确定学生所在的院系、所学的专业以及所在的班级。 2) 确定学生所在班级的课程以及该课程学生的成绩;另外还需要知道学生所在班级、学 号和学期。 3) 分析学生的基本信息,如姓名、性别、出生年月、家庭住址、联系电话。 4) 用户信息分析,通常包括用户名和密码。 2 解决方案 ( 或数据库系统设计 ) 2.1 E-R 模型设计 根据E—R图,将其转化为如下数据实体,数据库学生成绩管理系统.dbc,包括如下的表 和视图: 1) 学生登记表——学生表.dbf。 字段名称 字段类型 字段宽度 xh 字符型 10 xm 字符型 6 xb 字符型 2 csrq 日期型 8 bj 字符型 4 2) 课程登记表——课程表.dbf。 字段名称 字段类型 字段宽度 kch 字符型 2 kcm 字符型 10 js 字符型 10 xf 字符型 10 3) 成绩登记表——成绩表.dbf 字段名称 字段类型 字段宽度 xh 字符型 10 kch 字符型 2 cj 数值型 3 4) 借书视图(lyxview)。 为了进行浏览总表的需要,需要设计了一个总表浏览视图,该视图从学生表.dbf等 3个表中提取了10个字段的数据: 学生表.xh 学生表.xm 学生表.xb 学生表.csrq 学生表.bj 课程表.kch 课程表.kcm 课程表.js 课程表.xf 成绩表.cj 其视图关系可由以下SQL语句定义: SELECT 学生表.*, 课程表.*, 成绩表.cj; FROM 学生成绩管理系统!学生表, 学生成绩管理系统!课程表,; 学生成绩管理系统!成绩表; WHERE 学生表.xh = 成绩表.xh; AND 课程表.kch = 成绩表.kch 所建数据库如下图所示: 2.2 数据表 本系统需要使用的数据如下: 3 系统实现 3.1 开发环境 本系统由SQL语言编写,在Visual Foxpro 6.0软件环境下可以正常运行 3.2 系统流程图 系统流程图模块主要由刘龙洋同学设计,而系统的功能设计主要由李江滨同学完成, 我主要负责程序主要功能界面的设计,下面是部分流程图: 、 3.3 程序主要功能界面 1、登录界面的设计: 第一步:在表单上单击鼠标右键,并在弹出菜单中选择"数据环境"项,打开数据环境 设计器,添加数据表mm.dbf; 第二步:创建表单并保存为"登录"; 第三步:添加lable1,并设置其caption属性为"欢迎使用学生成绩管理系统!"; 第四步:添加lable2和text1并设置相关属性; 第五步:添加timer控件,并设置其Enabled属性为"真",用于设计窗口动画。 登录界面如下图所示: 2、修改密码表单的设计: 第一步:在表单上单击鼠标右键,并在弹出菜单中选择"数据环境"项,打开数据环境 设计器,添加数据表mm.dbf; 第二步:创建表单并保存为"修改密码"; 第三步:添加label1 、label2、 label3,并设置其caption属性分别为"请输入旧密码"、"请输入新密码"、"请确认新密 码"; 第四步:添加text1、 text2、 text3,并设置相关属性; 第五步:添加command1和command2,并设置其caption属性分别为"确认"和"取消"; 修改密码表单如下图: 3、学生基本信息维护表单的设计: 第一步:创建表单,并保存为学生表.scx; 第二步:添加lable1~lable5,其caption的属性如下图所示 ; 第三步: 添加文本框text1~text5,并设置相关属性; 第四步:添加"院系"、"专业"、"班级"和"学期"列表框; 第五步:添加类,并设置相关属性,用于增添和修改学生基本信息; 第六步:添加文本框text6,并设置相关属性; 第七步:添加command1~command10,并设置相关属性; 第八步:添加"返回"按钮,其功能是关闭此界面; 第九步:执行运行命令,并进行测试。 4、课程信息维护表单的设计: 第一步:创建表单,并保存为课程表.scx; 第二步:添加lable1~lable4,其caption的属性如下图所示 ; 第三步: 添加文本框text1~text4,并设置
学生成绩管理系统,是一个比较典型的数据库应用,主要用来管理学生的个人信息和课程成绩等相关数据。下面我会简单介绍一下其主要的代码逻辑和实现方式: 1. 数据库设计 首先,我们需要设计一个合适的数据库结构来存储学生信息和成绩数据。一般来说,我们需要设计至少两张表: - 学生信息表:用来存储学生的基本信息,如学号、姓名、性别、出生日期、联系方式等。 - 成绩信息表:用来存储学生的成绩信息,如学号、课程名称、成绩等。 在设计表结构时,我们需要考虑到数据的完整性和一致性,需要对表之间的关系进行定义,以便于后续的查询和管理操作。 2. 数据库连接 在代码实现中,我们需要使用一些数据库操作的相关函数和库,如Python的MySQLdb库。具体来说,我们需要实现以下功能: - 连接数据库:使用MySQLdb库中的connect()函数来连接数据库,并获取一个游标对象。 - 执行SQL语句:使用游标对象的execute()函数来执行SQL语句,如查询、插入、更新、删除等。 - 提交事务:在执行完一系列SQL语句后,需要使用连接对象的commit()函数来提交事务,以确保数据的一致性。 - 关闭连接:在程序结束时,需要使用连接对象的close()函数来关闭数据库连接,释放资源。 3. 前端页面设计 为了更方便地管理学生信息和成绩数据,我们需要设计一个合适的前端页面,提供各种操作和管理功能。 一般来说,我们可以使用HTML、CSS、JavaScript等技术来实现前端页面设计,也可以使用一些前端框架如Bootstrap、jQuery等来辅助开发。 4. 后端代码实现 最后,我们需要编写一些后端代码来实现与前端页面的交互和数据库操作。具体来说,我们需要实现以下功能: - 处理HTTP请求:使用Python的web框架如Django、Flask等来处理HTTP请求,并将请求参数传递给后台处理逻辑。 - 数据库操作:使用MySQLdb库来执行数据库操作,如查询、插入、更新、删除等。 - 返回响应结果:将查询结果或操作结果返回给前端页面,以便于用户查看和操作。 以上就是学生成绩管理系统的主要代码实现方式和逻辑。需要注意的是,在实际开发中,我们还需要考虑安全性、性能等问题,并进行充分的测试和调试,以确保系统的稳定性和可靠性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值