【MFC】学生成绩管理系统(期末项目)

如果需要代码请评论区留言或私信

课程设计具体实现

数据库设计

E-R图

在这里插入图片描述

关系模式

  • 教师(工号,姓名,学院) 主键(工号)
  • 学生(学号,姓名,性别,年龄,班级,专业,学分) 主键(学号)
  • 课程(课程编号,教师编号,课程名称,课程学分) 主键(课程编号) 外键(教师编号)
  • 选课(学号,课程编号,分数) 主键(学号,课程编号) 外键(学号,课程编号)

表的结构

create table Adminuser(username int unsigned primary key not null auto_increment,password varchar(16) default '123456'
);
create table Studentuser(username int unsigned primary key not null auto_increment,password varchar(16) default '123456'
);
create table teacheruser(username int unsigned primary key not null auto_increment,password varchar(16) default '123456'
);create table teacher(job_num  int unsigned  primary key auto_increment,t_name  varchar(20) not null,college varchar(20) not null
);
create table student(stu_num  int unsigned  primary key auto_increment,stu_name  varchar(20) not null,sex varchar(1) not null,age tinyint unsigned not null,class   varchar(20) not null,major   varchar(20) not null,credit int(5) unsigned not null default 0
);
create table course(c_num  int unsigned  primary key auto_increment,t_num  int unsigned not null,c_name  varchar(20) not null,c_credit   tinyint unsigned not null,constraint c_t_num foreign key(t_num) references teacher(job_num)
);
create table select_course(stu_num  int unsigned ,c_num   int unsigned not null,s_score  float(5,2) not null,primary key(stu_num,c_num),foreign key(stu_num) references student(stu_num),foreign key(c_num) references course(c_num)
);

函数和存储过程

--统计及格人数
delimiter $
CREATE PROCEDURE passnumber(in c_id int unsigned)begin
select sum(case when s_score>=60 then 1 else 0 end) as 及格人数,
sum(case when s_score<60 then 1 else 0 end) as 不及格人数
from score where c_num=c_id;end $
delimiter ; 

用例图

在这里插入图片描述

类图

