基于SQL Server和C++搭建的高校教师信息管理系统
开发工具:
- SQL Server 2014(其他版本并无差别)
- Visual Studio 2013
安装以上两个开发工具都没有困难,我们的整体架构是使用SQL Server 创建我们用于存储教师信息的数据库,然后在VS 2013中新建MFC应用程序,通过ODBC实现数据库和对话框客户端的连接。
图1-1 系统架构结构图
1、SQL数据库的建立
在已经安装完成的SQL Server 数据库软件中新建一个用于存储教师信息的名为Edudatabase的数据库,打开数据库,在表选项上右键新建表,打开新建的数据表,在表中按照下图所示设置各列:
图1-2 数据表截图
我们对表进行编辑,手动输入一些教师人员的信息,当做测试数据,如下图所示:
图1-3 编辑数据表内容图
2、配置ODBC
上文已经将教师信息数据库以及存储数据的表建立完成,接下来需要对数据源进行一个配置,使数据源能够被我们的应用程序连接。
在控制面板中找到管理工具选项,打开之后找到数据源(ODBC)选项,进入ODBC数据源管理器,进行创建数据源,点击添加,选择相应的数据源驱动,然后输入相应的名称选择本机服务器,如图:
图1-4 数据源配置1
图1-5 数据源配置2
将默认的数据库更改为上文创建的命为Edudatabase的数据库,选择下一步完成创建。
图1-5 数据源配置3
图1-6 数据源配置4
数据源创建完成之后,点击测试数据源,出现如下图所示页面即表示创建成功了,此时名为Edudatabase的数据源已经和数据库连接成功。
图1-7 数据源配置成功
3、VS2013 连接数据库
使用VS 2013新建MFC应用程序,选择基于对话框类型。在新建的项目中,打开类视图,选择添加MFC ODBC类,如下图所示:
图1-8 添加MFC ODBC类
连接我们配置完成的数据源,选择数据库对象及其对应的数据表,点击完成将会自动创建相应的类文件,打开新生成的对应源文件,将错误的一句源码注释掉,如下图:
图1-9 注释错误源码
4、功能实现
在对话框中根据功能需求配置各种相应的控件,本系统主要用到的控件有如下几种:
Grope-box Control
Edit Control
Text Control
Button Control
Radio-button Control
List Control
整个系统的设计页面如图:
图1-10 界面设计图
在新建ODBC类时自动生成的头文件中可以看到,自动生成了6个相应的变量,如下:
CStringW m_stuid;CStringW m_stuname;CStringW m_stuclass;long m_usualscore;long m_testscore;long m_totalscore;
将对话框中的控件绑定对应的变量,主要功能的实现如下:
(1)列表框显示教师信息
m_list.SetExtendedStyle(dwExStyle);
m_list.SetTextColor(RGB(255, 0, 0));
m_list.SetBkColor(RGB(240, 247, 233));
m_list.InsertColumn(0, L"工号", LVCFMT_CENTER, 80, 0);
m_list.InsertColumn(1, L"姓名", LVCFMT_CENTER, 80, 0);
m_list.InsertColumn(2, L"职称", LVCFMT_CENTER, 80, 0);
m_list.InsertColumn(3, L"工龄", LVCFMT_CENTER, 80, 0);
m_list.InsertColumn(4, L"年龄", LVCFMT_CENTER, 80, 0);
m_list.InsertColumn(5, L"收入", LVCFMT_CENTER, 80, 0);CString strsql;
strsql.Format(L"select * from score order by stuid");
List_All(strsql);
(2)添加记录实现代码
void CTestDlg::OnBnClickedButton1() //添加记录
{// TODO: 在此添加控件通知处理程序代码Cscore m_set;if (m_set.IsOpen())m_set.Close();m_set.Open();m_set.AddNew();UpdateData(true);m_set.m_stuid = m_stuid;m_set.m_stuname = m_stuname;m_set.m_stuclass = m_stuclass;m_set.m_usualscore = m_usualscore;m_set.m_testscore = m_testscore;m_set.m_totalscore = m_totalscore;UpdateData(false);m_set.Update();m_set.Close();List_All(L"select*from score order by stuid");
}
(3)修改记录
void CTestDlg::OnBnClickedButton2() //修改
{// TODO: 在此添加控件通知处理程序代码UpdateData(true);Cscore m_revise;m_revise.Open();if (m_revise.IsEOF()){MessageBox(L"没有找到该学生");return;}if (!m_revise.CanUpdate()){MessageBox(L"不可修改");return;}m_revise.MoveFirst();m_revise.Edit();m_revise.m_stuid = m_stuid;m_revise.m_stuclass = m_stuclass;m_revise.m_stuname = m_stuname;m_revise.m_testscore = m_testscore;m_revise.m_totalscore = m_totalscore;m_revise.m_usualscore = m_usualscore;m_revise.Update();m_revise.Close();MessageBox(L"修改成功");
}
(4)删除记录
void CTestDlg::OnBnClickedButton3()//删除记录
{// TODO: 在此添加控件通知处理程序代码Cscore m_score;m_score.Open();m_score.MoveFirst();while (!m_score.IsEOF()){if (m_score.m_stuid == m_stuid){m_score.Delete();break;}m_score.MoveNext();}m_score.Close();List_All(L"select*from score order by stuid");
}
(5)插询记录
void CTestDlg::OnBnClickedButton5() //查询记录
{// TODO: 在此添加控件通知处理程序代码UpdateData(true);switch (num_radio){case 0:List_All(L"select * from score where stuid='" + m_stuid + L"'");break;case 1:List_All(L"select * from score where stuname='" + m_stuname + L"'");break;case 2:List_All(L"select * from score where stuclass='" + m_stuclass + L"'");break;default:break;}
}
(6)显示全表
void CTestDlg::OnBnClickedButton6() //显示全表
{// TODO: 在此添加控件通知处理程序代码List_All(L"select *from score order by stuid");
}
(7)添加欢迎页面
按照如下图所示新建类,在主框架源文件的初始化函数中添加如下代码:
mySplash wndSplash; //创建启动窗口类的实例wndSplash.Create(IDB_BITMAP1); //BMP图片的IDwndSplash.CenterWindow();wndSplash.UpdateWindow(); //send WM_PAINTSleep(2000);wndSplash.DestroyWindow();//销毁初始画面窗口
图1-10 添加欢迎页面类
5、工程测试
综述,整个系统采用C/S模式构建成功,对于整个系统进行各项功能测试,主要包括添加、修改、查询、删除、刷新显示等功能。
图1-11 系统主界面
当鼠标放在列表框中的某一行时,编辑区内会显示对应的数据信息,可供管理人员进行修改操作,查询功能分为三种方式,当我们选择使用按职称查询时,将会在列表框中显示相同职称的教室信息,如下图:
图1-12 按职称查询界面
测试结果显示基本功能全部实现,而且响应速度和查询准确性等较好,系统具备投入实用的基础。
6、改进之处
(1)整个系统的功能全部实现,且能较好的完成任务,但是欢迎页面使用的是一张图片进行了简单的延迟操作,下一步可以将欢迎页面设置成一个登陆入口,输入账号密码之后才能进入管理系统。
(2)修改信息之后,整个表格中的信息不会立即更改,需要手动点击显示全表进行刷新,后续还需要对修改代码进行优化。
代码主要参考:VS2013 MFC ODBC连接SQL SERVER数据库编程、MFC软件欢迎界面(基于对话框,VS2013)
下载课设论文戳此
下载完整代码戳此
注:下载完成后可以自己新建一个与上文一模一样的数据库,然后修改工程DSN地址即可运行程序
【点击图片直达】
基于SQL Server和C++搭建的高校教师信息管理系统相关推荐
- 基于JAVA和SQL SERVER数据库实现的医院病房信息管理系统
1 系统设计 1.1 设计目标 医院病房管理系统是一种以窗体界面为基础的多功能平台,本系统最根本的目的是让使用者与数据库能够通过系统达到交互,以此来进行医院病房的管理等相关操作.管理员可以通过该平台对 ...
- sqlserver date类型和字符串比较_基于SQL Server数据库搭建主从复制实现读写分离实战演练...
一.课程介绍 读写分离(主从同步)从字面意思就可以理解,就是把对数据库的读操作和写操作分离开.读写分离在网站发展初期可以一定程度上缓解读写并发时产生锁的问题,将读写压力分担到多台服务器上.读写分离的基 ...
- 基于Sql Server 2008的分布式数据库的实践(一)
原文 基于Sql Server 2008的分布式数据库的实践(一) 配置Sql Server 2008(Win7) 1.打开SQL server2012,使用windows身份登录 2.登录后,右键选 ...
- 《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》——1.7 小结
本节书摘来自异步社区出版社<T-SQL性能调优秘笈--基于SQL Server 2012 窗口函数>一书中的第1章,第1.7节,作者: [美]Itzik Ben-Gan,更多章节内容可以访 ...
- 基于Sql Server 2008的分布式数据库的实践(五)
基于Sql Server 2008的分布式数据库的实践(五) 原文 基于Sql Server 2008的分布式数据库的实践(五) 程序设计 ------------------------------ ...
- 基于Sql Server 2008的分布式数据库的实践(三)
原文 基于Sql Server 2008的分布式数据库的实践(三) 配置PHP 1.打开PHP配置文件,找到extension=php_mssql.dll,将前面的注释符号去掉 2.找到mssql.s ...
- 《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》——1.2 使用窗口函数的解决方案简介...
本节书摘来自异步社区出版社<T-SQL性能调优秘笈--基于SQL Server 2012 窗口函数>一书中的第1章,第1.2节,作者: [美]Itzik Ben-Gan,更多章节内容可以访 ...
- 谈谈基于SQL Server 的Exception Handlingp[下篇]
六.SqlException 在上面一节中,我给出了一个完整的例子说明了:如何在将message定义在sys.messages中保证message的一致性和可维护性:如何在Stored procedu ...
- [转]基于SQL Server 2008 Service Broker构建企业级消息系统
http://www.infoq.com/cn/articles/enterprisemessage-sqlserver-servicebroker 1.引言 Microsoft 在SQL Serve ...
最新文章
- Cell Reports:中大骆观正+上科大季泉江-CRISPR引导的细菌靶向遗传筛选系统
- scater分析单细胞转录组数据代码
- Android—将Bitmap图片保存到SD卡目录下或者指定目录
- OkHttp实现文件上传进度
- Asp.net中基于Forms验证的角色验证授权[转]
- phoenix关联hbase表:通过建立视图映射或表映射的方式
- Net方式实现主机与虚拟机互相ping通
- 已创建仓库后 github提交流程
- 你见过最“变态”的CPU散热器是什么样的?
- HTML5锚点请用id代替name
- HDU/HDOJ 1800 Flying to the Mars 搜索
- Protobuf3详细介绍
- OSPF的LSA类型 ——连载二网络LSA
- 数字图像处理matlab蔡利梅,数字图像处理:使用MATLAB分析与实现:using MATLAB
- imx 290 支持25fps
- wsimport 的使用
- 谈谈IT行业的各种证书
- express 是什么
- python提取图片中的文字自动填表,python提取图片中的文字并生成word文档
- Elasticsearch 跨机房灾备方案实战(一) —— 消息队列实现双写
热门文章
- mysql记录锁(record lock),间隙锁(gap lock),Next-key锁(Next-key lock)亲测
- 在线乞讨系统 Docker一键部署
- MATLAB--计时详解:五种计时方法的使用建议使用方法、基本优缺点
- 【第3版emWin教程】第30章 emWin6.x的SIF格式全字库生成和使用方法(Unicode编码,QSPI Flash方案)
- mysql优化 个人笔记 - 非礼勿扰 -m17
- 怎样自制干果核桃仁蛋糕
- 洛谷p1230 智力大冲浪 (贪心问题)
- 什么是锚(anchor)
- HTML-CSS-JS编码规范
- TLS/SSL 协议详解(6) SSL 数字证书的一些细节1 证书验证