JAVA考勤管理系统
- 格式:doc
- 大小:236.16 KB
- 文档页数:18
学生信息管理系统是大中小学教育管理系统的重要组成部分,它对学校学生的信息进行统一管理,包括学生的基本信息、成绩信息、考勤信息等。
而基于java web的学生信息管理系统具有灵活性高、安全性强、可扩展性好等特点,已被广泛应用于各类学校教育管理系统中。
本文将就基于java web的学生信息管理系统进行设计,并分别从系统需求分析、系统架构设计、系统功能设计、系统模块设计等方面进行探讨。
1. 系统需求分析学生信息管理系统的需求分析是整个系统设计的关键部分,主要包括功能需求和非功能需求两个方面:1.1 功能需求(1)学生信息管理:包括学生基本信息管理、学生成绩管理、学生考勤管理等;(2)教师信息管理:包括教师基本信息管理、教师工资管理、教师教学管理等;(3)课程信息管理:包括课程设置、课程安排、课程成绩管理等;(4)班级信息管理:包括班级成员管理、班级活动管理、班级资源管理等;(5)系统权限管理:包括用户权限管理、角色权限管理、系统日志管理等。
1.2 非功能需求(1)性能要求:系统要求能够快速响应用户请求,保证系统的高性能;(2)安全性要求:系统要求具有较高的安全性,防止未经授权的用户对系统进行非法操作;(3)可扩展性要求:系统要求能够方便地进行功能扩展,满足不断变化的教育管理需求。
2. 系统架构设计基于java web的学生信息管理系统的架构设计主要包括三层架构和MVC架构两种:2.1 三层架构(1)表现层:使用JSP技术进行页面展示,通过Servlet与业务逻辑层进行交互;(2)业务逻辑层:采用Servlet作为控制器,调用JavaBean实现业务逻辑处理;(3)数据访问层:通过JDBC技术与数据库进行交互,完成数据的读写操作。
2.2 MVC架构MVC架构将系统分为模型层、视图层和控制器层,通过控制器层协调模型层和视图层的相互作用,实现系统的解耦和模块化设计,提高系统的灵活性和可维护性。
3. 系统功能设计基于java web的学生信息管理系统的功能设计主要包括学生信息管理功能、教师信息管理功能、课程信息管理功能、班级信息管理功能和系统权限管理功能等:3.1 学生信息管理功能(1)学生信息录入:将学生的基本信息录入系统,包括学号、尊称、性别、芳龄等;(2)学生成绩管理:记录学生的各科成绩,包括课程编号、成绩、考试时间等;(3)学生考勤管理:记录学生的出勤情况,包括考勤日期、考勤状态等。
基于javaweb学生考勤管理系统设计与实现一、引言随着现代教育的不断发展,学生考勤管理已经成为了学校教育管理中不可或缺的一部分。
传统的考勤方式需要大量的人力物力,而且容易出现记录错误等问题,因此开发一款基于JavaWeb技术的学生考勤管理系统是非常有必要和重要的。
二、需求分析1.功能需求(1)管理员登录:管理员可以通过用户名和密码登录系统。
(2)班级管理:管理员可以添加、删除、修改班级信息。
(3)学生管理:管理员可以添加、删除、修改学生信息。
(4)课程管理:管理员可以添加、删除、修改课程信息。
(5)考勤记录:管理员可以查看每个班级每个学生每节课的考勤情况。
2.非功能需求(1)安全性:系统需要保证数据安全,防止恶意攻击和非法访问。
(2)稳定性:系统需要保证稳定运行,避免因为程序错误或者其他原因导致系统崩溃或者数据丢失等问题。
(3)易用性:系统需要简单易用,用户可以快速上手使用。
三、设计与实现1.技术选型本系统采用JavaWeb技术进行开发,具体包括以下内容:(1)前端框架:Bootstrap、jQuery(2)后端框架:Spring、SpringMVC、Mybatis(3)数据库:MySQL2.系统架构设计本系统采用B/S架构,由前端页面、控制器和后台服务组成。
其中前端页面采用Bootstrap和jQuery进行开发,控制器采用SpringMVC 框架进行开发,后台服务采用Spring和Mybatis框架进行开发。
3.数据库设计本系统需要设计三张表:班级表、学生表和课程表。
具体字段如下:班级表:字段名类型说明id int 班级ID,主键自增长name varchar(20) 班级名称学生表:字段名类型说明id int 学生ID,主键自增长name varchar(20) 学生姓名class_id int 所属班级ID课程表:字段名类型说明id int 课程ID,主键自增长name varchar(20) 课程名称4.模块设计与实现(1)登录模块:管理员通过用户名和密码登录系统。
《基于TCP-IP的请销假考勤管理系统设计与实现》篇一基于TCP-IP的请销假考勤管理系统设计与实现一、引言随着企业规模的扩大和员工数量的增加,考勤管理成为了企业管理的重要环节。
为了提高考勤管理的效率和准确性,基于TCP/IP的请销假考勤管理系统应运而生。
本文将详细介绍该系统的设计与实现过程,包括系统架构、功能模块、数据库设计以及系统实现等方面。
二、系统架构设计1. 整体架构本系统采用C/S(客户端/服务器)架构,以TCP/IP网络通信协议为基础,实现员工、管理员与服务器之间的数据交互。
整体架构包括客户端、服务器端以及数据库三部分。
2. 客户端设计客户端主要负责与员工进行交互,包括请销假申请、考勤数据查询等功能。
设计时需考虑界面的友好性、操作简便性以及数据安全性。
3. 服务器端设计服务器端负责接收客户端的请求,对请求进行处理后将结果返回给客户端。
服务器端需具备高并发处理能力、数据存储能力以及良好的可扩展性。
4. 数据库设计数据库是整个系统的核心,负责存储员工的考勤数据、请销假记录等信息。
设计时需考虑数据的完整性、安全性和查询效率。
常用的数据库有MySQL、Oracle等。
三、功能模块设计1. 请假申请模块员工可通过客户端提交请假申请,包括病假、事假、年假等类型。
申请信息需包括请假类型、请假时间、原因等。
管理员可对申请进行审批,审批结果实时反馈给员工。
2. 销假模块员工在请假结束后需进行销假操作,通过客户端提交销假申请。
管理员对销假申请进行审核,审核通过后更新员工的考勤状态。
3. 考勤查询模块员工可通过客户端查询自己的考勤记录,包括请假记录、加班记录等。
管理员可查询整个部门的考勤情况,为管理决策提供依据。
4. 统计分析模块系统具备强大的统计分析功能,可根据考勤数据进行各种报表的生成,如请假报表、考勤月报等。
这些报表可帮助企业了解员工的出勤情况,为人力资源规划提供依据。
四、系统实现1. 技术选型系统采用Java语言进行开发,使用Spring框架实现业务逻辑,MySQL数据库存储数据。
《基于TCP-IP的请销假考勤管理系统设计与实现》篇一基于TCP-IP的请销假考勤管理系统设计与实现一、引言随着企业信息化进程的加速,传统的请销假考勤管理方式已经无法满足现代企业的需求。
为了提高管理效率,减少人为错误,基于TCP/IP的请销假考勤管理系统应运而生。
本文将详细介绍该系统的设计与实现过程,以期为相关领域的研究和应用提供参考。
二、系统设计1. 系统架构本系统采用C/S(客户端/服务器)架构,通过TCP/IP协议进行数据传输。
系统主要由考勤管理模块、请销假模块、数据传输模块和数据库模块组成。
其中,考勤管理模块负责员工考勤数据的采集和处理;请销假模块负责员工请销假申请的提交和审批;数据传输模块负责数据的发送和接收;数据库模块负责存储和管理数据。
2. 模块设计(1)考勤管理模块:该模块负责员工考勤数据的采集和处理。
通过与门禁系统、摄像头等设备连接,实时获取员工的出入记录,并自动生成考勤报表。
同时,员工可以通过该模块查看自己的考勤情况。
(2)请销假模块:该模块负责员工请销假申请的提交和审批。
员工可以通过该模块提交请销假申请,包括请假类型、时间、原因等信息。
管理员可以通过该模块对申请进行审批,并记录审批结果。
(3)数据传输模块:该模块负责数据的发送和接收。
通过TCP/IP协议,将考勤数据、请销假申请等信息传输至服务器,并保证数据传输的稳定性和安全性。
(4)数据库模块:该模块负责存储和管理数据。
采用关系型数据库管理系统,对员工信息、考勤数据、请销假申请等信息进行分类存储和管理,以便后续查询和分析。
三、系统实现1. 技术选型本系统采用Java语言进行开发,使用MVC(模型-视图-控制器)设计模式。
数据库采用关系型数据库管理系统,如MySQL 或Oracle等。
网络通信采用TCP/IP协议,使用Socket编程实现数据的发送和接收。
2. 具体实现(1)考勤管理模块实现:通过与门禁系统、摄像头等设备连接,实时获取员工的出入记录。
基于Java的智慧校园管理系统设计与实现智慧校园管理系统是一种基于信息技术的校园管理平台,旨在提高学校管理效率、优化资源配置、改善教学环境,为师生提供更便捷、高效的服务。
本文将介绍基于Java语言开发的智慧校园管理系统的设计与实现。
一、系统需求分析1.1 功能需求智慧校园管理系统应包括学生信息管理、教师信息管理、课程管理、考勤管理、成绩管理、图书馆管理、校园卡管理等功能模块。
其中,学生信息管理包括学生基本信息录入、修改和查询;教师信息管理包括教师基本信息录入、修改和查询;课程管理包括课程信息录入、修改和查询;考勤管理包括学生考勤记录的录入和查询;成绩管理包括学生成绩录入和查询;图书馆管理包括图书借阅和归还等功能;校园卡管理包括充值、消费记录查询等功能。
1.2 性能需求智慧校园管理系统需要具有良好的性能,能够支持大量并发用户访问。
系统响应速度应快,界面友好,操作简单方便。
同时,系统应具备较高的稳定性和安全性,能够保障数据的完整性和机密性。
二、系统设计2.1 系统架构智慧校园管理系统采用B/S架构,即浏览器/服务器架构。
前端使用HTML、CSS、JavaScript等技术实现页面展示和用户交互,后端采用Java语言编写业务逻辑处理和数据存取代码。
数据库采用MySQL 进行数据存储。
2.2 模块设计系统主要分为前台模块和后台模块。
前台模块包括学生端和教师端,提供学生和教师登录、个人信息查看、课程查询、成绩查询等功能;后台模块包括管理员端,提供用户权限管理、数据维护、系统配置等功能。
三、系统实现3.1 开发工具系统开发使用Eclipse作为集成开发环境,使用Tomcat作为Web 服务器,使用MySQL作为数据库。
3.2 技术选型系统采用Spring框架实现业务逻辑控制,采用Spring MVC框架实现前后端交互,采用MyBatis框架实现数据持久化操作。
同时,使用Bootstrap框架实现页面布局和样式设计。
基于java员工考勤管理制度一、目的为加强公司内部管理,规范员工考勤行为,保障公司正常经营秩序,提高工作效率,根据国家相关法律法规及公司实际情况,特制定本基于Java员工考勤管理制度。
二、适用范围1. 本制度适用于公司全体在编员工(以下简称员工)。
2. 试用期员工自入职之日起,须遵守本考勤管理制度。
3. 各级管理人员及特殊岗位员工可根据实际情况,在本制度基础上进行适当调整,并报人力资源部审批。
三、工作时间1. 公司实行标准工作制,即每周工作5天,每天工作8小时,具体工作时间如下:- 上午:09:00 - 12:00- 下午:13:30 - 17:30注:中午休息1.5小时。
2. 根据公司业务需求及季节变化,公司可对工作时间进行调整,调整方案由人力资源部通知全体员工。
3. 员工应按照规定的工作时间准时到岗,不得迟到、早退、旷工。
4. 对于特殊岗位或项目需要加班的员工,按照公司加班管理制度执行,具体规定见相关制度。
四、考勤制度1、每日签到制度- 员工每日需通过公司指定的Java考勤系统进行签到,签到方式包括但不限于指纹识别、刷脸识别、账号密码登录等。
- 签到时应确保个人信息准确无误,如发现信息有误,应及时向考勤管理员报告并予以更正。
2、签到次数和时间- 员工每日应签到两次,分别为上午上班签到和下午上班签到。
- 上午签到时间为08:45至09:15,下午签到时间为13:15至13:45。
- 员工应在规定签到时间内完成签到,超出签到时间视为迟到。
3、因公外出未签到处理- 因公外出不能进行正常签到的员工,需提前向直接上级申请,并抄送考勤管理员。
- 经批准的因公外出,员工应在返回公司后第一时间进行补签,并提供相应的出差证明或工作记录。
4、忘记签到处理- 员工如因个人原因忘记签到,可在当天内向直接上级说明情况,并经批准后,向考勤管理员申请补签。
- 补签申请需提供有效证明,如同事证明、工作记录等,经核实后予以补签。
基于Java Web的学生考勤系统设计与实现可以包括以下步骤:
系统需求分析:明确学生考勤系统的功能需求和业务流程。
确定系统所需的基本功能,例如学生信息管理、课程管理、考勤记录管理等。
数据库设计:设计适合学生考勤系统的数据库结构,包括学生信息表、课程表、考勤记录表等。
确定表之间的关系和字段。
前端界面设计:设计用户友好的前端界面,包括登录界面、学生信息展示界面、考勤记录录入界面等。
使用HTML、CSS和JavaScript等前端技术进行界面设计。
后端开发:使用Java Web开发框架(如Spring MVC、Struts2等)进行后端开发。
实现与数据库交互的数据访问层(DAO)和业务逻辑层(Service),处理用户请求并进行相应的数据库操作。
考勤记录管理:实现考勤记录的录入、查询和修改功能。
根据课程和学生信息,记录学生的出勤情况,并将数据存储到数据库中。
学生信息管理:实现学生信息的添加、查询、修改和删除功能。
管理学生的基本信息,如姓名、学号、班级等。
课程管理:实现课程的添加、查询、修改和删除功能。
管理课程的基本信息,如课程名称、授课教师等。
用户权限管理:设置不同角色的用户权限,如管理员、教师和学生,限制他们的操作范围和权限。
部署与测试:将开发好的学生考勤系统部署到服务器上,并进行系统测试和调试,确保系统的稳定性和功能正常运行。
系统优化和维护:对学生考勤系统进行性能优化和安全加固,及时处理系统问题和bug,并定期进行系统维护和更新。
考勤规则实现 java我们需要明确考勤规则的基本要求。
考勤系统通常会记录员工的上下班时间、请假情况、加班情况等信息,以便对员工的出勤情况进行统计和分析。
因此,考勤规则需要包括以下几个方面的内容:考勤时间、请假规定、加班规定、迟到早退规定等。
在考勤时间方面,我们可以定义一个时间段,比如每天上午8点到下午17点为正常上班时间。
在这个时间段内,员工需要签到和签退,系统会记录员工的上班时间和下班时间。
如果员工没有在规定时间内签到或签退,系统会自动记录迟到或早退的情况。
请假规定是考勤系统中比较重要的一部分。
不同公司对于请假的规定可能有所不同,可以根据公司的实际情况来定义请假规则。
比如,员工可以根据自己的情况请假,但需要提前一定的时间通知主管,并填写请假申请表。
系统会记录员工的请假时间和请假原因,并在考勤统计中进行相应的处理。
加班规定是考勤规则中另一个重要的方面。
有些公司需要员工加班,为此可以定义加班时间段和加班补偿规定。
员工在加班时,需要在系统中进行加班申请,并填写加班原因。
系统会记录员工的加班时间,并根据加班补偿规定进行相应的处理。
考勤规则还需要考虑迟到和早退的情况。
可以定义一个容许范围,比如员工可以在规定的时间范围内迟到或早退一定时间,超过这个时间就算迟到或早退。
系统会记录员工的迟到和早退情况,并在考勤统计中进行相应的处理。
除了以上的基本要求外,考勤规则还可以根据实际情况进行扩展。
比如,可以定义特殊情况下的考勤规定,比如员工因为病假、事假等原因不能正常上班,需要进行相应的处理。
另外,还可以定义考勤统计的规则,比如每月末生成考勤报表,统计员工的出勤情况等。
在 Java中实现考勤规则可以使用面向对象的思想来设计和实现。
可以定义一个员工类,包含员工的基本信息和考勤记录等属性。
可以定义一个考勤系统类,包含考勤规则和考勤统计等方法。
可以使用集合类来保存员工的考勤记录,并实现相应的查询和统计功能。
总结起来,考勤规则是一个非常重要的管理工具,在企业中起到了至关重要的作用。
基于Java的学生考勤管理系统设计与实现一、引言随着信息技术的不断发展,学生考勤管理系统在教育领域中扮演着越来越重要的角色。
传统的考勤方式已经无法满足现代学校对考勤管理的需求,因此开发一套基于Java的学生考勤管理系统具有重要意义。
本文将介绍如何设计和实现这样一套系统。
二、系统需求分析在设计学生考勤管理系统之前,首先需要进行系统需求分析。
系统应该包括学生信息管理、教师信息管理、课程信息管理、考勤记录管理等功能模块。
同时,系统需要具备用户权限管理、数据统计分析等辅助功能,以提高系统的实用性和便捷性。
三、系统设计1. 技术选型基于Java语言开发学生考勤管理系统是一个明智的选择。
Java 具有跨平台性、稳定性强、安全性高等优点,适合开发大型系统。
同时,采用Spring框架可以提高开发效率,MyBatis可以简化数据库操作,结合前端技术如HTML、CSS、JavaScript等,可以构建一个功能完善的学生考勤管理系统。
2. 系统架构设计学生考勤管理系统可以采用MVC(Model-View-Controller)架构,将业务逻辑、数据处理和用户界面分离,提高系统的可维护性和扩展性。
同时,可以引入缓存机制、消息队列等技术优化系统性能。
3. 数据库设计数据库设计是学生考勤管理系统中至关重要的一环。
需要设计合理的数据库表结构,确保数据存储规范化、一致性和完整性。
同时,可以采用数据库索引、触发器等技术提升数据库查询效率。
四、系统实现1. 学生信息管理模块学生信息管理模块包括学生基本信息录入、修改、删除等功能。
通过界面友好的方式展示学生信息,并提供搜索、排序等便捷操作。
2. 教师信息管理模块教师信息管理模块包括教师基本信息录入、修改、删除等功能。
管理员可以对教师信息进行维护,并分配相应权限。
3. 课程信息管理模块课程信息管理模块包括课程添加、编辑、删除等功能。
管理员可以设置课程时间表,并与教师和学生信息进行关联。
{#include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> #include<malloc.h> #include<time.h> /* 所使用的头文件 */ typedef struct/* 时间结构体定义 */{int hour; int minute; }TIME;typedef struct worker /* 职工结构体定义 */ {char id[10]; char name[10];TIME time[20]; struct worker *next; }worker;int menu_select(); void welcome(); void createInfo(); void createRec(); void listRec(); void searchRec(); void saveRec(); void deleteRec(); void modifyRec(); void loadRec(); void resetPassword(); int fun();worker *head=NULL; writeinfo_flag=0;char password[16]="888888"; struct tm *timeinfo; int main()/* 主菜单 *//* 欢迎界面 */ /* 新建职工信息 */ /* 录入考勤信息 *//* 浏览当天考勤信息 */ /*/ 查询考勤信息 *//* 保存所有信息 *//* 删除考勤信息 */ /* 修改考勤信息 *//* 加载文件信息 *//* 重设密码 *//* 判断输入选择是否正确 *//* 链表头指针 head*//* 信息保存标记 *//* 初始密码 *//* 主函数 */char s[16]; welcome();loadRec();/* 欢迎界面 */ /* 加载文件信息 */printf("\n 提示:\n\n 初始密码为:888888\n"); /* 进入系统密码管理*/ printf("\t\t\t\n\n\n\n\n 请输入密码,进去系统( 密码不超过15 个字符):"); scanf("%s",s);while(strcmp(password,s)!=0){printf("\n 密码错误,请重新输入:"); scanf("%s",s);} system("cls");for(;;) /* 菜单循环*/{ switch(menu_select()) {case 0:system("cls");createInfo();break;case 1:system("cls");createRec();break;case 2:system("cls");listRec();break;case 3:system("cls");searchRec();break;case 4:system("cls");deleteRec();break;case 5:system("cls");modifyRec();break;case 6:system("cls");saveRec();break;case 7:system("cls");resetPassword();break;case 8:system("cls");if(writeinfo_flag==1)saveRec();return 0; default:{printf("\n 选择错误,请按回车键返回后,重新输入(0~8)!"); getchar();getchar();system("cls"); break;}}}return 0;}/* 选择菜单*/ int menu_select(){worker *p=head;int c,k;time_t nowtime; time( &nowtime );timeinfo = localtime( &nowtime );printf("\t\t** ************ 选择菜单************* *\t");/* 在菜单中显示当前时间*/if(timeinfo->tm_wday==0){printf(" 时间:星期天");printf(" %d:%d",timeinfo->tm_hour,timeinfo->tm_min);}elseprintf(" 时间: 星期%d %d:%d",timeinfo->tm_wday,timeinfo->tm_hour,timeinfo->tm_min);printf("\n ------------------------------------------------------------------ ");printf("\t\t\t0. 新建职工信息\n");printf("\t\t1. 录入考勤信息\n");printf("\t\t2. 浏览考勤信息\n");printf("\t\t3. 查询考勤信息\n");printf("\t\t4. 删除考勤信息\n");printf("\t\t5. 修改考勤信息\n");printf("\t\t6. 保存所有信息\n");printf("\t\t7. 重设密码\n");printf("\t\t8. 退出(退出后信息会自动保存在磁盘中)\n\t\t( 任何情况下按Ctrl+C 退出程序)\n ”);printf("\n ------------------------------------------------------------------ ");printf("\n\n 请输入您的选择(0~8):");scanf("%d",&c); if(timeinfo->tm_wday==0&&p!=NULL) /* 每周周日所有考勤信息初始化*/{for(k=0;k<20;k++){p->time[k].hour=88; p->time[k].minute=88;}}return c;}void loadRec() /* 从磁盘导入信息*/{worker *rear,*p,*pre; FILE *fp,*key; int i,pos=0; key=fopen("key.txt","r"); if(key!=NULL){}fscanf(key,"%s",password); fclose(key);p=(worker*)malloc(sizeof(worker)); /* 开辟一个新单元 */ fscanf(fp,"%s%s",p->id,p->name); for(i=0;i<20;i++)fscanf(fp,"%d%d",&p->time[i].hour,&p->time[i].minute); if(head==NULL){head=p; pre=p; rear=p;}else{rear->next=p; pre=rear; rear=p;}}pre->next=NULL; fclose(fp); return;}fp=fopen("workerRec.txt","r"); if(fp!=NULL){fseek(fp, 0, SEEK_END); pos= ftell(fp);}if(fp==NULL||0 == pos)件*/{printf("\n\n\n\n\n\n\t\t 提示:在!\n");printf("\n\t\t getchar();\n\n\t\t 数据库中没有职工信息请按回车键进入主菜单新建职工信息/* 指针移到文件末尾 *//* 打开职工信息文件和密码文,文本为空或文件不存system("cls"); return;}fseek(fp, 0, SEEK_SET); while(!feof(fp)){Un");/*清屏 *//* 指针移到文件开头 */ /*fp 不指向文件末尾 *//* 关闭文件 */void createInfo() /* 新建职工信息*/{worker *p,*rear;int i,k,n;char s[10];if(head!=NULL){printf("\n\n\n\n\n\n\n\t\t\t 职工信息数据库已存在\n\n\t\t\t 新建职工信息将续接在信息库的后面\n\n\n\t\t\t 按回车键继续");getchar();getchar();rear=head; while(rear->next!=NULL) rear=rear->next;system("cls");}printf("\n\n 请输入希望建立职工信息条数:");scanf("%s",s);if(fun(s)==0)return;elsen=atoi(s);printf("\n 请输入职工的工号(至多6 个字符)和姓名( 至多5 个字符):\n"); for(i=0;i<n;i++){p=(worker*)malloc(sizeof(worker));scanf("%s%s",p->id,p->name); if(strlen(p->id)>6||strlen(p->name)>5){printf("\n 职工工号或姓名输入长度不合法!\n\n 请按回车键返回主菜单\n",n);rear->next=NULL;free(p);getchar();getchar();system("cls");return;}for(k=0;k<20;k++) /* 时间初始化为88:88*/{p->time[k].hour=88;p->time[k].minute=88;}if(head==NULL){head=p;rear=p;}else{ rear->next=p; rear=p;}} p->next=NULL;printf("\n%d 条信息建立完毕!\n\n 请按回车键返回主菜单\n",n); getchar();getchar();system("cls");writeinfo_flag=1;return;}void createRec() /* 录入考勤信息*/{time_t nowtime;worker *p;char s[10],k[10],*g=k,ss[10];int c,m,week;time( &nowtime );timeinfo = localtime( &nowtime );week=timeinfo->tm_wday; if(head==NULL){printf("\n\n\n\n\t\t\t 数据库中没有职工信息\n\n\t\t\t 无法使用该功能\n\n\t\t\t 请按回车键返回主菜单新建职工信息!");getchar();getchar();system("cls");return;} if(timeinfo->tm_wday==6||timeinfo->tm_wday==0){printf("\n\n\n\n\t\t\t 今天不是工作日\n\n\t\t\t 无法录入考勤信息\n\n\t\t\t 请按回车键返回主菜单!");getchar();getchar();system("cls");return;}printf("\n\n\n\t\t\t 请选择录入考勤种类:\n\n\t\t\t1. 上午上班(8:00)\n\n\t\t\t2. 上午下班(11:30)\n\n\t\t\t3. 下午上班(14:00)\n\n\t\t\t4. 下午下班(17:30)\n\n");printf("\n\t\t 您的选择(以回车键结束):");scanf("%s",k); if(fun(k)==0)return;elsem=atoi(k);if(m<1||m>4){printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls");return ;}system("cls");if(m==1&&(timeinfo->tm_hour>11||(timeinfo->tm_hour==11&&timeinfo->tm_min>30))) {printf("\n\n\n\t\t\t 现在已经过了上午下班的时间(11:30)\n\n\t\t\t 无法录入上班的时间(8:00)信息\n\n\t\t\t 请按回车键返回主菜单");getchar();getchar();system("cls");return;}if(m==3&&(timeinfo->tm_hour>17||(timeinfo->tm_hour==17&&timeinfo->tm_min>30))){printf("\n\n\n\t\t\t 现在已经过了下午下班的时间(17:30)\n\n\t\t\t 无法录入上班的时间(14:00)信息\n\n\t\t\t 请按回车键返回主菜单");getchar();getchar();system("cls");return;}/* 可通过工号或姓名;录入*/printf("\n\n\n\t\t\t 请选择输入工号还是姓名:\n\n\t\t\t1. 选择输入工号\n\n\t\t\t2. 选择输入姓名\n\n");printf("\n\t\t 您的选择(以回车键结束):");scanf("%s",ss); if(fun(ss)==0)return;elsec=atoi(ss);if(c<1||c>2){printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls"); return ;} system("cls"); switch(c) { case 1:{ printf("\n\n\n\n\n\n\t\t\t 请输入工号(以回车键结束):"); scanf("%s",s);for(p=head;strcmp(p->id,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->id,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该工号\n");printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls"); return;} if((m==2||m==4)&&p->time[4*week+m-6].hour==88){printf("\n\n\n\n\t\t\t 该职工无上班记录,无法记录下班信息, 请先录入上班信息\n");printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls"); return;}p->time[4*week+m-5].hour=(timeinfo->tm_hour); /* 存储时间*/p->time[4*week+m-5].minute=(timeinfo->tm_min);break;}case 2:{ printf("\n\n\n\n\n\n\t\t\t 请输入姓名(以回车键结束):"); scanf("%s",s);for(p=head;strcmp(p->name,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->name,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该姓名\n");printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls");return;} if((m==2||m==4)&&p->time[4*week+m-6].hour==88) {printf("\n\n\n\n\t\t\t 该职工无上班记录,无法记录下班信息, 请先录入上班信息\n");printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls");return;}time( &nowtime );timeinfo = localtime( &nowtime );week=timeinfo->tm_wday;p->time[4*week+m-5].hour=(timeinfo->tm_hour); p->time[4*week+m-5].minute=(timeinfo->tm_min); break;}}system("cls");printf("\n\n\n\n\n\n\t\t\t 考勤成功! 请按回车键返回主菜单\n");getchar();getchar();writeinfo_flag=1;system("cls");return;}void listRec() /* 浏览当天的考勤信息*/{worker *p=head;int m,week;week=timeinfo->tm_wday;if(head==NULL){printf("\n\n\n\n\t\t\t 数据库中没有职工信息\n\n\t\t\t 无法使用该功能\n\n\t\t\t 请按回车键返回主菜单新建职工信息!");getchar();getchar();system("cls");return;}if(timeinfo->tm_wday==6||timeinfo->tm_wday==0) {printf("\n\n\n\n\t\t\t 今天不是工作日,无考勤记录\n\n\t\t\t 无法浏览当天的考勤信息\n\n\t\t\t 请按回车键返回主菜单!");getchar();getchar();system("cls");return;}printf("\n 职工今天整体出勤情况如下:\n\n");printf(" 职工号姓名上午上班上午下班下午上班下午下班\n"); while(p!=NULL){m=0;printf("\n%s %s",p->id,p->name);if((p->time[(week-1)*4].hour>8&&p->time[(week-1)*4].hour<25)||(p->time[(week-1)*4].hour==8&&p->time[(week-1)*4].minute>0))printf(" 迟到"); /* 上班时间之后来的都算迟到*/else if(p->time[(week-1)*4].hour==88&&(timeinfo->tm_hour>11||(timeinfo->tm_hour==11&&timein fo->tm_min>30)))printf(" 旷工"); /* 过了下班时间就是旷工*/else if(p->time[(week-1)*4].hour==88&&(timeinfo->tm_hour<11||(timeinfo->tm_hour==8&&timeinf o->tm_min==30)))printf(" 无记录"); /* 下班之前还没有来显示无记录*/else if(p->time[(week-1)*4].hour!=88){printf(" ");m++;}if((p->time[(week-1)*4+1].hour<11&&p->time[(week-1)*4].hour!=0)||(p->time[(week-1)*4+1].hour==11&&p->time[(week-1)*4+1].minute<30))printf(" 早退");else {printf(" ");m++;}if((p->time[(week-1)*4+2].hour>14&&p->time[(week-1)*4+2].hour<25)||(p->time[(week-1)*4+2].hour==14&&p->time[(week-1)*4+2].minute>0))printf(" 迟到");else if(p->time[(week-1)*4+2].hour==88&&(timeinfo->tm_hour>17||(timeinfo->tm_hour==17&&timeinfo->tm_min>30)))printf(" 旷工");else if(p->time[(week-1)*4+2].hour==88&&(timeinfo->tm_hour<17||(timeinfo->tm_hour==17&&tim einfo->tm_min==30)))printf(" 无记录");else if(p->time[(week-1)*4+2].hour!=88){printf(" ");m++;}if((p->time[(week-1)*4+3].hour<17&&p->time[(week-1)*4+2].hour!=0)||(p->time[(week-1)*4+3].hour==17&&p->time[(week-1)*4+3].minute<30))printf(" 早退");else {printf(" ");m++;}if(m==4&&(timeinfo->tm_hour>17||(timeinfo->tm_hour==17&&timeinfo->tm_min>30))) printf(" 全勤!");p=p->next;}printf("\n\n 显示完毕,按回车键返回主菜单!");getchar();getchar();system("cls");return;}void searchRec() /* 根据工号或姓名查找考勤信息*/{worker *p=head;int c,i;char s[10],k[10];if(head==NULL){printf("\n\n\n\n\t\t\t 数据库中没有职工信息\n\n\t\t\t 无法使用该功能\n\n\t\t\t 请按回车键返回主菜单新建职工信息!");getchar();getchar();system("cls");return;}printf("\n\n\n\t\t\t 请选择输入工号还是姓名:\n\n\t\t\t1. 选择输入工号\n\n\t\t\t2. 选择输入姓名\n\n");printf("\n\t\t 您的选择(以回车键结束):");scanf("%s",k); if(fun(k)==0)return;elsec=atoi(k); if(c<1||c>2){ printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始getchar();getchar();system("cls"); return ;!\n");} system("cls"); switch(c) { case 1:{ printf("\n\n\n\n\n\n\t\t\t 请输入工号(以回车键结束):"); scanf("%s",s);for(p=head;strcmp(p->id,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->id,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该工号\n"); printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls"); return;}break;}case 2:{ printf("\n\n\n\n\n\n\t\t\t 请输入姓名(以回车键结束):"); scanf("%s",s);for(p=head;strcmp(p->name,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->name,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该姓名\n"); printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls"); return;}break;}system("cls");printf(" 职工号姓名\n\n");printf(" %s %s",p->id,p->name);printf(" 周一");for(i=0;i<4;i++) {上午上班上午下班下午上班下午下班if(p->time[i].hour==88)printf(" --:--if(p->time[i].hour!=88) printf(" %2d:%2d if(i==4) printf("\n\n"); ");",p->time[i].hour,p->time[i].minute);printf("\n 周二"); for(i=4;i<8;i++){if(p->time[i].hour==88)printf(" --:--if(p->time[i].hour!=88) printf(" %2d:%2d if(i==8) printf("\n\n"); ");",p->time[i].hour,p->time[i].minute);}printf("\n 周三"); for(i=8;i<12;i++){if(p->time[i].hour==88)printf(" --:--if(p->time[i].hour!=88) printf(" %2d:%2d if(i==12) printf("\n\n"); ");",p->time[i].hour,p->time[i].minute);}printf("\n 周四"); for(i=12;i<16;i++){if(p->time[i].hour==88)printf(" --:--if(p->time[i].hour!=88) printf(" %2d:%2d ");",p->time[i].hour,p->time[i].minute);if(i==16)printf("\n\n");}printf("\n 周五");for(i=16;i<20;i++){if(p->time[i].hour==88)printf(" --:-- ");if(p->time[i].hour!=88)printf(" %2d:%2d ",p->time[i].hour,p->time[i].minute); if(i==20)printf("\n\n");}printf("\n\n\n\n\n\n\t\t\t 显示完毕,按回车键返回主菜单!"); getchar();getchar();system("cls");return;}void saveRec() /* 储存所有信息*/{worker *p=head;FILE *fp,*key;int i;if(writeinfo_flag==0){printf("\n\n\n\n\t\t\t 信息无改动,无需保存!\n\n\t\t\t 请按回车键返回主菜单\n");getchar();getchar();system("cls");return;}if(writeinfo_flag==1){ if((fp=fopen("workerRec.txt","w"))==NULL||(key=fopen("key.txt","w"))==NULL) {printf("\n\t\t\t 提示:\n\n\t\t\t 存储信息失败!\n"); printf("\n\t\t\t 请按回车键进入主菜单重新开始\n"); getchar();getchar();system("cls");return;} while(p!=NULL){fprintf(fp,"%s\n%s\n",p->id,p->name); for(i=0;i<20;i++)fprintf(fp,"%d\n%d\n",p->time[i].hour,p->time[i].minute); p=p->next;} fprintf(key,"%s",password);fclose(fp),fclose(key);writeinfo_flag=0; /* 消除改动标志*/ printf("\n\n\n\n\n\t\t\t 保存完毕,按回车键继续!");getchar();getchar();system("cls");return;}}void deleteRec() //删除考勤信息*/{worker *p,*pre=head;char s[16],k[10];int c; if(head==NULL){printf("\n\n\n\n\t\t\t 数据库中没有职工信息\n\n\t\t\t 无法使用该功能\n\n\t\t\t 请按回车键返回主菜单新建职工信息!");getchar();getchar(); system("cls"); return;}printf("\n\n\n\t\t\t 提示:\n\n\t\t\t 初始密码为:888888\n"); printf("\n\n\n\t\t\t 请输入密码(密码不超过15 个字符):"); scanf("%s",s);while(strcmp(password,s)!=0){printf("\n\n\t\t\t 密码错误!\n\n"); printf("\t\t\t 按回车键返回主菜单!"); getchar();getchar();system("cls");return;} printf("\n\n\n\t\t\t 密码输入成功!\n\n\t\t\t 请按回车键继续"); getchar();getchar();system("cls");printf("\n\n\n\t\t\t 请选择输入工号还是姓名:\n\n\t\t\t1. 选择输入工号\n\n\t\t\t2. 选择输入姓名\n\n");printf("\n\t\t 您的选择(以回车键结束):");scanf("%s",k); if(fun(k)==0)return;elsec=atoi(k); if(c<1||c>2){ printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始getchar();getchar();system("cls"); return ;!\n");} system("cls"); switch(c) { case 1:{ printf("\n\n\n\n\n\n\t\t\t 请输入工号:"); scanf("%s",s);for(p=head;strcmp(p->id,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->id,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该工号\n"); printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls"); return;}break;}case 2:{ printf("\n\n\n\n\n\n\t\t\t 请输入姓名:"); scanf("%s",s);for(p=head;strcmp(p->name,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->name,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该姓名\n"); printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls");return;} break;}} system("cls"); if(p==head) head=p->next;else{ for(;pre->next!=p;pre=pre->next); pre->next=p->next;}free(p);printf("\n\n\n\n\n\n\t\t\t 删除成功,请按回车键返回主菜单!"); getchar();getchar();system("cls"); writeinfo_flag=1; return;}void modifyRec() /* 修改考勤信息*/{worker *p,*pre=head; char s[16],k[10];int c; if(head==NULL){ printf("\n\n\n\n\t\t\t 数据库中没有职工信息\n\n\t\t\t 无法使用该功能\n\n\t\t\t 请按回车键返回主菜单新建职工信息!");getchar();getchar(); system("cls"); return;}printf("\n\n\n\t\t\t 提示:\n\n\t\t\t 初始密码为:888888\n"); printf("\n\n\n\t\t\t 请输入密码(密码不超过15 个字符):"); scanf("%s",s);if(strcmp(password,s)!=0){printf("n\n\n\t\t\t 密码错误!\n\n"); printf("\t\t\t 按回车键返回主菜单!"); getchar();getchar();system("cls");return;}printf("\n\n\n\t\t\t 密码输入成功!\n\n\t\t\t 请按回车键继续"); getchar();getchar();system("cls");printf("\n\n\n\t\t\t 请选择通过工号修改还是姓名修改:\n\n\t\t\t1. 选择输入工号\n\n\t\t\t2. 选择输入姓名\n\n");printf("\n\n\n\t\t 您的选择(以回车键结束):"); scanf("%s",k);if(fun(k)==0)return;elsec=atoi(k); if(c<1||c>2){printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls");return ;} system("cls"); switch(c) { case 1:{printf("\n\n\n\n\n\n\t\t\t 请输入工号:"); scanf("%s",s);for(p=head;strcmp(p->id,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->id,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该工号\n");printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls");return;}break;} case 2:{ printf("\n\n\n\n\n\n\t\t\t 请输入姓名:"); scanf("%s",s);for(p=head;strcmp(p->name,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->name,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该姓名\n"); printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls");return;}break;}} system("cls");printf("\n\n\n\t\t\t 请选择要修改的内容:\n\n\t\t\t1. 工号\n\n\t\t\t2. 姓名\n\n\t\t\t3. 上午上班时间\n\n\t\t\t4. 上午下班时间\n\n\t\t\t5. 下午上班时间\n\n\t\t\t6. 下午下班时间");printf("\n\n\n\t\t 您的选择(以回车键结束):");scanf("%s",&k);if(fun(k)==0)return;elsec=atoi(k);if(c<1||c>6) {printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls"); return ;}system("cls");switch(c){case 1: printf("\n\n\n\t\t 请输入要修改的工号(至多10 个字符):"); scanf("%s",p->id);break; case 2: printf("\n\n\n\t\t 请输入要修改的姓名(至多10 个字符):"); scanf("%s",p->name);break; case 3: printf("\n\n\n\t\t 请输入要修改星期几的考勤( 请输入1~5):"); scanf("%d",&c);printf("\n\n\n\t 请输入要修改的时间和分钟(如:10 点5 分就输入10:05):");scanf("%d:%d",&p->time[(c-1)*4].hour,&p->time[(c-1)*4].minute);break;case 4: printf("\n\n\n\t\t 请输入要修改星期几的考勤( 请输入1~5):"); scanf("%d",&c);printf("\n\n\n\t 请输入要修改的时间和分钟(如:10 点5 分就输入10:05):");scanf("%d:%d",&p->time[(c-1)*4+1].hour,&p->time[(c-1)*4+1].minute);break;case 5:printf("\n\n\n\t\t 请输入要修改星期几的考勤( 请输入1~5):"); scanf("%d",&c);printf("\n\n\n\t 请输入要修改的时间和分钟(如:10 点5 分就输入10:05):");scanf("%d:%d",&p->time[(c-1)*4+2].hour,&p->time[(c-1)*4+2].minute);break; case 6: printf("\n\n\n\t\t 请输入要修改星期几的考勤( 请输入1~5):"); scanf("%d",&c);printf("\n\n\n\t 请输入要修改的时间和分钟(如:10 点5 分就输入10:05):");scanf("%d:%d",&p->time[(c-1)*4+3].hour,&p->time[(c-1)*4+3].minute);break;} printf("\n\n\n\t\t\t 修改成功,请按回车键返回主菜单!"); getchar();getchar();system("cls"); writeinfo_flag=1;return;}void resetPassword() /* 重设密码*/{char s[16];printf("\n\n\n\t\t 提示:\n\n\t\t 初始密码为:888888\n"); printf("\n\t\t 请输入密码(密码不超过15个字符):"); scanf("%s",s);if(strcmp(password,s)!=0){printf("\n\n\n\t\t 密码错误!\n\n"); printf("\n\n\n\t\t 按回车键返回主菜单!");getchar();getchar();system("cls");return;}printf("\n\n\t\t 密码输入成功!\n\n\t\t 请按回车键继续"); getchar();getchar();system("cls");printf("\n\n\n\t 请输入要修改的密码(密码不超过15 个字符):"); scanf("%s",s);strcpy(password,s);printf("\n\n\t 修改成功,请按回车键返回主菜单!"); getchar();getchar();system("cls"); writeinfo_flag=1;return;}void welcome() //欢迎界面{ printf("\n\n\n\n\n\n\n\t\t\t 欢迎使用职工考勤管理系统"); printf("\n\n\n\t\t\t 请按任意键进入系统,开始您的操作"); printf("\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t 作者:XXX");getch(); system("cls");return;}int fun(char *g){do{ if(*g<'0'||*g>'9') {printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls"); return 0 ;}g++; }while(*g!=0); return 1;}。
课程设计任务书目录第一章考勤管理系统功能 (3)第二章软件开发 (4)2.1 用户登录 (4)2.2 用户管理模块开发 (4)2.2.1 用户添加 (4)2.2.2 用户修改 (6)2.2.3 用户删除 (7)2.3 考勤管理模块开发 (8)2.3.1 考勤人员添加 (8)2.3.2 考勤管理设置 (9)2.3.3 考勤课程设置 (10)2.3.4 人员考勤管理 (11)2.4 考勤查询 (13)2.4.1 考勤卡号查询 (13)2.4.2 考勤姓名查询 (14)2.4.3 考勤周次查询 (15)第三章总结 (17)3.1 建立数据源 (17)3.2 控件使用 (17)3.3 JA V A 代码结构认识 (18)第一章考勤管理系统功能说明《考勤管理系统》为了解决班级考勤,开发的一个基于Java—Swing和mssql的桌面管理系统。
介绍主要功能(模块结构图)第二章软件开发2.1 用户登录1、用户登录界面2、程序的开发流程3、核心代码str3="select * from hy where name='"+str1+"'and pwd='"+str2+"'";con = DriverManager.getConnection("jdbc:odbc:wk","sa","");stmt=con.createStatement();2.2 用户管理模块开发2.2.1 用户添加1、用户添加界面输入用户名、密码数据库中是否有记录进入管理界面是否2、程序的开发流程3、核心代码String str_sql="insert into biao (name,pwd,grade) values('"+str_name+"','"+str_pwd+"','"+user_type+"')";try {conn=DriverManager.getConnection ("jdbc:odbc:wk", "sa", "");stmt=conn.createStatement(); stmt.executeUpdate(str_sql);JOptionPane.showConfirmDialog (this, "添加成功!", "系统提示", JOptionPane.CLOSED_OPTION ,RMATION_MESSAGE ); tx.setText(""); fd1.setText(""); fd2.setText(""); } catch (SQLException e) {e.printStackTrace();}按下 下一个 按钮记录是否到底否显示下一记录是游标到起始记录1、用户修改界面2、程序的开发流程3、核心代码conn = DriverManager.getConnection("jdbc:odbc:wk","sa",""); sta=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,Res ultSet.CONCUR_UPDATABLE);rs=sta.executeQuery("select name,pwd,grade from hy"); rs.next();text1.setText(rs.getString("name")); pwd.setText(rs.getString("pwd")); cpwd.setText(pwd.getText());开始修改用户修改用户或密码是否更新用户或密更新否是1、用户删除界面2、程序的开发流程删除获取卡号否是否删除是删除3、核心代码conn=DriverManager.getConnection("jdbc:odbc:wk", "sa", "");stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);rs=stmt.executeQuery("select name,pwd,grade from hy");rs.next();tx.setText(rs.getString("name"));fd1.setText(rs.getString("pwd"));rs.updateString(1,tx.getText());rs.updateString (2,fd1.getText());rs.updateInt(3, user_type);rs.updateRow();JOptionPane.showConfirmDialog(this, "确定要删除吗?", "系统提示",JOptionPane.CLOSED_OPTION,RMATION_MESSAGE);rs.deleteRow();rs=stmt.executeQuery("select name,pwd,grade from hy");2.3 考勤管理模块开发2.3.1 考勤人员添加1、考勤人员添加界面2、程序的开发流程3、核心代码conn=DriverManager.getConnection("jdbc:odbc:wk", "sa","");开始添加人员信息是否为空,重复否完成,显示在表中是stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);rs=stmt.executeQuery("select id,code,name,class,tel frombiao1");st(); r_date=new Object[rs.getRow()][];rs.beforeFirst();rs.close();stmt.close();conn.close();i=0}bg=new JTable(r_date,t); s=new JScrollPane();s.setViewportView(bg);sql="insert into kq (code,name,class,tel)values('"+scode+"','"+sname+"','"+sclass+"','"+stel+"')";2.3.2 考勤管理设置1、考勤管理设置界面2、程序的开发流程3、核心代码b1.setEnabled(false); b2.setEnabled(true);try{ conn=DriverManager.getConnection ("jdbc:odbc:wk","sa","");stmt=conn.createStatement();stmt.executeUpdate("insert into check_option (kx,c1,c2,c3,c4,c5) values('"+tx1.getText()+"','"+tx2.getText()+"','"+tx3.getText()+"',"+"'"+tx4.getText()+"','"+tx5.getText()+"','"+tx6.getText()+"')");stmt.close(); conn.close();2.3.3 考勤课程设置1、考勤课程设置界面开始检测数据库中是否存在记录设置按钮不可用,重置,可重新设置删除表中数据,设置按钮不可用是否则不可设置2、程序的开发流程新建Visual class类建立课程管理窗体添加课程将数据加入库3、核心代码try{conn=DriverManager.getConnection("jdbc:odbc:wk","sa","");stmt=conn.createStatement();for(int i=1;i<=5;i++){if(i==1){stmt.executeUpdate("insert into check_class (x1,x2,x3,x4,x5)values('"+jTextField1.getText()+"','"+jTextField6.getText()+"','"+jTextField11.getText()+"','"+jTextField16.getText()+"','"+jTextField21.getText()+"')");}2.3.4 人员考勤管理1、人员考勤管理界面2、程序的开发流程3、核心代码计算日期Date date1=new Date();Calendar c=Calendar.getInstance(Locale.CHINESE);c.setTimeInMillis(date1.getTime());c.add(Calendar.HOUR,-10);DateFormat df=DateFormat.getDateTimeInstance();try {return c.getTime().before(df.parse(date2));} catch (ParseException e) {e.printStackTrace();returnfalse ;}conn=DriverManager.getConnection ("jdbc:odbc:wk","sa","");stmt=conn.createStatement();rs=stmt.executeQuery("select code from yu_kq where选择课程 扫描卡号 确定选择考勤类型 添加name='"+tx2.getText()+"'");if(rs.next()){s_code=rs.getString(1);Calendar c=Calendar.getInstance(Locale.CHINESE);SimpleDateFormat sim=new SimpleDateFormat("yyyy-MM-ddHH:mm:ss");c.getTime(); c.add(Calendar.HOUR, +14);s_datetime=sim.format(c.getTime());2.4 考勤查询2.4.1 考勤卡号查询1、考勤卡号查询界面2、程序的开发流程输入考号/日期从数据库中获取信息显示在表中3、核心代码date=new Object[rs.getRow()][]; rs.beforeFirst();s.remove(bg); bg=newJTable(date,t);bg.setBounds(10, 120, 350, 180); s.setViewportView(bg);s.setBounds(10, 120, 350, 185);2.4.2 考勤姓名查询1、考勤姓名查询界面2、程序的开发流程3、核心代码conn=DriverManager.getConnection("jdbc:odbc:wk","sa","");stmt=conn.createStatement(ResultSet.TYPE_SCROL输入姓名/日期从数据库中获取信息显示在表中在数据库中建立“人员—考勤”视图L_SENSITIVE,ResultSet.CONCUR_UPDATABLE);rs=stmt.executeQuery("select * from find_codewhere name='"+t_code.getText()+"'");st();2.4.3 考勤周次查询1、考勤周次查询界面2、程序的开发流程输入信息从数据库中获取信息输出显示3、核心代码周次转换为天数的算法(周数-1)*7+星期几调用以下类中的方法daycount=(Integer.parseInt(t_week.getText())-1)*7+Integer.parseInt(t_date.getText());System.out.println("天数"+daycount);String result = "";DateFormat df = new SimpleDateFormat("yyyy-MM-dd");long i=86400000;try {Date ldate = df.parse(ymd);result = df.format(new Date(ldate.getTime()+nextYmd *i)).toString();} catch (ParseException e) { e.printStackTrace(); }return result;}}第三章总结3.1 建立数据源1、使用JDBC-ODBC java联接了数据源2、使用JDBC for SQL** 驱动。