1..1
1..1
1..1
1..1
1..1
1..1
1..1
1..1
1..*
1..1
1..*
1..1
1..*
1..1
1..*
1..1
1
1
1
1
CListCtrl
CMylistCtl
+GetColumnCount() : int
+AdjustColumnWidth() : void
CComboBox
MyCComboBoxEx
+OnCbnDropdown() : afx_msg void
+AddHScroll() : void
CModifyPswrodDlg
-CString m_odlPassword
-CString m_newPassword1
-CString m_newPassword2
+OnBnClickedOk() : afx_msg void
+OnBnClickedCancel() : afx_msg void
CstudentscoreDlg
+StudentDlg studentDlg
+TeacherDlg teacherDlg
+AdminDlg adminDlg
+CMenu menu
+afx_msg void OnSize(UINT nType, int cx, int cy)
+afx_msg void On_ModifyPassWordMenu()
+afx_msg void OnExitMenu()
+afx_msg void OnDestroy()
StudentDlg
-CString m_stu_num
-CString m_stu_name
-CString m_sex
-CString m_class
-CString m_major
-CRect listRect
+CMylistCtl m_courseList
+courseInfo cInfo
+vector <courseInfo> cInfoVector
+CString m_college
+CString m_credit
+CListCtrl m_passList
+CListCtrl m_notPassList
+InsertCouserInfo(courseInfo cInfo, CListCtrl*listCtrl) : void
+getBasicInfo(int userName) : void
+OnPaint() : afx_msg void
+OnInitDialog() : virtual BOOL
+OnBnClickedButtonMain() : afx_msg void
+OnBnClickedButtonPass() : afx_msg void
+OnBnClickedButtonNotpass() : afx_msg void
TeacherDlg
-CMylistCtl m_listMyCourse
-CEdit m_curSelectEdit
-CMylistCtl m_listCourseInfo
-std::vector<CString>colName
-CString m_num
-CString m_name
-CString m_college
-myCourseInfo cInfo
-std::vector<myCourseInfo> myCourseInfoVector
-studentInCourse sIc
-std::vector<studentInCourse> studentInCourseVector
-std::map<CString,std::vector>studentInCourse< >stuInCourseVctMap
-std::map<CString,std::set>studentInCourse<> stuInCourseSetMap
-CSpinButtonCtrl m_spinbtn
-CString m_addcourseName
-CString m_addstudentNum
-MyCComboBoxEx m_courseLComboBox
-MyCComboBoxEx m_courseRComboBox
-MyCComboBoxEx m_collegeComboBox
-MyCComboBoxEx m_classComboBox
-std::multimap<unsigned int, CString> m_mumapCollege
-std::multimap<unsigned int, CString> m_mumapClass
-int m_courseInfoList_selectRow
-CString prescore
-CEdit m_edit_modify
+getBaseInfo() : void
+OnPaint() : afx_msg void
+getMyCourse() : void
+init() : void
+OnClkListMycourse(NMHDR* pNMHDR, +LRESULT* pResult) : afx_msg void
+OnBnClickedButtonAddcourse() : afx_msg void
+OnBnClickedAddstudent() : afx_msg void
+updateMyCourse() : void
+OnBnClickedAddclass() : afx_msg void
+getCollegeAndClassInfo() : void
+OnSelchangeComboCollege() : afx_msg void
+getStuInfoInCourse() : void
+updateCourseInfo(CString courseNum) : void
+OnRclickListCourseinfo(NMHDR* pNMHDR, +LRESULT* pResult) : afx_msg void
+modifyStudentScore() : void
+resetStudentScore() : void
+OnKillfocusEditModify() : afx_msg void
+PreTranslateMessage(MSG* pMsg) : virtual BOOL
+importAsCSV() : void
AdminDlg
-CComboBox m_collegeBox
-CString m_name
-CString m_sex
-CString m_major
-CString m_t_name
-CString m_t_colloge
-BOOL m_isman
-CEdit m_InfoEdit
-CString info
-MyCComboBoxEx m_identityCBox
-CString m_id
-MyCComboBoxEx m_combobox_college
-MyCComboBoxEx m_combobox_class
-std::multimap<unsigned int, CString> m_mumapCollege
-std::multimap<unsigned int, CString> m_mumapClass
+AdminDlg(CWnd* pParent = nullptr)
+virtual ~AdminDlg()
+OnInitDialog() : virtual BOOL
+OnBnClickedButtonAddstu() : afx_msg void
+OnBnClickedButtonAddtea() : afx_msg void
+OnBnClickedButtonReset() : afx_msg void
+getCollegeAndClass() : void
+OnSelchangeComboCollege() : afx_msg void
+OnBnClickedButtonResetstudent() : afx_msg void
+OnBnClickedButtonResetteacher() : afx_msg void
CstudentscoreApp
+ CMySQL m_mysql
+ User curUser
+ CLoginUiDlg loginUidlg
+Login()
CMySQL
-MYSQL* m_sql
-MYSQL_ROW m_row
-MYSQL_RES* m_res
+CMySQL()
+~CMySQL()
+connect(host, user,password, db,port) : bool
+query(const wchar_t* sql) : int
+store_result()
+fetch_row() : MYSQL_ROW
+get_insert_id() : uint64_t
+rows() : unsigned long
+cols() : unsigned long
+showError()
+close() : void
CLoginUiDlg
-CRect m_leftRect
-CRect m_midRect
-CRect m_rightRect
-CRect m_idRect
-CRect m_passwordRect
-CRgn m_leftRgn
-CRgn m_minRgn
-CRgn m_rightRgn
-CBitmap m_bitmap_clode
-CBitmap m_bitmap_dream
-CToolTipCtrl m_ToolTip
-CRect m_loginRect, m_outRect
-CEdit m_edit_id
-CEdit m_edit_password
-CButton m_button_Login
-CButton m_button_Out
-CButton m_check_Admin
-CRect m_adminRect
-CButton m_check_Teacher
-CRect m_teacherRect
-CButton m_check_Student
-CRect m_studentRect
+bool isa,ist,iss
+UINT m_username
+CString m_password
+OnNcHitTest(CPoint point) : afx_msg LRESULT
+OnSize(UINT nType, int cx, int cy) : afx_msg void
+PreTranslateMessage(MSG* pMsg) : virtual BOOL
+OnBnClickedButtonLogin() : afx_msg void
+OnBnClickedButtonOut() : afx_msg void
+OnBnClickedCheckAdmin() : afx_msg void
+OnBnClickedCheckTeacher() : afx_msg void
+OnBnClickedCheckStudent() : afx_msg void
+link() : bool

