盈彩体育注册(中国)有限公司
盈彩体育注册(中国)有限公司 您所在的位置:网站首页 盈彩体育注册(中国)有限公司 考勤功能的mysql数据库表设计 员工考勤数据库创建

考勤功能的mysql数据库表设计 员工考勤数据库创建

2024-05-07 10:24:57| 来源: 网络整理

数据库原理课程的实验要用嵌入式SQL实现一个职工考勤功能的程序,在网上学习许久发现C++操作mysql数据库的资料身份少。好不容易在VS2017用C++连接Mysql数据库后,却又发现《数据库系统概论》书里讲的方法(EXEC,通信区什么的)好像用不了qwq(当然可能是我没找到使用的办法)。

于是只能上网找资料模仿着实现:

按照上面一步步走应该是可以连上Mysql数据库的;

这里讲一下一些可能的坑点:如果是像Wamp这样的集成环境,Mysql可能会没有include和lib文件夹,不过没关系,到官方网站下载一个免安装版本的ZIP格式,然后把免安装版本的lin和include放到工程目录下就可以了。

连接成功后看上面的API就可以对数据库操作了。其实主要用到也就是:用字符串拼接成SQL语句然后用mysql_query()执行语句,接着用mysql_store_result得到查询结果(如果有的话),最后再用mysql_fetch_row把结果一行一行取出来。

这里贴下我的代码(才疏学浅写得很丑功能简陋,大佬轻喷):

实现的功能是:

随机读取数据库中的记录来生成一份可以任意指定规模到名单,来实现随机考勤。数据库中存放的是职工信息,包括职工号、职工姓名、职工所在部门、部门领导、每一次考勤记录、考勤成绩等。采用嵌入式的SQL编程实现。

基本规则:1)每一次考勤,不在名单中的职工默认考勤通过,2)考勤通过者,相应的考勤成绩+1,且在相应的考勤记录中记录“通过”,3)连续三次考勤不通过,考勤成绩置0,4)累计5次考勤不通过,考勤成绩永久置0。

数据库的设计是:

数据库Rollcall有两个表Staff表和Record表:

Staff表用于存储职工的职工号、职工姓名、职工所在部门、部门领导、总考勤成绩、总缺勤次数、连续缺勤次数。

Record表用于记录每个职工每一次的出勤情况,1代表出勤,0代表缺勤。

按道理来说,这里得考勤记录应该一列一列插入,博主这里没有时间实现了,大家可以尝试这样做。

1 #include

2 #include

3 #include

4 #include

5 #include

6 #include

7 #include "mysql.h" //包含MySQL的API函数的头文件

8 #pragma comment(lib,"libmysql.lib") //导入libmysql.lib库

9 using namespacestd;10 MYSQL mysql;11 int tot = 0; //考勤次数

12

13 void setrec(string id, int abs) { //在record表设置第tot次考勤记录

14 string sql = "update record set RC"+to_string(tot)+"="+to_string(abs)+"where ID=" + id + ";";15 mysql_query(&mysql, sql.c_str());16 }17

18 void absence(string id,int &tscore,int &ttotabs,int &tconabs) { //员工id出勤

19 setrec(id, 0);20 if (tscore < 0) return;21 ttotabs++; tconabs++; //缺勤,总缺勤次数和连续缺勤次数+1

22 if (tconabs >= 3) tscore = 0; //连续三次考勤不通过,考勤成绩置0

23 if (ttotabs >= 5) tscore = -1; //累计5次考勤不通过,考勤成绩永久置0

24 string sql = "update staff set Score="+to_string(tscore)+",TotAbs="+to_string(ttotabs)+",ConAbs="+to_string(tconabs)+"where ID=" + id + ";";25 mysql_query(&mysql, sql.c_str()); //更新数据

26 }27 void noabsence(string id, int &tscore, int &ttotabs, int &tconabs) { //员工id缺勤

28 setrec(id, 1);29 if (tscore < 0) return;30 tscore++; //考勤通过者,相应的考勤成绩+1

31 tconabs = 0; //出勤,连续缺勤次数置零

32 string sql = "update staff set Score=" + to_string(tscore) + ",TotAbs=" + to_string(ttotabs) + ",ConAbs=" + to_string(tconabs) + "where ID=" + id + ";";33 mysql_query(&mysql, sql.c_str()); //更新数据

34 }35

36 void rollcall(string id,int abs) { //考勤函数37 //cout



【本文地址】 转载请注明 

最新文章

推荐文章

CopyRight 2018-2019 盈彩体育注册(中国)有限公司 版权所有 豫ICP备16040606号-1