大四课程设计之基于RFID技术的考勤管理系统(三)数据库设计

583 篇文章 127 订阅
106 篇文章 8 订阅

----------------------------------------------------------------------------------------

源码下载地址:

http://download.csdn.net/download/qq78442761/9971770

----------------------------------------------------------------------------------------


用SQLyog查看如下图所示:



数据库涉及3个表的构建下面是相关代码。





ER图如下所示:



下面是上课和下课打卡的流程图:


左图为上课,右图为下课


具体代码如下:

DROP TABLE IF EXISTS `subject`;

CREATE TABLE `subject` (
  `id` int(11) NOT NULL,
  `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `time_from` time NOT NULL,
  `time_to` time NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


CREATE TABLE `student` (
  `CardNum` int(11) NOT NULL,
  `id` int(11) NOT NULL,
  `class` int(11) NOT NULL,
  `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


CREATE TABLE `chose` (
  `subject_id` int(11) NOT NULL,
  `student_id` int(11) NOT NULL,
  `in_num` int(11) NOT NULL,
  `out_num` int(11) NOT NULL,
  KEY `Stu_id` (`student_id`),
  KEY `Sub_id` (`subject_id`),
  CONSTRAINT `Stu_id` FOREIGN KEY (`student_id`) REFERENCES `student` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `Sub_id` FOREIGN KEY (`subject_id`) REFERENCES `subject` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


下面是一些简单的SQL语句,都插入到Qt程序里面了:


//上课打卡时:查询选课表中是否有此人
select * from student where id in (select student_id from chose
where student_id =(select id from Student where CardNum=0110 and subject_id=(select id from subject where now()>=time_from and now()<=time_to)));
如果有就:
update chose set in_num=in_num+1 where student_id=XXXXXXXX;




//下课打卡时:查询选课表中是否有此人
select * from student where id in (select student_id from chose
where student_id =(select id from Student where CardNum=0110 and subject_id=(select id from subject where now()>time_to)));
如果有就
update chose set out_num=in_num+1 where student_id=XXXXXXXX;



//根据学号查询对应学号所有课程的出勤信息
select student.id,subject.name,chose.in_num from student,chose,subject where chose.student_id=14220307 and student.id=14220307

//根据姓名查询对应学号所有课程的出勤信息
SELECT student.name,subject.name,chose.in_num FROM student,chose,SUBJECT WHERE chose.student_id = (SELECT id FROM student WHERE NAME='张三') AND student.id=(SELECT id FROM student WHERE NAME='张三');


//查询选取了此课表的所有出勤人信息,和出勤分数:
select subject.id,subject.name,student.id,student.name,chose.in_num,chose.in_num*10 as '出勤分数'from subject,student,chose where subject.id=chose.subject_id and chose.student_id=student.id;

//更具学号删除学生数据
delete from student where id=14220310;

//添加学生
insert into student values(9999,14220388,142203,'小白');




这里我们说以下用Qt连接数据库,这里只提供关键代码:

QStringAndBool ConnMysql::LinkMySQL()
{
    db=QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName(m_DataBase);
    db.setUserName(m_UserName);
    db.setPassword(m_PassWd);
    QStringAndBool returnValues;
    if(!db.open()){
        QMessageBox::information(NULL,"提示","数据库连接失败!");
        returnValues.MesQString="数据库连接失败!";
        returnValues.MesBool=0;
        return returnValues;
    }
     else{
        QMessageBox::information(NULL,"提示","数据库连接成功!",QMessageBox::Ok);
        returnValues.MesQString="数据库连接成功!";
        returnValues.MesBool=1;
        return returnValues;
    }
}

void ConnMysql::DisLinkMysql()
{
    QString SqlQuery="exit";
    model->setQuery(SqlQuery);

}


注意:具体代码在本博文开头,此处只有关键代码;


上一篇博文:

大四课程设计之基于RFID技术的考勤管理系统(二)读取COM口数据

http://blog.csdn.net/qq78442761/article/details/77950585

下一篇博文:

大四课程设计之基于RFID技术的考勤管理系统(四)Qt界面设计

http://blog.csdn.net/qq78442761/article/details/77951707

自己做的 一个 考勤信息管理系统 第一章 可行性分析 1 1.1 引言 1 1.1.1 编写目的 1 1.1.2 项目背景 1 1.2 可行性研究的前提 2 1.2.1 要求及目标 2 1.2.2 条件假定和限制 3 1.3 技术可行性分析 3 1.3.1 技术的支持能力 3 1.3.2 技术的优势 3 1.3.3 技术的难点 4 1.4 经济可行性分析 4 1.4.1 投资 4 1.4.2 效益 4 1.5 社会可行性分析 5 1.5.1 法律因素 5 1.5.2 用户可行性 5 1.6 结论意见 5 第二章 需求分析 6 2.1 系统需求 6 2.2 功能需求 6 2.3 数据流图 7 2.3.1 系统顶层图 7 2.3.2 数据流程图一层分解图 8 2.3.3 数据流程图二层分解图 10 2.4 数据字典 14 2.4.1 数据流条目 14 2.4.2 数据项 16 2.4.2 加工条目 18 第章 概念设计 22 3.1 实体之间的联系 22 3.2 E-R图 22 3.2.1 局部E-R图 22 3.2.2 整体E-R图 25 第四章 逻辑设计 26 4.1 概念模型向关系模型的转换 26 4.1.1 1:N联系的转化的关系模式 26 4.1.2 M:N联系的转化的关系模式 26 4.2 关系模式的优化 27 4.2.1 确定范式级别 27 4.2.2 实施规范化处理 27 第五章 物理设计 29 5.1 数据库的存储结构 29 5.1.1 数据库 29 5.1.2 数据库表结构 29 5.1.3 数据的存放位置设计 32 5.1.4 系统配置 32 5.2 关系模式的存取方法 33 第六章 实现运行与维护 34 6.1 数据库的建立 34 6.2 表的创建 34 6.3 视图的设计 37 6.4 存储过程的设计 38 6.5 触发器的设计 40 6.6 运行与维护 41 总结 42 参考文献 43
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT1995

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值