界面截图

  • 登录界面
    在这里插入图片描述

  • 学生界面
    在这里插入图片描述

  • 教师界面
    在这里插入图片描述

  • 管理员界面
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/627180.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

element-ui el-table表格勾选框条件禁用,及全勾选按钮禁用, 记录

项目场景&#xff1a; 表格的部分内容是可以被勾选的&#xff0c;部分内容是不可以被勾选的 使用的是 “element-plus”: “^2.2.22”, 以上应该都是兼容的 问题描述 要求el-table表格中&#xff0c;部分内容不可以被勾选&#xff0c;全选框在没有可选内容时&#xff0c;是禁…

【漏洞复现】Sentinel Dashboard SSRF漏洞(CVE-2021-44139)

Nx01 产品简介 Sentinel Dashboard是一个轻量级的开源控制台&#xff0c;提供机器发现以及健康情况管理、监控、规则管理和推送的功能。它还提供了详细的被保护资源的实际访问统计情况&#xff0c;以及为不同服务配置的限流规则。 Nx02 漏洞描述 CVE-2021-44139漏洞主要存在于…

一些面试会问到的奇怪问题与面试总结

1.v-for、v-if先后顺序。 官方不建议一起使用&#xff0c;但是有时候面试的时候会问到。 在vue2中是v-for先与v-if的。 源码js编译结果&#xff1a; _c()就是vm.$createElement()&#xff0c;意思是创建一个虚拟的element&#xff0c;就是返回值是VNode。 _l就是renderlist…

【项目经验】详解Puppeteer入门及案例

文章目录 一.项目需求及Puppeteer是什么&#xff1f;二.Puppeteer注意事项及常用的方法1.注意事项2.常用的方法*puppeteer.launch&#xff08;&#xff09;**browser.newPage()**page.goto()**page.on(request&#xff0c;&#xff08;&#xff09;> {}&#xff09;**page.e…

USB Redirector本地安装并结合内网穿透实现远程共享和访问USB设备

文章目录 前言1. 安装下载软件1.1 内网安装使用USB Redirector1.2 下载安装cpolar内网穿透 2. 完成USB Redirector服务端和客户端映射连接3. 设置固定的公网地址 前言 USB Redirector是一款方便易用的USB设备共享服务应用程序&#xff0c;它提供了共享和访问本地或互联网上的U…

【dc-dc】世微AP5127平均电流型LED降压恒流驱动器 双色切换的LED灯驱动方案

这是一款双色切换的LED灯方案&#xff0c;12-50V 降压恒流,输出&#xff1a;6V 2.5A ​ 这是一款PWM工作模式 , 高效率、 外围简单、内置功率管&#xff0c;适用于 输入的 高 精度降压 LED 恒流驱动芯片。输出大功率可 达 25W&#xff0c;电流 2.5A。 可实现全亮/半亮功能切换…

上门按摩系统:科技与传统融合的新体验

在快节奏的现代生活中&#xff0c;人们越来越重视身心健康。传统的按摩方式虽然深受喜爱&#xff0c;却常因时间、地点的限制而无法满足需求。此时&#xff0c;上门按摩系统应运而生&#xff0c;将科技与传统的按摩技艺完美结合&#xff0c;为用户提供更便捷、个性化的服务。 上…

【Linux】自定义shell

👑作者主页:@安 度 因 🏠学习社区:安度因 📖专栏链接:Linux 文章目录 获取命令行前置字段命令行输入解析命令行普通指令的执行子进程执行命令指令类型判断 && 内建命令总结 &&a

uniapp的nvue是什么

什么是nvue uni-app App 端内置了一个基于 weex 改进的原生渲染引擎&#xff0c;提供了原生渲染能力。 在 App 端&#xff0c;如果使用 vue 页面&#xff0c;则使用 webview 渲染&#xff1b;如果使用 nvue 页面(native vue 的缩写)&#xff0c;则使用原生渲染。一个 App 中可…

深入解析JavaScript中new Function语法

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 Function是JavaScript中非常重要的内置构造函数,可以用来动态创建函数…

十大必备功能:打造高效知识库的关键因素

一个好的产品知识库应该成为客户了解产品功能、解决故障和满足产品相关查询的重要资源。但如果没有合理地维护和更新&#xff0c;其可能就失去了存在的价值。 知识库的有效性取决于其包含的信息是否全面、准确和实用。而要实现这一点&#xff0c;需要关注一些关键功能。 以人…

go中如何进行单元测试案例

一. 基础介绍 1. 创建测试文件 测试文件通常与要测试的代码文件位于同一个包中。测试文件的名称应该以 _test.go 结尾。例如&#xff0c;如果你要测试的文件是 math.go&#xff0c;那么测试文件可以命名为 math_test.go。 2. 编写测试函数 测试函数必须导入 testing 包。每…

2024年甘肃省职业院校技能大赛信息安全管理与评估 样题一 理论题

竞赛需要完成三个阶段的任务&#xff0c;分别完成三个模块&#xff0c;总分共计 1000分。三个模块内容和分值分别是&#xff1a; 1.第一阶段&#xff1a;模块一 网络平台搭建与设备安全防护&#xff08;180 分钟&#xff0c;300 分&#xff09;。 2.第二阶段&#xff1a;模块二…

微信小程序怎么引入webview的url是本地的路径

当微信小程序访问类似http://10.27.0.15:8065/#/my这样的地址的时候会出问题。但是我们也不能每次把写的H5的代码发布在看效果啊&#xff1f; 只需要修改一个地方就可以啦。

Transformer 位置编码

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

LLM(十)| Tiny-Vicuna-1B:Tiny Models轻量化系列Top One

在过去的一年里&#xff0c;见证了LLM的蓬勃发展&#xff0c;而模型的参数量也不断刷新记录&#xff0c;在2023年下半年&#xff0c;外界传言GPT-4是一个专家混合模型。因此&#xff0c;如果你想用人工智能做点什么&#xff0c;你需要IBM或NASA类似的计算能力&#xff1a;你怎么…

纯c++简易的迷宫小游戏

一个用c写的黑框框迷宫 适合新手入门学习 也适合大学生小作业 下面附上代码 总体思路 初始化游戏界面&#xff1a;设置迷宫的大小&#xff08;WIDTH和HEIGH&#xff09;&#xff0c;生成迷宫地图&#xff08;map&#xff09;&#xff0c;包括墙壁、空地、起点和终点。显示…

【K12】Python写串联电阻问题的求解思路解析

问题源代码 方法&#xff1a;calculate_circuit_parameter 构造题目&#xff1a; 模板&#xff1a; 已知电阻R1为 10Ω&#xff0c;电阻R2为 5Ω&#xff0c;电压表示数为2.5V&#xff0c;求电源电压U&#xff1f; 给合上面题目&#xff0c;利用Python程序&#xff0c;可以任…

【论文笔记合集】卷积神经网络之深度可分离卷积(Depthwise Separable Convolution)

本文作者&#xff1a; slience_me 我看的论文地址&#xff1a;MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 内容 1. 标准卷积 假设输入为DFDFM&#xff0c;输出为输入为DFDFN&#xff0c;卷积核为DKDKM&#xff0c;共有N个卷积核进…

LeetCode刷题---随机链表的复制

解题思路&#xff1a; 使用哈希表来解决该问题 因为题中要求是深拷贝 首先对原链表遍历&#xff0c;将原链表每个节点和新链表每个节点形成对应关系&#xff0c;存入到哈希表中&#xff0c;key为原链表的节点&#xff0c;value为新链表的节点。 之后重置辅助链表指向原链表头节…