请假管理系统源代码
请假管理系统源代码
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <windows.h>#define select inttypedef struct //账户信息{char name[20]; //char pw[20]; //User.pw} User;typedef struct{char Num[20];char n1[20];char Class[20];char time[100];char reason[100];char instructor[100]; } Leave;typedef struct{char n1[20];char Num[20];// char name[20];char Class[20];char time[100];char reason[100];char instructor[100]; char suggest[100];} TEACHER;int check (char name[20]) {int i=0;FILE *f =fopen("data.dat","rb");rewind(f);for(i=0; !feof(f); i++){int d=i*sizeof(User);fseek(f,d,SEEK_SET);fread(&ru,sizeof(User),1,f);if(strcmp(name,)==0)return 1;}return -1;}int login(char name[20],char pw[20]){FILE *f =fopen("data.dat","rb");while(!feof(f)){fread(&us,sizeof(User),1,f);if(strcmp(name,)==0){if(strcmp(pw,us.pw)==0)return 1;}}return -1;}int main(){char n[20];char plog[20];char nlog[20];int c;User u;FILE *f =fopen("data.dat","ab");if(f!=NULL){fwrite(&u,sizeof(User),1,f);}fclose(f);Login:system("color F0");system("cls");printf("\n\n");printf("========================================================================\n");printf("||\n");printf("|-----------------------------学生请假系统-----------------------------|\n");printf("||\n");printf("========================================================================\n");printf("\n");Sleep(1000);printf("\n");printf("请输入帐号:");scanf("%s",nlog);c=check(nlog);if(c==1)//如果账户存在{strcpy(n,nlog);//复制登录帐号if(strlen(n)==9)//如果是学生{int a,i;select s=0;printf("请输入密码:");//直接输入密码scanf("%s",plog);for(a=2,i=0; i<4; i++,a--){if(login(nlog,plog)==-1)//密码错误{system("color F0");char plog[20]= {}; //登录数组初始化system("cls");printf("\n");printf("************************************************************************\n");printf("* 密码错误! *\n");printf("************************************************************************\n");printf("\n\n");if(a>0)printf("请重新输入密码(你还有%d次机会):",a);printf("\n\n");scanf("%s",plog);if(login(nlog,plog)==1)goto success2;}elsereturn 0;}}if(login(nlog,plog)==1){success2: system("color F0");printf("\n\n");printf(" \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\登陆成功///////////////////////\n");Sleep(1000);system("cls");}LEAVESYSTEM:printf("\n\n");printf("========================================================================\n");printf("|1.提交请假申请|\n");printf("|2.查询请假批准状态|\n");printf("|如无需操作,可直接关闭程序|\n");printf("========================================================================\n");printf("\n\n");Sleep(1000);printf("请输入您要执行的选项:");scanf("%d",&s);Sleep(1000);while(s!=1&&s!=2){if(s!=1&&s!=2){ system("color 0c");printf("选项不存在,请重新输入(1/2):");s=0;scanf("%d",&s);}}if(s==1)//写入请假{system("color F0");system("cls");printf("\n\n");printf("========================================================================\n");printf("||\n");printf("|------------------------------提交请假申请----------------------------|\n");printf("||\n");printf("========================================================================\n");printf("\n\n");Leave a;Sleep(1000);printf("请输入班级:\n");scanf("%s",a.Class);printf("请输入姓名:\n");scanf("%s",a.n1);printf("请详细输入请假时间:\n");scanf("%s",a.time);printf("请详细输入请假原因:\n");scanf("%s",a.reason);strcpy(nlog,a.Num);strcpy(a.instructor,"0");FILE *t=fopen("leave.dat","ab");fwrite(&a,sizeof(Leave),1,t);//讲以变量u的地址开始的内存区域的一个数据写到f指向的文件中,每个数据占sizeof(User)fclose(t);fflush(t);// Sleep(1000);printf("\n");printf(" \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\保存成功///////////////////////\n");printf(" 请不定时来查询你的假条申请状态!\n\n\n");system("pause");system("cls");goto LEAVESYSTEM;}if(s==2)//学生查询状态代码{system("color F0");system("cls");printf("\n\n");printf("========================================================================\n");printf("||\n");printf("|----------------------------查询请假批准状态--------------------------|\n");printf("||\n");printf("========================================================================\n");Sleep(1000);TEACHER b;FILE *t=fopen("read.dat","rb");while(1){if(!(fread(&b,sizeof(TEACHER),1,t)))break;if((strcmp(nlog,b.Num))==0){printf("---------------------------------------------------------------\n");printf("|学生%s请假申请反馈信息:\n",b.n1);printf("|班级:%s\n \n",b.Class);printf("|姓名:%s\n\n",b.n1);printf("|请假时间:%s\n \n",b.time);printf("|请假原因:%s\n \n",b.reason);printf("---------------------------------------------------------------\n");Sleep(1000);printf("\n");printf(" -------------------------------------------------------------\n");printf(" 申请状态:%s\n",b.instructor);printf(" 辅导员意见:%s\n",b.suggest);printf(" -------------------------------------------------------------\n");system("pause");Sleep(1000);system("cls");goto LEAVESYSTEM;}}}if(s==3){goto Login;}}//身份学生if(strlen(n)==4)//如果是辅导员{int a,i;select s;printf("\n");printf("请输入密码:");//直接输入密码scanf("%s",plog);for(a=2,i=0; i<4; i++,a--){if(login(nlog,plog)==-1)//密码错误{system("color 0c");char plog[20]= {}; //登录数组初始化system("cls");printf("\n");printf("************************************************************************\n");printf("* 密码错误! *\n");printf("************************************************************************\n");printf("\n\n");if(a>0){printf("请重新输入密码(你还有%d次机会):",a);printf("\n\n");scanf("%s",plog);if(login(nlog,plog)==1)goto success3;}elsereturn 0;}}if(login(nlog,plog)==1){success3: system("color F0");printf("\n\n");printf(" \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\登陆成功///////////////////////\n");Sleep(1000);}//Approvalsystem:system("cls");printf("\n\n");printf("========================================================================\n");printf("||\n");printf("|-------------------------学生请假系统(辅导员端)-----------------------|\n");printf("||\n");printf("========================================================================\n");printf("\n");Sleep(1000);printf("========================================================================\n");printf("|1.查看学生请假申请|\n");printf("|2.返回登陆界面|\n");printf("|如无需操作,可直接关闭程序|\n");printf("========================================================================\n");printf("\n\n");Sleep(1000);printf("请输入您要执行的选项:");scanf("%d",&s);while(s!=1&&s!=2){if(s!=1&&s!=2){printf("选项不存在,请重新输入(1/2):");scanf("%d",&s);}}if(s==1)//辅导员读{system("cls");printf("\n\n");printf("========================================================================\n");printf("||\n");printf("|----------------------------查看学生请假申请--------------------------|\n");printf("||\n");printf("========================================================================\n");printf("\n\n");Sleep(1000);Leave a;FILE *t=fopen("leave.dat","rb");while(1){int ch;if(!(fread(&a,sizeof(Leave),1,t)))break;{printf("-------------------------------------------------------------\n");printf("|学生信息如下:\n");printf("|班级:%s\n",a.Class);printf("|姓名:%s\n",a.n1);printf("|学号:%s\n",a.Num);printf("|请假时间:%s\n",a.time);printf("|请假原因:%s\n",a.reason);printf("-------------------------------------------------------------\n");Sleep(1000);printf("\n\n\n");printf("\n");printf(" 是否批准学生请假申请\n");printf(" ----------------------------------------------------------- \n");printf(" ----------------------------------------------------------- \n");printf(" 1.批准学生请假申请\n");printf(" 2.不批准学生请假申请\n");printf("\n\n\n");printf("请输入您要执行的选项:");scanf("%d",&ch);while(ch!=1&&ch!=2){if(ch!=1&&ch!=2){printf("选项不存在,请重新输入(1/2):");scanf("%d",&ch);}}if(ch==1){printf("\n\n");printf("-------------------------------------------------------------\n");printf("执行中....\n");printf("-------------------------------------------------------------\n");Sleep(1000);TEACHER b;FILE *F=fopen("read.dat","ab");strcpy(b.instructor,"您的请假申请已被批准!");printf("\n");printf("辅导员意见:");scanf("%s",b.suggest);strcpy(b.Class,a.Class);strcpy(b.n1,a.n1);strcpy(b.time,a.time);strcpy(b.reason,a.reason);strcpy(b.Num,a.Num);// FILE *f3=fopen("leave.dat","ab");fwrite(&b,sizeof(TEACHER),1,F);fclose(F);fflush(F);Sleep(1000);printf("\n\n\n");printf(" \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\操作成功///////////////////////\n");system("pause");printf("\n\n\n\n\n");continue;}if(ch==2){printf("-------------------------------------------------------------\n");printf("执行中....\n");printf("-------------------------------------------------------------\n");Sleep(1000);TEACHER b;FILE *F=fopen("read.dat","ab");strcpy(b.instructor,"您的请假申请没有被批准,请按时上课!");printf("\n");printf("辅导员意见:");scanf("%s",b.suggest);strcpy(b.Class,a.Class);strcpy(b.n1,a.n1);strcpy(b.time,a.time);strcpy(b.reason,a.reason);strcpy(b.Num,a.Num);fwrite(&b,sizeof(TEACHER),1,F);fclose(F);fflush(F);Sleep(1000);printf("\n\n\n");printf(" \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\操作成功///////////////////////\n");system("pause");printf("\n\n\n\n\n");continue;}}}}if(s==2){system("cls");goto Login; //修改学生请假申请状态反回}}//如果是辅导员if(strlen(n)==5)//如果是老师{int a,i;printf("\n");printf("请输入密码:");//直接输入密码scanf("%s",plog);for(a=2,i=0; i<4; i++,a--){if(login(nlog,plog)==-1)//密码错误{system("color 0c");char plog[20]= {}; //登录数组初始化system("cls");printf("\n");printf("************************************************************************\n");printf("* 密码错误! *\n");printf("************************************************************************\n");printf("\n\n");if(a>0){printf("请重新输入密码(你还有%d次机会):",a);printf("\n\n");scanf("%s",plog);if(login(nlog,plog)==1)goto success1;}elsereturn 0;}}if(login(nlog,plog)==1){success1: system("color F0");printf("\n\n");printf(" \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\登陆成功///////////////////////\n");Sleep(1000);system("cls");}system("cls");printf("\n\n");printf("========================================================================\n");printf("||\n");printf("|---------------------------学生请假系统(老师端)-----------------------|\n");printf("||\n");printf("========================================================================\n");Sleep(1000);printf("\n\n");printf(" -------------------------------------------------------------\n");printf(" 学生请假加载中...\n");printf(" -------------------------------------------------------------\n");Sleep(1000);// int i=0;TEACHER b;FILE *t=fopen("read.dat","rb");// rewind(t);while(1){if(!(fread(&b,sizeof(TEACHER),1,t)))break;// long d=i*sizeof(TEACHER);// fseek(t,d,SEEK_SET);// fread(&b,sizeof(TEACHER),1,t);printf("---------------------------------------------------------------\n");printf("|学生学号%s请假申请反馈信息:\n",b.Num);printf("|班级:%s\n",b.Class);printf("|姓名:%s\n",b.n1);printf("|请假时间:%s\n",b.time);printf("|请假原因:%s\n",b.reason);printf("|申请状态:%s\n",b.instructor);printf("---------------------------------------------------------------\n");printf("\n\n");}system("pause");}}if(c==-1)//账户不存在{system("color F0");system("cls");char n[20];char p[20];strcpy(n,nlog);//复制帐号if(strlen(n)==9)//完成注册,存入data.dat文档{User u;printf("************************************************************************\n");printf("* 同学!第一次登录请完成注册*\n");printf("************************************************************************\n");printf("\n\n");printf(" ----------------------------------------------------------------------\n");printf(" 请输入新密码\n");printf(" ----------------------------------------------------------------------\n");scanf("%s",p);strcpy(,n);strcpy(u.pw,p);FILE *f =fopen("data.dat","ab");//打开文件让指针f指向打开的文件fwrite(&u,sizeof(User),1,f);//讲以变量u的地址开始的内存区域的一个数据写到f 指向的文件中,每个数据占sizeof(User)fclose(f);fflush(f);printf(" \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\注册成功///////////////////////\n\n\n");system("pause");system("cls");}if(strlen(n)==5){User u;printf("************************************************************************\n");printf("* 老师!第一次登录请完成注册*\n");printf("************************************************************************\n");printf("\n\n");printf(" ----------------------------------------------------------------------\n");printf(" 请输入新密码\n");printf(" ----------------------------------------------------------------------\n");scanf("%s",p);strcpy(,n);strcpy(u.pw,p);FILE *f =fopen("data.dat","ab");//打开文件让指针f指向打开的文件fwrite(&u,sizeof(User),1,f);//讲以变量u的地址开始的内存区域的一个数据写到f 指向的文件中,每个数据占sizeof(User)fclose(f);fflush(f);printf(" \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\注册成功///////////////////////\n\n\n");system("pause");system("cls");}if(strlen(n)==4){User u;printf("************************************************************************\n");printf("* 辅导员!第一次登录请完成注册*\n");printf("************************************************************************\n");printf("\n\n");printf(" ----------------------------------------------------------------------\n");printf(" 请输入新密码\n");printf(" ----------------------------------------------------------------------\n");scanf("%s",p);strcpy(,n);strcpy(u.pw,p);FILE *f =fopen("data.dat","ab");//打开文件让指针f指向打开的文件fwrite(&u,sizeof(User),1,f);//讲以变量u的地址开始的内存区域的一个数据写到f 指向的文件中,每个数据占sizeof(User)fclose(f);fflush(f);printf(" \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\注册成功///////////////////////\n\n\n");system("pause");system("cls");}goto Login;}return 0;}。
智慧河小科请销假源码
智慧河小科请销假源码一、背景介绍智慧河小科是一款用于学校管理的智能系统,它可以方便学生和教师进行信息管理和交流。
其中一个重要功能是请销假系统,它使得学生和教师可以更加便捷地处理请假和销假事务。
二、请销假的流程与问题请销假是学生和教师经常遇到的事务之一,传统的请销假方式往往需要填写请假单、递交给班主任或教务处,等待审批,最后才能得到答复。
这一过程可能存在以下问题:2.1 手写请假单传统方式需要学生手写请假单,可能存在填写不规范、易于造假等问题,导致信息不准确。
2.2 信息传递不及时由于请假单需递交给班主任或教务处,再由审批人员审批,整个过程时间较长,信息传递不够及时,影响学生和教师的沟通。
2.3 审批流程繁琐传统请销假方式中,审批流程通常需要多人参与,如班主任、教务处等,造成流程冗长和审批效率低下。
三、智慧河小科请销假功能设计为了解决传统请销假方式中存在的问题,智慧河小科请销假功能进行了以下设计:3.1 电子请假单智慧河小科提供电子请假单,学生可以在线填写请假信息,避免手写造成的不准确及易于造假的问题。
电子请假单的格式规范,学生只需按照系统要求填写相关信息即可。
3.2 即时信息传递学生提交请假申请后,系统将自动通知班主任和相关审批人员,实现请假信息的即时传递。
班主任和审批人员也可以通过系统查看学生的请假申请,以便更好地了解学生请假的情况。
3.3 简化审批流程智慧河小科请销假系统通过工作流技术,实现审批流程的自动化。
系统根据学校的规定,自动进行审批流程的分配和流转,减少了多人参与的情况,提高了审批效率。
只有特殊情况时,审批流程才会由人工介入。
四、智慧河小科请销假源码实现4.1 学生请假界面代码示例// 请假表单页面<form action="/leave" method="POST"><label for="student_name">学生姓名</label><input type="text" id="student_name" name="student_name" required><br><label for="reason">请假原因</label><textarea id="reason" name="reason" required></textarea><br><label for="start_date">开始日期</label><input type="date" id="start_date" name="start_date" required><br><label for="end_date">结束日期</label><input type="date" id="end_date" name="end_date" required><br><input type="submit" value="提交请假申请"></form>4.2 教师审批界面代码示例// 审批页面<table><thead><tr><th>请假学生</th><th>请假原因</th><th>开始日期</th><th>结束日期</th><th>操作</th></tr></thead><tbody><tr><td>张三</td><td>因病请假</td><td>2022-01-01</td><td>2022-01-05</td><td><form action="/approve" method="POST"><input type="hidden" name="leave_id" value="1"><button type="submit">通过</button></form><form action="/reject" method="POST"><input type="hidden" name="leave_id" value="1"><button type="submit">驳回</button></form></td></tr><!-- 其他请假记录 --></tbody></table>五、智慧河小科请销假系统带来的好处5.1 提高请销假效率通过电子请假单和即时信息传递功能,学生请假和教师审批的效率得到了显著提高。
leavepay源码
leavepay源码leavepay源码是一个用于管理员工请假的简单应用程序。
它通过记录和跟踪员工请假的信息,帮助企业更好地管理和安排员工的假期。
下面是一个简单的leavepay源码示例,它展示了如何创建一个基本的请假管理系统:```javaimport java.util.ArrayList;import java.util.List;import java.util.Scanner;class LeaveRequest {private final String name;private final String startDate;private final String endDate;private final String reason;public LeaveRequest(String name, String startDate, String endDate, String reason) { = name;this.startDate = startDate;this.endDate = endDate;this.reason = reason;}public String getName() {return name;}public String getStartDate() {return startDate;}public String getEndDate() {return endDate;}public String getReason() {return reason;}}class LeaveManager {private final List<LeaveRequest> leaveRequests;public LeaveManager() {this.leaveRequests = new ArrayList<>();}public void addLeaveRequest(LeaveRequest leaveRequest) { leaveRequests.add(leaveRequest);}public void removeLeaveRequest(LeaveRequest leaveRequest) {leaveRequests.remove(leaveRequest);}public void displayLeaveRequests() {for (LeaveRequest leaveRequest : leaveRequests) {System.out.println("Employee: " +leaveRequest.getName());System.out.println("Start Date: " +leaveRequest.getStartDate());System.out.println("End Date: " +leaveRequest.getEndDate());System.out.println("Reason: " + leaveRequest.getReason()); System.out.println("-------------------------");}}}public class Main {public static void main(String[] args) {LeaveManager leaveManager = new LeaveManager();Scanner scanner = new Scanner(System.in);while (true) {System.out.println("1. Add Leave Request");System.out.println("2. Remove Leave Request");System.out.println("3. Display Leave Requests");System.out.println("4. Exit");System.out.print("Enter your choice: ");int choice = scanner.nextInt();scanner.nextLine();switch (choice) {System.out.print("Employee Name: ");String name = scanner.nextLine();System.out.print("Start Date: ");String startDate = scanner.nextLine();System.out.print("End Date: ");String endDate = scanner.nextLine();System.out.print("Reason: ");String reason = scanner.nextLine();LeaveRequest leaveRequest = new LeaveRequest(name, startDate, endDate, reason);leaveManager.addLeaveRequest(leaveRequest);System.out.println("Leave Request added successfully!");break;case 2:System.out.print("Employee Name: ");String employeeName = scanner.nextLine();System.out.print("Start Date: ");String start = scanner.nextLine();System.out.print("End Date: ");String end = scanner.nextLine();LeaveRequest reqToRemove = null;for (LeaveRequest req : leaveManager.leaveRequests) {if (req.getName().equals(employeeName) &&req.getStartDate().equals(start) &&req.getEndDate().equals(end)) {reqToRemove = req;break;}if (reqToRemove != null) {leaveManager.removeLeaveRequest(reqToRemove); System.out.println("Leave Request removed successfully!");} else {System.out.println("Leave Request not found!");}break;case 3:leaveManager.displayLeaveRequests();break;case 4:System.exit(0);default:System.out.println("Invalid choice! Please try again."); }}}}```该源码分为三个类:LeaveRequest,LeaveManager和Main(包含主函数)。
课程设计考勤管理系统源代码
04
考勤管理界面
展示学生的考勤记录,包括迟到、早 退、旷课等情况,并提供添加、修改 、删除考勤记录的功能。
06
报表统计界面
提供多种报表统计功能,如学生出勤率统计、 成绩分布统计等,方便教师和管理员进行数据 分析和决策。
04
系统实现
开发环境搭建
01
安装Java开发环境 (JDK)
确保计算机上已安装适当版本的 Java开发工具包(JDK),并配 置好环境变量。
。
操作便捷性
系统应尽量减少用户的操作步 骤和复杂度,提高用户的使用 体验。
数据准确性
系统应确保数据的准确性和一 致性,避免因数据错误导致的 各种问题。
故障处理
系统应提供故障处理和恢复机 制,确保在出现问题时能及时
解决并恢复正常运行。
03
系统设计
总体设计
系统架构
采用B/S架构,前端使用 HTML、CSS、JavaScript等
促进信息化建设
推动学校信息化建设进程 ,提高学校管理水平和效 率。
系统概述
系统功能
实现学生考勤信息的录入、 查询、统计和分析等功能, 支持多种考勤方式和异常情 况处理。
系统架构
采用B/S架构,前端使用 Web技术实现用户界面,后 端使用数据库管理系统存储 和处理数据。
技术选型
前端采用HTML5、CSS3、 JavaScript等技术,后端采 用Java、Spring Boot、 MyBatis等技术,数据库使 用MySQL或Oracle等关系型 数据库。
系统特点
界面友好、操作简便、功能 强大、性能稳定、安全可靠 。
02
需求分析
功能需求
学生信息管理
系统需要提供对学生基本信息的增删 改查功能,包括姓名、学号、班级等 。
基于Javaweb的校园请假的设计与实现
基于Javaweb的校园请假的设计与实现1.项目概述本项目是一款基于Javaweb的校园请假系统,主要面向学生和教师,提供了便利的请假流程和实时审批功能。
2.系统需求2.1 功能需求(1)学生注册登录:学生可以通过系统进行注册和登录,完成账号激活后,即可登录系统。
(2)请假申请:学生可以通过系统提交请假申请,并填写请假事由、时间、班级、联系方式等相关信息。
(3)请假审批:教师可以通过系统进行请假审批,并对请假事由、时间、班级、联系方式等信息进行审核和确认,同时系统会发送通知给学生和班主任,通知请假结果。
(4)请假记录查询:学生可以通过系统查询自己的请假记录,并查看请假历史记录。
(5)统计分析:系统可以对请假流程进行统计分析,包括请假次数、请假原因分布、请假时长分布等。
2.2 性能需求系统能够支持大量的并发请求,保证系统的稳定性和可靠性。
2.3 安全需求系统需要具备一定的安全防护能力,确保用户信息和数据的安全性。
同时,系统需要具备访问控制和身份认证等功能,防止非法用户进行恶意攻击和操作。
3.系统架构3.1 前端技术系统的前端采用了Bootstrap、Vue.js和jQuery等技术,实现了用户友好的交互界面和高效的数据展示功能。
3.2 后端技术系统的后端采用了Spring、SpringMVC和Mybatis等技术,实现了业务逻辑处理、数据持久化、事务控制等功能。
3.3 数据库技术系统的数据库采用了MySQL数据库,实现了数据存储和查询功能。
4.系统实现4.1 数据库设计系统的数据库设计主要涉及到学生、教师、请假申请、请假审批、班级、学院等表结构,其中请假申请和请假审批表结构如下:请假申请表结构:请假编号(PK)申请人学号请假时间请假原因开始时间结束时间班级联系方式请假状态创建时间请假审批表结构:审批编号(PK)请假编号(FK)审批人工号审批时间审批结果审批意见创建时间4.2 系统实现流程(1)学生提交请假申请:学生通过系统提交请假申请,包括请假事由、时间、班级、联系方式等信息。
学生请假管理系统需求分析设计文档(附待部分核心代码-ssh框架实现)精编版
2014 - 2015 学年第 2 学期1.总体目标 (1)1.1背景 (1)1.1.1引言 (1)1.2要求 (1)1.3目标 (1)2...................................................................................................................................... 需求分析 (2)2.1功能需求描述 (2)2.1.1基本功能: (2)2.1.2业务功能: (2)2.2用户需求描述 (2)2.2.1学生用户需求描述 (2)2.2.2任课教师用户需求描述 (2)3...................................................................................................................................... 数据库设计. (2)4.功能模块设计 (4)4.1系统流程 (5)5.主要功能的具体实现 (8)5.1请假功能的实现 (8)5.2审核功能的实现 (11)5.3权限修改功能 (15)5.4导入功能 (17)6.系统的运行环境需求 (18)6.1硬件环境: (18)6.2.软件环境: (18)7.测试结果与分析 (18)7.1主要测试内容 (18)7.2软件测试的目的 (19)7.3软件测试的任务 (19)7.4.1 功能测试 (19)7.4.2 (19)7.4.3文档测试 (19)7.5测试环境 (20)7.6系统具体测试 (20)8.课程设计总结 (21)1.总体目标1.1背景1.1.1引言目前高校大部分都还是采用学生写好请假条,然后到辅导员那里申请请假的方式进行请假,这种方式不仅麻烦而且比较费时。
在信息化的今天,能有效地借助网络才能提高办事效率。
学生请假系统的开发与实现
分类号密级U D C 编号本科毕业论文(设计) 题目学生请假系统的开发与实现所在院系计算机学院专业名称计算机科学与技术二○一九年四月论文原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。
除文中已注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品成果。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到违反本声明所引起的一切法律责任将由本人承担。
学位论文作者签名:年月一、概述我们身处的时代是一个不断发展的时代,人们的生活已经离不开互联网,慢慢的我们可以再网上完成我们的作业,我们可以在网上上课打卡,在网上交学费。
我们身处一个正在飞速进步的社会,面对越来越多的学生人数以及高校的分校区,一个行之有效的学生请假系统可以为我们减少很多麻烦,提高的学生和老师的办事效率,减少了纸质请假条带来的成本,节省了人力物力。
同时该系统操作简单内容完善,提高的学校对学生的管理效率,有助于学校实现科学管理。
目前大多数的高校仍然采用的是纸质的请假,这种请假方式既不方便也不快捷,学生如果想要请假必须和老师约好时间,去办公室写好请假条,获得老师批准并且盖章之后才算生效。
如果老师看不到请假条就按旷课处理,对于有急事的学生,这是极不公平的。
因此,学生请假系统无论对于老师还是学生来说都是提高管理效率和办事效率的途径。
二、主题1、选择的依据及研究意义现如今在许多高校中,学生请假管理一直是一个老生常谈、难以解决的大问题。
以我的本科高校来讲,如果有事或者生病需要请假,至少需要经过以下的步骤:首先,需要通过QQ或者微信等通信方式向辅导员申请并说明情况;然后,学生拟写假条,班主任签字署名方可完成请假;最后要将请假条交给相关代课老师,或者由班长转交。
这种传统的请假方式不仅步骤繁琐耗费学生大量的时间精力,而且从学校的管理层面来讲存在漏洞。
以下为传统纸质的请假方式存在的普遍问题:一、班主任需要耗费大量的时间精力去跟进学生在请假期间的动向以及安全问题;二、在纸质请假条上,学生可以模仿辅导员笔迹签名,而且存在着原来的请假时间被修改的风险;三、传统请假条需要耗费大量的纸张,不符合环保的理念。
学生考勤系统源代码
学生考勤系统源代码void lace(int n) /*花边函数*/{int i;for(i=0;i<n;++i){putchar('*'); /*输出n个**/}}void fun_intro(void) /*功能介绍函数*/{lace(80); /*执行lace(n)函数*/printf("欢迎使用学生考勤管理系统\n");printf("本系统主要功能有\n");printf("1、学生签到服务\n");printf("2、学生考勤信息查询及修改\n");printf("3、学生考勤评价\n");printf("本系统以菜单命令方式实现各个功能,通过选择菜单所对应的序号来选择执行功能\n");printf("本系统所有信息文件均默认保存在C盘根目录\n"); /*输出括号中的内容*/ lace(80); /*执行lace(n)函数*/}void sys_menu(void) /*主功能菜单函数*/{lace(80); /*执行lace(n)函数*/lace(80); /*同上*/lace(2);printf(" 1、签到\n"); /*执行lace(n)函数,输出……*/lace(2);printf(" 2、查询\n"); /*同上*/lace(2);printf(" 3、修改\n"); /*同上*/lace(2);printf(" 4、退出\n"); /*同上*/lace(80); /*同上*/lace(80); /*同上*/}int se_cod(void) /*密码函数*/{char in_sec[10],secret[7]="123456"; /*in_sec用于输入密码,secret存放内置密码*/printf("请输入密码(6位阿拉伯数字):"); /*限制密码为6位阿拉伯数字*/scanf("%s",in_sec);if(!strcmp(in_sec,secret)){return(1); /*如果密码正确,函数返回1*/}else{return(0); /*如果密码错误,函数返回0*/}}void stu_system(void) /*系统主函数*/{int opt;sys_menu(); /*执行 sys_menu( )函数*/printf("执行:"); /*输出“执行:”*/scanf("%i",&opt); /*输入opt 的值*/switch(opt) /*多分支执行*/{case 1 : sign_in();break; /*当opt 的值为1 时,进入签到界面*/case 2 : stu_find();break; /*当opt 的值为2时,进入查询界面*/case 3 : stu_rev();break; /*当opt 的值为3时,进入修改界面*/case 4 : quit_sys();break; /*当opt 的值为4时,退出系统*/default : printf("出错\n请重新选择\n");stu_system(); /*当opt的值不满足以上时,输出“出错”换行,输出“请重新选择”,换行,回到首页*/}}void istu_infor(void) /*输入学生基本信息函数*/{int i;printf("%-8s%-8s%-8s\n","姓名","学号","性别");for(i=0;i<NUM;++i){scanf("%s%s%s",st_infor[i].nam,st_infor[i].num,st_infor[i].sex); /*输入姓名,学号,性别*/strcpy(st_infor[i].che_now,"未签到"); /*签到状态初始化为“未签到”*/st_infor[i].che_add=0.0; /*出勤次数初始化为0*/st_infor[i].stand=1.0; /*出勤标准次数初始化为1*/st_infor[i].che_sult=0.0; /*出勤成绩初始化为0*/}}void stu_open(char way[3]) /*打开学生基本信息文件函数*/{if((file=fopen("C:\\Student attendance information.f",way))==NULL) /*打开在C盘存储的名为Student attendance information.的文件,“way”代表打开方式,如果文件打开失败,则执行下面语句*/{printf("出错\n");printf("返回到首页\n");stu_system(); //返回到首页}}void keepf(void) /*保存文件函数*/{int i;fclose(file);stu_open("w"); /*以“写“的方式打开file文件*/for(i=0;i<NUM;++i){fwrite(&st_infor[i],sizeof(struct stu_check),1,file); /*将st_infor[i]中的信息写入file文件*/}fclose(file);}void nstu_infor(void) /*新建学生基本信息文件函数*/{printf("输入学生信息\n");stu_open("w"); /*新建一个空文件*/istu_infor(); /*输入学生信息*/keepf(); /*保存文件*/printf("新建成功\n");jump_sys(stu_rev); /*跳转到修改信息界面*/}void sign_in(void) /*学生签到服务函数*/{int i;char number[10];stu_open("r"); /*以“读”的方式打开文件*/printf("(请输入您的学号:");scanf("%s",number); /*输入“number”的值*/for(i=0;i<NUM;++i) /*当i小于NUM时,执行下面语句*/{fread(&st_infor[i],sizeof(struct stu_check),1,file); /*打开file文件,将文件内容传递给结构体变量*/}for(i=0;i<NUM;++i){if(!strcmp(st_infor[i].num,number)){if(!strcmp(st_infor[i].che_now,"未签到")){strcpy(st_infor[i].che_now,"签到"); /*将"签到"赋给“check_now”*/st_infor[i].che_add++; /*“check_add加1*/printf("签到成功\n");}else{printf("您已签到\n");}}}keepf(); /*保存“file”文件*/jump_sys(sign_in); /*向其他功能跳转*/}void stu_list(void) /*学生信息列表函数*/{int i;stu_open("r");lace(80);printf("%-8s%-8s%-8s%-10s%-8s\n\n","学号","姓名","性别","签到状态","评分");for(i=0;i<NUM;++i){fread(&st_infor[i],sizeof(struct stu_check),1,file);printf("%-8s%-8s%-8s%-10s%-8.1f\n",st_infor[i].num,st_infor[i].nam,st_infor [i].sex,st_infor[i].che_now,st_infor[i].che_sult);}lace(80);keepf();jump_sys(stu_find);}void stu_find(void) /*学生考勤信息查询函数*/{int opt;lace(80);printf("请选择\n");printf(" 1、打开学生信息列表\n");printf(" 2、按姓名查找\n");printf(" 3、按学号查找\n");lace(80);printf("执行:");scanf("%i",&opt);switch(opt){case 1 : stu_list();break; /*执行stu_list( )函数*/case 2 : find_nam();break;case 3 : find_num();break;default :printf("出错\n");stu_find(); /*输出“出错”,执行stu_find( )函数*/ }}void jump_sys(void (*p)(void)) /*跳转函数*/{int opt;system(“PAUSE”);printf("请选择\n");lace(80);printf(" 1、返回到首页\n");printf(" 2、返回到上一级\n");printf(" 3、退出系统\n");lace(80);printf(“执行:”);scanf("%i",&opt);switch(opt){case 1 : stu_system();break;case 2 : (*p)();break; /*跳转到p所指代的函数*/case 3 : quit_sys(); /*退出系统*/default : printf("出错\n");jump_sys(p);}}void stu_rev(void) /*学生信息修改函数*/{int opt;if(se_cod()) /*如果密码正确,执行修改操作*/{printf("密码正确\n");}else /*如果密码错误,返回到首页*/printf("密码错误\n");printf("返回到首页\n");stu_system();}printf("请选择\n");lace(80);printf(" 1、修改学号\n");printf(" 2、修改性别\n");printf(" 3、修改签到记录\n");printf(" 4、新建学生出勤信息\n");lace(80);printf("执行:");scanf("%i",&opt);switch(opt){case 1 : rev_num();break;case 2 : rev_sex();break;case 3 : rev_sig();break;case 4 : nstu_infor();break;default : printf("出错\n");printf("返回上一页\n");stu_rev();}}void find_nam(void) /*以姓名方式查找函数*/{int i;char name[10];stu_open("r"); /*打开文件*/for(i=0;i<NUM;++i) /*将文件中的学生信息存放到stu_infor[i]结构体数组中*/ {fread(&st_infor[i],sizeof(struct stu_check),1,file);}printf("请输入姓名:");scanf("%s",name); /*输入要查找的姓名*/for(i=0;i<NUM;++i){if(!strcmp(st_infor[i].nam,name)) /*如果找到,输出个人信息*/{printf("%-8s%-8s%-8s%-10s%-8s\n","学号","姓名","性别","签到状态","评分");printf("%-8s%-8s%-8s%-10s%-8.1f\n",st_infor[i].num,st_infor[i].nam,st_infor [i].sex,st_infor[i].che_now,st_infor[i].che_sult);}printf("查询结束\n");keepf(); /*关闭文件*/jump_sys(stu_find); /*跳转到查询界面*/}void find_num(void) /*以学号方式查找函数*/{int i;char number[10];stu_open("r"); /*打开文件*/for(i=0;i<NUM;++i) /*将文件中的学生信息存放到stu_infor[i]结构体数组中*/ {fread(&st_infor[i],sizeof(struct stu_check),1,file);}printf("请输入学号:");scanf("%s",number); /*输入要查找的学号*/for(i=0;i<NUM;++i){if(!strcmp(st_infor[i].num,number)) /*如果找到,输出个人信息*/{printf("%-8s%-8s%-8s%-10s%-8s\n","学号","姓名","性别","签到状态","评分");printf("%-8s%-8s%-8s%-10s%-8.1f\n",st_infor[i].num,st_infor[i].nam,st_infor [i].sex,st_infor[i].che_now,st_infor[i].che_sult);}}printf("查询结束\n ");keepf(); /*关闭文件*/jump_sys(stu_find); /*跳转到查询界面*/}void rev_num(void) /*修改学号函数*/{int i;char name[10];stu_open("r"); /*打开文件*/for(i=0;i<NUM;++i) /*将文件中的学生信息存放到stu_infor[i]结构体数组中*/ {fread(&st_infor[i],sizeof(struct stu_check),1,file);}printf("请输入要修改的学生的姓名:");scanf("%s",name);for(i=0;i<NUM;++i){if(!strcmp(st_infor[i].nam,name)) /*找到学生信息后,修改学号*/{printf("将%s修改为:",st_infor[i].num);scanf("%s",st_infor[i].num);printf("修改成功\n");}}keepf(); /*保存文件*/jump_sys(stu_rev); /*跳转到修改界面*/}void rev_sex(void) /*修改性别函数*/{int i;char name[10];stu_open("r"); /*打开文件*/for(i=0;i<NUM;++i) /*将文件中的学生信息存放到stu_infor[i]结构体数组中*/ {fread(&st_infor[i],sizeof(struct stu_check),1,file);}printf("请输入要修改的学生的姓名:");scanf("%s",name);for(i=0;i<NUM;++i){if(!strcmp(st_infor[i].nam,name)) /*找到学生信息后,修改性别*/{printf("将%s修改为:",st_infor[i].sex);scanf("%s",st_infor[i].sex);printf("修改成功\n");}}keepf(); /*保存文件*/jump_sys(stu_rev); /*跳转到修改界面*/}void rev_sig(void) /*修改签到记录函数*/{int i;char name[10];stu_open("r"); /*打开文件*/for(i=0;i<NUM;++i) /*将文件中的学生信息存放到stu_infor[i]结构体数组中*/ {fread(&st_infor[i],sizeof(struct stu_check),1,file);}printf("请输入要修改的学生的姓名:");scanf("%s",name);for(i=0;i<NUM;++i){if(!strcmp(st_infor[i].nam,name)) /*找到学生信息后,修改考勤记录*/{printf("将%-3.1f修改为:",st_infor[i].che_add);scanf("%-3.1f",&st_infor[i].che_add);printf("修改成功\n");}}keepf(); /*保存文件*/jump_sys(stu_rev); /*跳转到修改界面*/}int main(void) /*工程主函数*/{fun_intro(); /*执行fun_into( )函数*/system("PAUSE"); /*暂停*/ensure();system("PAUSE");stu_system(); /*执行 stu_system( )函数*/system("PAUSE"); /*暂停*/return(0); /*工程主函数执行完后返回 0值*/}void quit_sys(void) /*退出考勤系统函数*/{int i;if(se_cod()){printf("密码正确,允许退出系统\n"); /*只能以管理员的身份执行退出操作*/system("PAUSE");}else{printf("密码错误,禁止退出\n");printf("请返回到首页\n");system("PAUSE");stu_system();}stu_open("r");for(i=0;i<NUM;++i){fread(&st_infor[i],sizeof(struct stu_check),1,file);}for(i=0;i<NUM;++i){strcpy(st_infor[i].che_now,"未签到"); /*把”未签到”赋给”che_now”*///st_infor[i].che_add=8;st_infor[i].che_sult=(float)((st_infor[i].che_add/st_infor[i].stand)*100.0); /*用签到次数与标准次数的比值的100倍来表示总分数*/st_infor[i].stand++; /*stand加1*/}keepf(); /*保存file文件*/exit(0); /*退出系统*/}void ensure(void) /*确定班级函数*/{int opt;printf("请选择班级\n"); /*根据不同的班级确定不同的学生总数*/printf("1、计算机科学与技术1班\n");printf("2、计算机科学与技术2班\n");printf("3、自定义\n"); /*根据自己需要确定学生总数*/printf("选择: ");scanf("%i",&opt);switch(opt){case 1 : NUM=56;strcpy(cla,"C:\\ Student attendance information class 1.f");break; /*一班的人数确定为56人,学生信息保存在C盘根目录下的Student attendance information class 1.f文件中*/case 2 : NUM=55;strcpy(cla,"C:\\ Student attendance information class 2.f");break; /*同上*/case 3 : printf("请自定义学生人数: ");scanf("%i",&NUM);strcpy(cla,"C:\\ Student attendance information class f.f");break; /*根据自己的需要确定人数*/ default :printf("出错,退出系统\n");system("PAUSE");exit(0); /*选项不在以上的系统自动退出*/}}。
基于Java_的学生请假管理系统设计与实现
List < LeaveRecord > records = system.
queryLeaveRecords( startDate, endDate) ;
申请、审批、记录和统计等功能,通过自动化和数字化
新、审批结果通知等。
的方式,简化了学生请假流程,减少了人为错误的可
能性,提高了信息传递的效率。
本文的研究和实现,期望能够为学校提供一种现
代化的学生请假管理解决方案,促进学校管理工作的
1. 2 非功能需求
安全性 [2] :系统需要确保学生请假信息的安全性
系统。
通过以上的系统设计与实现,学生请假管理系统
能够提供方便的用户界面,有效处理请假申请、审批
和记录等业务逻辑,同时与数据库进行数据交互和存
储,实现学生请假信息的管理和统计功能。 系统的设
计和实现需要充分考虑系统的可扩展性、安全性和性
能,以满足学校的请假管理需求。
/ / 主程序入口
public class Main {
学生请假申请表单:它是提供给学生填写请假信
存储和访问。 在学生请假管理系统中,使用 Java 数据
的功能如下。
学生请假记录的存储和检索:主要功能是将学生
息的表单,包括请假原因、请假日期、请假时间段等。
审批界面:该界面能显示待审批的请假申请列
Hale Waihona Puke 的请假记录存储到数据库中,支持按条件进行检索和
查询。
表,提供审批操作的按钮和选项。
记录,包括请假日期、请假原因、请假状态等信息,方
于烦琐的手动操作和纸质文件,存在信息传递不畅、
便学校管理者进行查询和统计。
学生请假管理系统需求分析设计文档(附待部分核心代码s
2014 - 2015学年第 2 学期1.总体目标 (1)1.1背景 (1)1.1.1引言 (1)1.2要求 (1)1.3目标 (1)2.需求分析 (2)2.1功能需求描述 (2)2.1.1基本功能: (2)2.1.2业务功能: (2)2.2用户需求描述 (2)2.2.1学生用户需求描述 (2)2.2.2任课教师用户需求描述 (2)3.数据库设计 (2)4. 功能模块设计 (4)4.1系统流程 (5)5. 主要功能的具体实现 (8)5.1请假功能的实现 (8)5.2审核功能的实现 (11)5.3权限修改功能 (15)5.4导入功能 (17)6.系统的运行环境需求 (18)6.1硬件环境: (18)6.2.软件环境: (18)7.测试结果与分析 (18)7.1主要测试内容 (18)7.2软件测试的目的 (19)7.3软件测试的任务 (19)7.4.1功能测试 (19)7.4.2负载测试 (19)7.4.3文档测试 (19)7.5 测试环境 (20)7.6 系统具体测试 (20)8.课程设计总结 (21)1.总体目标1.1背景1.1.1引言目前高校大部分都还是采用学生写好请假条,然后到辅导员那里申请请假的方式进行请假,这种方式不仅麻烦而且比较费时。
在信息化的今天,能有效地借助网络才能提高办事效率。
因此,请假管理系统能够解决这种请假方式所带来的很多麻烦。
1.2要求请假管理系统要达到以下功能:增删查改:学生信息管理(导入/查/改/删)、老师(含辅导员和系领导)信息管理业务功能:学生填写请假事由、提交给辅导员审批、按请假制度超过3天的提交给系领导审批、打印请假条、学生查看历史请假记录、辅导员可按不同筛选条件查看请假记录。
1.3目标请假管理系统的基本目标是方便学生请假和校方的批假工作,系统实现后,应做该到:方便学生:学生可以通过登录本系统填写请假原因向校方申请请假,不用通过手写请假条后找到导员请假。
方便校方:学生在系统中申请请假后可以进入本系统进行审核,方便了校方很多请假方面的工作。
学生考勤管理系统源代码
#include〈iostream>#include〈cstring>#include〈windows。
h>usingnamespacestd;classtime{public:time(inty=0,intm=0,intd=0){year=y;month=m;day=d;}~time(){}protected:intyear,month,day;};//信息类classxinxi:publictime{public:xinxi(){tiaoshu++;}〜xinxi(){tiaoshu-—;}voidsetname(char*n){strcpy(name,n);}voidsettime(inty,intm,intd){year=y;month=m;day=d;}voidsetqklx(char*qk){strcpy(queke,qk);}voidsetjieci(char*jc){strcpy(jieci,jc);}voidsetkechen(char*kc){strcpy(kechen,kc);}char大getname(){char大n;n=name;returnn;}char*getqklx(){char大qk=queke;returnqk;}char*getjieci(){char*jc;jc=jieci;returnjc;}char*getkechen(){char*gk;gk=kechen;returngk;}int*gettime(); private:charname[20];//姓名charjieci[3],kechen[10],queke[10];inttm[3];staticinttiaoshu;};intxinxi::tiaoshu=0;int*xinxi::gettime(){int*t;t=tm;tm[0]=year;tm[1]=month;tm[2]=day;returnt;}classqkechen:publicxinxi{public:qkechen(){kcshu++;}~qkechen(){kcshu;}intgetrc(xinxist1[],intn,intj);charqkn[20];〃公有数据成员private:intrenci;staticintkcshu;//静态数据成员};intqkechen::kcshu=0;intqkechen::getrc(xinxist1[],intn,intj){renci=0;renci++;for(inti=0;i<n;i++)if(*(st1[i+l]。
python请假代码
Python请假代码在日常工作中,我们有时会遇到需要请假的情况。
为了方便管理和记录,请假信息,我们可以使用Python来编写一个请假代码。
这个代码将帮助我们实现请假信息的录入、查询和审批功能,提高请假流程的效率和可追溯性。
1. 请假信息的录入我们需要设计一个数据结构来存储请假信息。
在这个例子中,我们选择使用字典来表示每一条请假记录。
字典中包含以下字段:•姓名:请假人员的姓名•开始日期:请假开始日期•结束日期:请假结束日期•请假事由:请假原因•审批状态:请假审批状态,初始状态为待审批leaves = []这里我们定义了一个空列表leaves来存储所有的请假记录。
接下来,我们可以编写一个函数来录入新的请假信息。
def add_leave():name = input("请输入您的姓名:")start_date = input("请输入开始日期(格式:YYYY-MM-DD):")end_date = input("请输入结束日期(格式:YYYY-MM-DD):")reason = input("请输入请假事由:")leave = {"姓名": name,"开始日期": start_date,"结束日期": end_date,"请假事由": reason,"审批状态": "待审批"}leaves.append(leave)print("请假信息录入成功!")在这个函数中,我们通过input函数获取用户输入的请假信息,并将其存储在一个字典中。
然后将该字典添加到leaves列表中,完成请假信息的录入。
2. 请假信息的查询为了方便查询已经录入的请假信息,我们可以编写一个函数来实现查询功能。
def query_leave():name = input("请输入您的姓名:")for leave in leaves:if leave["姓名"] == name:print(f"开始日期:{leave['开始日期']}")print(f"结束日期:{leave['结束日期']}")print(f"请假事由:{leave['请假事由']}")print(f"审批状态:{leave['审批状态']}")print("---------------------")print("查询完成!")这个函数会根据用户输入的姓名,在leaves列表中查找匹配的请假记录,并打印出相关信息。
请假管理系统源代码
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <windows.h>#define select inttypedef struct //账户信息{char name[20]; //char pw[20]; //User.pw} User;typedef struct{char Num[20];char n1[20];char Class[20];char time[100];char reason[100];char instructor[100];} Leave;typedef struct{char n1[20];char Num[20];// char name[20];char Class[20];char time[100];char reason[100];char instructor[100];char suggest[100];} TEACHER;int check (char name[20]){int i=0;User ru;FILE *f =fopen("data.dat","rb");rewind(f);for(i=0; !feof(f); i++){int d=i*sizeof(User);fseek(f,d,SEEK_SET);fread(&ru,sizeof(User),1,f);if(strcmp(name,)==0)return 1;}return -1;}int login(char name[20],char pw[20]){User us;FILE *f =fopen("data.dat","rb");while(!feof(f)){fread(&us,sizeof(User),1,f);if(strcmp(name,)==0){if(strcmp(pw,us.pw)==0)return 1;}}return -1;}int main(){char n[20];char plog[20];char nlog[20];int c;User u;FILE *f =fopen("data.dat","ab");if(f!=NULL){fwrite(&u,sizeof(User),1,f);}fclose(f);Login:system("color F0");system("cls");printf("\n\n");printf("========================================================================\ n");printf("||\n");printf("|-----------------------------学生请假系统-----------------------------|\n");printf("||\n");printf("========================================================================\ n");printf("\n");Sleep(1000);printf("\n");printf("请输入帐号:");scanf("%s",nlog);c=check(nlog);if(c==1)//如果账户存在{strcpy(n,nlog);//复制登录帐号if(strlen(n)==9)//如果是学生{int a,i;select s=0;printf("\n");printf("请输入密码:");//直接输入密码scanf("%s",plog);for(a=2,i=0; i<4; i++,a--){if(login(nlog,plog)==-1)//密码错误{system("color F0");char plog[20]= {}; //登录数组初始化system("cls");printf("\n");printf("************************************************************************\ n");printf("* 密码错误! *\n");printf("************************************************************************\ n");printf("\n\n");if(a>0){printf("请重新输入密码(你还有%d次机会):",a);printf("\n\n");scanf("%s",plog);if(login(nlog,plog)==1)goto success2;}elsereturn 0;}}if(login(nlog,plog)==1){success2: system("color F0");printf("\n\n");printf(" \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\登陆成功///////////////////////\n");Sleep(1000);system("cls");}LEAVESYSTEM:printf("\n\n");printf("========================================================================\ n");printf("|1.提交请假申请|\n");printf("|2.查询请假批准状态|\n");printf("| 如无需操作,可直接关闭程序|\n");printf("========================================================================\ n");printf("\n\n");Sleep(1000);printf("请输入您要执行的选项:");scanf("%d",&s);Sleep(1000);while(s!=1&&s!=2){if(s!=1&&s!=2){ system("color 0c");printf("选项不存在,请重新输入(1/2):");s=0;scanf("%d",&s);}}if(s==1)//写入请假{system("color F0");system("cls");printf("\n\n");printf("========================================================================\ n");printf("||\n");printf("|------------------------------提交请假申请----------------------------|\n");printf("||\n");printf("========================================================================\ n");printf("\n\n");Leave a;Sleep(1000);printf("请输入班级:\n");scanf("%s",a.Class);printf("请输入姓名:\n");scanf("%s",a.n1);printf("请详细输入请假时间:\n");scanf("%s",a.time);printf("请详细输入请假原因:\n");scanf("%s",a.reason);strcpy(nlog,a.Num);strcpy(a.instructor,"0");FILE *t=fopen("leave.dat","ab");fwrite(&a,sizeof(Leave),1,t);//讲以变量u的地址开始的内存区域的一个数据写到f指向的文件中,每个数据占sizeof(User)fclose(t);fflush(t);// Sleep(1000);printf("\n");printf(" \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\保存成功///////////////////////\n");printf(" 请不定时来查询你的假条申请状态!\n\n\n");system("pause");system("cls");goto LEAVESYSTEM;}if(s==2)//学生查询状态代码{system("color F0");system("cls");printf("\n\n");printf("========================================================================\ n");printf("||\n");printf("|----------------------------查询请假批准状态--------------------------|\n");printf("||\n");printf("========================================================================\ n");Sleep(1000);TEACHER b;FILE *t=fopen("read.dat","rb");while(1){if(!(fread(&b,sizeof(TEACHER),1,t)))break;if((strcmp(nlog,b.Num))==0){printf("---------------------------------------------------------------\n");printf("|学生%s请假申请反馈信息:\n",b.n1);printf("|班级:%s\n \n",b.Class);printf("|姓名:%s\n \n",b.n1);printf("|请假时间:%s\n \n",b.time);printf("|请假原因:%s\n \n",b.reason);printf("---------------------------------------------------------------\n");Sleep(1000);printf("\n");printf(" -------------------------------------------------------------\n");printf(" 申请状态:%s\n",b.instructor);printf(" 辅导员意见:%s\n",b.suggest);printf(" -------------------------------------------------------------\n");system("pause");Sleep(1000);system("cls");goto LEAVESYSTEM;}}}if(s==3){goto Login;}}//身份学生if(strlen(n)==4)//如果是辅导员{int a,i;select s;printf("\n");printf("请输入密码:");//直接输入密码for(a=2,i=0; i<4; i++,a--){if(login(nlog,plog)==-1)//密码错误{system("color 0c");char plog[20]= {}; //登录数组初始化system("cls");printf("\n");printf("************************************************************************\ n");printf("* 密码错误! *\n");printf("************************************************************************\ n");printf("\n\n");if(a>0){printf("请重新输入密码(你还有%d次机会):",a);printf("\n\n");scanf("%s",plog);if(login(nlog,plog)==1)goto success3;}elsereturn 0;}}if(login(nlog,plog)==1){success3: system("color F0");printf("\n\n");printf(" \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\登陆成功///////////////////////\n");Sleep(1000);}//Approvalsystem:printf("\n\n");printf("========================================================================\ n");printf("||\n");printf("|-------------------------学生请假系统(辅导员端)-----------------------|\n");printf("||\n");printf("========================================================================\ n");printf("\n");Sleep(1000);printf("========================================================================\ n");printf("|1.查看学生请假申请|\n");printf("|2.返回登陆界面|\n");printf("| 如无需操作,可直接关闭程序|\n");printf("========================================================================\ n");printf("\n\n");Sleep(1000);printf("请输入您要执行的选项:");scanf("%d",&s);while(s!=1&&s!=2){if(s!=1&&s!=2){printf("选项不存在,请重新输入(1/2):");scanf("%d",&s);}}if(s==1)//辅导员读{system("cls");printf("\n\n");printf("========================================================================\ n");printf("||\n");printf("|----------------------------查看学生请假申请--------------------------|\n");printf("||\n");printf("========================================================================\ n");printf("\n\n");Sleep(1000);Leave a;FILE *t=fopen("leave.dat","rb");while(1){int ch;if(!(fread(&a,sizeof(Leave),1,t)))break;{printf("-------------------------------------------------------------\n");printf("|学生信息如下:\n");printf("|班级:%s\n",a.Class);printf("|姓名:%s\n",a.n1);printf("|学号:%s\n",a.Num);printf("|请假时间:%s\n",a.time);printf("|请假原因:%s\n",a.reason);printf("-------------------------------------------------------------\n");Sleep(1000);printf("\n\n\n");printf("\n");printf(" 是否批准学生请假申请\n");printf(" ----------------------------------------------------------- \n");printf(" ----------------------------------------------------------- \n");printf(" 1.批准学生请假申请\n");printf(" 2.不批准学生请假申请\n");printf("\n\n\n");printf("请输入您要执行的选项:");scanf("%d",&ch);while(ch!=1&&ch!=2){if(ch!=1&&ch!=2){printf("选项不存在,请重新输入(1/2):");scanf("%d",&ch);}}if(ch==1){printf("\n\n");printf("-------------------------------------------------------------\n");printf("执行中....\n");printf("-------------------------------------------------------------\n");Sleep(1000);TEACHER b;FILE *F=fopen("read.dat","ab");strcpy(b.instructor,"您的请假申请已被批准!");printf("\n");printf("辅导员意见:");scanf("%s",b.suggest);strcpy(b.Class,a.Class);strcpy(b.n1,a.n1);strcpy(b.time,a.time);strcpy(b.reason,a.reason);strcpy(b.Num,a.Num);// FILE *f3=fopen("leave.dat","ab");fwrite(&b,sizeof(TEACHER),1,F);fclose(F);fflush(F);Sleep(1000);printf("\n\n\n");printf(" \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\操作成功///////////////////////\n");system("pause");printf("\n\n\n\n\n");continue;}if(ch==2){printf("-------------------------------------------------------------\n");printf("执行中....\n");printf("-------------------------------------------------------------\n");Sleep(1000);TEACHER b;FILE *F=fopen("read.dat","ab");strcpy(b.instructor,"您的请假申请没有被批准,请按时上课!");printf("\n");printf("辅导员意见:");scanf("%s",b.suggest);strcpy(b.Class,a.Class);strcpy(b.n1,a.n1);strcpy(b.time,a.time);strcpy(b.reason,a.reason);strcpy(b.Num,a.Num);fwrite(&b,sizeof(TEACHER),1,F);fclose(F);fflush(F);Sleep(1000);printf("\n\n\n");printf(" \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\操作成功///////////////////////\n");system("pause");printf("\n\n\n\n\n");continue;}}}}if(s==2){system("cls");goto Login; //修改学生请假申请状态反回}}//如果是辅导员if(strlen(n)==5)//如果是老师{int a,i;printf("\n");printf("请输入密码:");//直接输入密码scanf("%s",plog);for(a=2,i=0; i<4; i++,a--){if(login(nlog,plog)==-1)//密码错误{system("color 0c");char plog[20]= {}; //登录数组初始化system("cls");printf("\n");printf("************************************************************************\ n");printf("* 密码错误! *\n");printf("************************************************************************\ n");printf("\n\n");if(a>0){printf("请重新输入密码(你还有%d次机会):",a);printf("\n\n");scanf("%s",plog);if(login(nlog,plog)==1)goto success1;}elsereturn 0;}}if(login(nlog,plog)==1){success1: system("color F0");printf("\n\n");printf(" \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\登陆成功///////////////////////\n");Sleep(1000);system("cls");}system("cls");printf("\n\n");printf("========================================================================\ n");printf("||\n");printf("|---------------------------学生请假系统(老师端)-----------------------|\n");printf("||\n");printf("========================================================================\ n");Sleep(1000);printf("\n\n");printf(" -------------------------------------------------------------\n");printf(" 学生请假加载中...\n");printf(" -------------------------------------------------------------\n");Sleep(1000);// int i=0;TEACHER b;FILE *t=fopen("read.dat","rb");// rewind(t);while(1){if(!(fread(&b,sizeof(TEACHER),1,t)))break;// long d=i*sizeof(TEACHER);// fseek(t,d,SEEK_SET);// fread(&b,sizeof(TEACHER),1,t);printf("---------------------------------------------------------------\n");printf("|学生学号%s请假申请反馈信息:\n",b.Num);printf("|班级:%s\n",b.Class);printf("|姓名:%s\n",b.n1);printf("|请假时间:%s\n",b.time);printf("|请假原因:%s\n",b.reason);printf("|申请状态:%s\n",b.instructor);printf("---------------------------------------------------------------\n");printf("\n\n");}system("pause");}}if(c==-1)//账户不存在{system("color F0");system("cls");char n[20];char p[20];strcpy(n,nlog);//复制帐号if(strlen(n)==9)//完成注册,存入data.dat文档{User u;printf("************************************************************************\ n");printf("* 同学!第一次登录请完成注册*\n");printf("************************************************************************\ n");printf("\n\n");printf(" ----------------------------------------------------------------------\n");printf(" 请输入新密码\n");printf(" ----------------------------------------------------------------------\n");scanf("%s",p);strcpy(,n);strcpy(u.pw,p);FILE *f =fopen("data.dat","ab");//打开文件让指针f指向打开的文件fwrite(&u,sizeof(User),1,f);//讲以变量u的地址开始的内存区域的一个数据写到f指向的文件中,每个数据占sizeof(User)fclose(f);fflush(f);printf(" \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\注册成功///////////////////////\n\n\n");system("pause");system("cls");}if(strlen(n)==5){User u;printf("************************************************************************\ n");printf("* 老师!第一次登录请完成注册*\n");printf("************************************************************************\ n");printf("\n\n");printf(" ----------------------------------------------------------------------\n");printf(" 请输入新密码\n");printf(" ----------------------------------------------------------------------\n");scanf("%s",p);strcpy(,n);strcpy(u.pw,p);FILE *f =fopen("data.dat","ab");//打开文件让指针f指向打开的文件fwrite(&u,sizeof(User),1,f);//讲以变量u的地址开始的内存区域的一个数据写到f指向的文件中,每个数据占sizeof(User)fclose(f);fflush(f);printf(" \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\注册成功///////////////////////\n\n\n");system("pause");system("cls");}if(strlen(n)==4){User u;printf("************************************************************************\ n");printf("* 辅导员!第一次登录请完成注册*\n");printf("************************************************************************\ n");printf("\n\n");printf(" ----------------------------------------------------------------------\n");printf(" 请输入新密码\n");printf(" ----------------------------------------------------------------------\n");scanf("%s",p);strcpy(,n);strcpy(u.pw,p);FILE *f =fopen("data.dat","ab");//打开文件让指针f指向打开的文件fwrite(&u,sizeof(User),1,f);//讲以变量u的地址开始的内存区域的一个数据写到f指向的文件中,每个数据占sizeof(User)fclose(f);fflush(f);printf(" \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\注册成功///////////////////////\n\n\n");system("pause");system("cls");}goto Login;}return 0;}。
考勤管理系统源代码
#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; /*链表头指针head*/ writeinfo_flag=0; /*信息保存标记*/char password[16]="888888"; /*初始密码*/struct tm *timeinfo;int main() /*主函数*/{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);}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\n\t\t数据库中没有职工信息,文本为空或文件不存在!\n");printf("\n\t\t请按回车键进入主菜单新建职工信息^_^\n");getchar();system("cls"); /*清屏*/return;}fseek(fp, 0, SEEK_SET); /*指针移到文件开头*/ while(!feof(fp)) /*fp不指向文件末尾*/{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;}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].ho ur==8&&p->time[(week-1)*4].minute>0))printf(" 迟到"); /*上班时间之后来的都算迟到*/elseif(p->time[(week-1)*4].hour==88&&(timeinfo->tm_hour>11||(timeinfo->tm_hour==11&&timein fo->tm_min>30)))printf(" 旷工"); /*过了下班时间就是旷工*/elseif(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(" 迟到");elseif(p->time[(week-1)*4+2].hour==88&&(timeinfo->tm_hour>17||(timeinfo->tm_hour==17&&tim einfo->tm_min>30)))printf(" 旷工");elseif(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请按回车键返回主菜单重新开始!\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");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 ",p->time[i].hour,p->time[i].minute);if(i==4)printf("\n\n");}printf("\n 周二");for(i=4;i<8;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==8)printf("\n\n");}printf("\n 周三");for(i=8;i<12;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==12)printf("\n\n");}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请按回车键返回主菜单重新开始!\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");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;}。
课程设计考勤管理系统源代码
package kaoqin;import javax。
swing.*;import java。
awt.*;import java.awt。
event.*;import java.sql.Connection;import java.sql。
DriverManager;import java。
sql.ResultSet;import java。
sql。
SQLException;import java.sql。
Statement;import java.sql。
*;class AttendFrame extends JFrame//工作制类型{public AttendFrame(){this.setTitle(”工作制类型");this.setVisible(true);this.setContentPane(new JPanel());this。
setSize(300,200);create();}private void create(){JButton b1,b2,b3;Box box1,box2,box;b1=new JButton("非弹性工作制”);b2=new JButton("弹性工作制");b3=new JButton("返回”);box1=Box。
createHorizontalBox();box2=Box.createHorizontalBox();box=Box。
createVerticalBox();box1。
add(b1);box1.add(Box。
createHorizontalStrut(20));box1.add(b2);box2.add(b3);box。
add(box1);box。
add(Box。
createVerticalStrut(30));box。
add(box2);this。
add(box);b1.addActionListener(new ActionListener() // {@Overridepublic void actionPerformed(ActionEvent e){// TODO 自动生成的方法存根UBoundFrame frame=new UBoundFrame();dispose();}});b2。
用activiti 工作流 实现简单的请假 附带源码
用activiti 工作流实现简单的请假附带源码用activiti 工作流实现简单的请假附带源码新建一个Maven项目项目结构pom.xml[html]view plaincopy1.<span>project xmlns="/POM/4.0.0"xmlns:xsi="/2001/ XMLSchema-instance"2.xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"<3.< span>modelVersion<4.0.0</>modelVersion<4.5.< span>groupId<com.dengkun.activiti</>groupId<6.< span>artifactId<Test1</>artifactId<7.< span>version<0.0.1-SNAPSHOT</>version<8.< span>packaging<jar</>packaging<9.< span>name<Test1Name</>name<10.< span>description<Test1d</>description<11.12.< span>properties<13.< span>project.build.sourceEncoding<UTF-8</>project.build.sourceEncoding<14.</>properties<15.16.< span>dependencies<17.< span>dependency<18.< span>groupId<org.vaadin.addons</>groupId<19.< span>artifactId<dcharts-widget</>artifactId<20.< span>version<0.10.0</>version<21.< span>type<jar</>type<22.</>dependency<23.24.< span>dependency<25.< span>groupId<org.activiti</>groupId<26.< span>artifactId<activiti-engine</>artifactId<27.< span>version<5.15.1</>version<28.</>dependency<29.< span>dependency<30.< span>groupId<org.activiti</>groupId<31.< span>artifactId<activiti-spring</>artifactId<32.< span>version<5.15.1</>version<33.</>dependency<34.< span>dependency<35.< span>groupId<org.activiti</>groupId<36.< span>artifactId<activiti-explorer</>artifactId<37.< span>version<5.15.1</>version<38.</>dependency<39.40.< span>dependency<41.< span>groupId<commons-dbcp</>groupId<42.< span>artifactId<commons-dbcp</>artifactId<43.< span>version<1.4</>version<44.</>dependency<45.< span>dependency<46.< span>groupId<mysql</>groupId<47.< span>artifactId<mysql-connector-java</>artifactId<48.< span>version<5.1.29</>version<49.</>dependency<50.51.< span>dependency<52.< span>groupId<org.springframework</>groupId<53.< span>artifactId<spring-core</>artifactId<54.< span>version<4.0.6.RELEASE</>version<55.</>dependency<56.< span>dependency<57.< span>groupId<org.springframework</>groupId<58.< span>artifactId<spring-beans</>artifactId<59.< span>version<4.0.6.RELEASE</>version<60.</>dependency<61.< span>dependency<62.< span>groupId<org.springframework</>groupId<63.< span>artifactId<spring-test</>artifactId<64.< span>version<4.0.6.RELEASE</>version<65.</>dependency<66.< span>dependency<67.< span>groupId<org.springframework</>groupId<68.< span>artifactId<spring-context</>artifactId<69.< span>version<4.0.6.RELEASE</>version<70.</>dependency<71.< span>dependency<72.< span>groupId<org.springframework</>groupId<73.< span>artifactId<spring-context-support</>artifactId<74.< span>version<4.0.6.RELEASE</>version<75.</>dependency<76.< span>dependency<77.< span>groupId<org.springframework</>groupId<78.< span>artifactId<spring-tx</>artifactId<79.< span>version<4.0.6.RELEASE</>version<80.</>dependency<81.< span>dependency<82.< span>groupId<org.springframework</>groupId<83.< span>artifactId<spring-orm</>artifactId<84.< span>version<4.0.6.RELEASE</>version<85.</>dependency<86.87.< span>dependency<88.< span>groupId<org.mybatis</>groupId<89.< span>artifactId<mybatis</>artifactId<90.< span>version<3.2.5</>version<91.</>dependency<92.< span>dependency<93.< span>groupId<org.mybatis</>groupId<94.< span>artifactId<mybatis-spring</>artifactId<95.< span>version<1.2.2</>version<96.</>dependency<97.98.< span>dependency<99.< span>groupId<junit</>groupId<100.< span>artifactId<junit</>artifactId<101.< span>version<4.11</>version<102.</>dependency<103.104.< span>dependency<105.< span>groupId<log4j</>groupId<106.< span>artifactId<log4j</>artifactId<107.< span>version<1.2.4</>version<108.</>dependency<109.< span>dependency<110.< span>groupId<org.slf4j</>groupId<111.< span>artifactId<slf4j-api</>artifactId<112.< span>version<1.7.6</>version<113.</>dependency<114.< span>dependency<115.< span>groupId<org.slf4j</>groupId<116.< span>artifactId<jcl-over-slf4j</>artifactId<117.< span>version<1.7.6</>version<118.</>dependency<119.< span>dependency<120.< span>groupId<org.slf4j</>groupId<121.< span>artifactId<slf4j-log4j12</>artifactId<122.< span>version<1.7.6</>version<123.</>dependency<124.125.< span>dependency<126.< span>groupId<mons</>groupId<127.< span>artifactId<commons-lang3</>artifactId<128.< span>version<3.1</>version<129.</>dependency<130.< span>dependency<131.< span>groupId<commons-io</>groupId<132.< span>artifactId<commons-io</>artifactId<133.< span>version<2.4</>version<134.</>dependency<135.< span>dependency<136.< span>groupId<commons-fileupload</>groupId<137.< span>artifactId<commons-fileupload</>artifactId<138.< span>version<1.2.2</>version<139.</>dependency<140.141.< span>dependency<142.< span>groupId<javax.annotation</>groupId<143.< span>artifactId<javax.annotation-api</>artifactId<144.< span>version<1.2</>version<145.</>dependency<146.< span>dependency<147.< span>groupId<joda-time</>groupId<148.< span>artifactId<joda-time</>artifactId<149.< span>version<2.1</>version<150.</>dependency<151.152.</>dependencies<153.</>project<本人使用的是开源中国的库,dcharts-widget 路径不同,所以要复制到本地的私服库,注意名字不能错。
考勤管理-课程设计考勤管理系统源代码51页 精品
package kaoqin;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.*;class AttendFrame extends JFrame//工作制类型{public AttendFrame(){this.setTitle("工作制类型");this.setVisible(true);this.setContentPane(new JPanel());this.setSize(300,200);create();}private void create(){JButton b1,b2,b3;Box box1,box2,box;b1=new JButton("非弹性工作制");b2=new JButton("弹性工作制");b3=new JButton("返回");box1=Box.createHorizontalBox();box2=Box.createHorizontalBox();box=Box.createVerticalBox();box1.add(b1);box1.add(Box.createHorizontalStrut(20));box1.add(b2);box2.add(b3);box.add(box1);box.add(Box.createVerticalStrut(30));box.add(box2);this.add(box);b1.addActionListener(new ActionListener() // {@Overridepublic void actionPerformed(ActionEvent e){// TODO 自动生成的方法存根UBoundFrame frame=new UBoundFrame();dispose();}});b2.addActionListener(new ActionListener() //{@Overridepublic void actionPerformed(ActionEvent e){// TODO 自动生成的方法存根BoundFrame frame=new BoundFrame();dispose();}});b3.addActionListener(new ActionListener() //{@Overridepublic void actionPerformed(ActionEvent e){// TODO 自动生成的方法存根MFrame frame=new MFrame();dispose();}});}}package kaoqin;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.*;class BoundFrame extends JFrame{public BoundFrame(){this.setTitle("弹性工作制");this.setVisible(true);this.setContentPane(new JPanel());this.setSize(400,400);create();}JLabel k1,k2,k3,k4,k5,k6;JTextField f1,f2,f3,f4,f5,f6;Box box1,box2,box3,box4,box5,box;JButton b1;private void create(){k1=new JLabel("工号:");k2=new JLabel("姓名:");k3=new JLabel("当月工时:");k4=new JLabel(":");k5=new JLabel("当月工作天数");k6=new JLabel("当月富余:");b1=new JButton("返回");f1=new JTextField(5);f2=new JTextField(5);f3=new JTextField(5);f4=new JTextField(5);f5=new JTextField(5);f6=new JTextField(5);box1=Box.createHorizontalBox();box2=Box.createHorizontalBox();box3=Box.createHorizontalBox();box4=Box.createHorizontalBox();box5=Box.createHorizontalBox();box=Box.createVerticalBox();box1.add(k1);box1.add(f1);box1.add(Box.createHorizontalStrut(20));box1.add(k2);box1.add(f2);box2.add(k3);box2.add(f3);box2.add(k4);box2.add(f4);box3.add(k5);box3.add(f5);box4.add(k6);box4.add(f6);box5.add(b1);box.add(box1);box.add(Box.createVerticalStrut(20));box.add(box2);box.add(Box.createVerticalStrut(20));box.add(box3);box.add(Box.createVerticalStrut(20));box.add(box4);box.add(Box.createVerticalStrut(20));box.add(box5);this.add(box);b1.addActionListener(new ActionListener() //确定{@Overridepublic void actionPerformed(ActionEvent e){// TODO 自动生成的方法存根AttendFrame frame=new AttendFrame();dispose();}});}}package kaoqin;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class ConnectionDB {private String JDriver="sun.jdbc.odbc.JdbcOdbcDriver";private String sqlURL="jdbc:odbc:bobo";//private String JDriver=".microsoft.sqlserver.jdbc.SQLServerDriver";//private String sqlURL="jdbc:sqlserver://localhost:1433;DatabaseName=MyTest;integratedSecurity=TRUE;";private Connection connection;private Statement statement;private static Connection conn = null;private String[] tableSQL=new String[4];public ConnectionDB(){try {Class.forName(JDriver);connection=DriverManager.getConnection(sqlURL);statement=connection.createStatement();} catch (ClassNotFoundException e) {e.printStackTrace();}catch (SQLException e) {e.printStackTrace();}}public Connection getConnection(){return connection;}public Statement getStatement(){return statement;}public void breakDB(){try {statement.close();connection.close();} catch (SQLException e) {e.printStackTrace();}}public void createTable(){tableSQL[0]="create table staff_info("+"Sno char(9) primary key,"+"Sname char(10) not null,"+"Sage smallint,"+"enter_time char(10) not null,"+"position char(10) not null,"+"sex char(1),"+"password char(6));";tableSQL[1]="create table pz_info("+"arrive_hour char(2),"+"arrive_minute char(2),"+"leave_hour char(2),"+"leave_minute char(2),"+"everyday_time char(2));";tableSQL[2]="create table everymonth_statistics("+"Sno char(9) not null,"+"Sname char(10) not null,"+"remain_time char(4),"+"late_times smallint,"+"early_leave smallint,"+"work_day smallint,"+"primary key(Sno),"+"foreign key(Sno)"+"references staff_info(Sno) on delete cascade);";tableSQL[3]="create table everyday_statistics("+"Sno char(9) not null,"+"Sname char(10) not null,"+"hour char(2),"+"minute char(2),"+"action char(6),"+"time char(4),"+"primary key(Sno),"+"foreign key(Sno)"+"references staff_info(Sno) on delete cascade);";try {for(int i=0;i<4;i++)statement.executeUpdate(tableSQL[i]);} catch (SQLException e) {e.printStackTrace();}private static ResultSet executeQuery(String sql) {try {if(conn==null)new ConnectionDB();returnconn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDA TABL E).executeQuery(sql);} catch (SQLException e) {e.printStackTrace();return null;} finally {}}}package kaoqin;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.*;class Equ_Frame extends JFrame //配置信息{public Equ_Frame(){this.setTitle("配置信息");this.setSize(400,400);this.setContentPane(new JPanel());this.setVisible(true);this.create();}JLabel k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;JLabel f1,f2,f3,f4,f5,f6,f7,f8,f9,f10;Box box1,box2,box3,box4,box5,box6,box7,box;JButton b1,b2;private void create()k1=new JLabel("上班时间:");k2=new JLabel(":");k3=new JLabel("下班时间:");k4=new JLabel(":");k5=new JLabel("每月工作总时间:"); k6=new JLabel("每月工作天数:"); k7=new JLabel("每月工作日期:"); k8=new JLabel("~");k9=new JLabel("每月放假日期:"); k10=new JLabel("~");b1=new JButton("修改");b2=new JButton("返回");f1=new JLabel("08");f2=new JLabel("30");f3=new JLabel("17");f4=new JLabel("30");f5=new JLabel("200");f6=new JLabel("22");f7=new JLabel("星期一");f8=new JLabel("星期五");f9=new JLabel("星期六");f10=new JLabel("星期日");box1=Box.createHorizontalBox();box2=Box.createHorizontalBox();box3=Box.createHorizontalBox();box4=Box.createHorizontalBox();box5=Box.createHorizontalBox();box6=Box.createHorizontalBox();box7=Box.createHorizontalBox();box=Box.createVerticalBox();box1.add(k1);box1.add(f1);box1.add(k2);box1.add(f2);box2.add(k3);box2.add(f3);box2.add(k4);box2.add(f4);box3.add(k5);box3.add(f5);box4.add(k6);box4.add(f6);box5.add(k7);box5.add(f7);box5.add(k8);box5.add(f8);box6.add(k9);box6.add(f9);box6.add(k10);box6.add(f10);box7.add(b1);box7.add(Box.createHorizontalStrut(20));box7.add(b2);box.add(box1);box.add(Box.createVerticalStrut(20));box.add(box2);box.add(Box.createVerticalStrut(20));box.add(box3);box.add(Box.createVerticalStrut(20));box.add(box4);box.add(Box.createVerticalStrut(20));box.add(box5);box.add(Box.createVerticalStrut(20));box.add(box6);box.add(Box.createVerticalStrut(20));box.add(box7);this.add(box);b1.addActionListener(new ActionListener() //确定{@Overridepublic void actionPerformed(ActionEvent e){// TODO 自动生成的方法存根EquAltFrame frame=new EquAltFrame();dispose();}});b2.addActionListener(new ActionListener() //确定{@Overridepublic void actionPerformed(ActionEvent e){// TODO 自动生成的方法存根MFrame frame=new MFrame();dispose();}});}}package kaoqin;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.*;class EquAltFrame extends JFrame //修改配置信息{public EquAltFrame(){this.setTitle("修改配置信息");this.setSize(400,400);this.setContentPane(new JPanel());this.setVisible(true);this.create();}JLabel k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;JTextField f1,f2,f3,f4,f5,f6,f7,f8,f9,f10;Box box1,box2,box3,box4,box5,box6,box7,box;JButton b1,b2;private void create(){k1=new JLabel("上班时间:");k2=new JLabel(":");k3=new JLabel("下班时间:");k4=new JLabel(":");k5=new JLabel("每月工作总时间:"); k6=new JLabel("每月工作天数:"); k7=new JLabel("每月工作日期:"); k8=new JLabel("~");k9=new JLabel("每月放假日期:"); k10=new JLabel("~");b1=new JButton("保存");b2=new JButton("取消");f1=new JTextField(5);f2=new JTextField(5);f3=new JTextField(5);f4=new JTextField(5);f5=new JTextField(5);f6=new JTextField(5);f7=new JTextField(5);f8=new JTextField(5);f9=new JTextField(5);f10=new JTextField(5);box1=Box.createHorizontalBox();box2=Box.createHorizontalBox();box3=Box.createHorizontalBox();box4=Box.createHorizontalBox();box5=Box.createHorizontalBox();box6=Box.createHorizontalBox();box7=Box.createHorizontalBox();box=Box.createVerticalBox();box1.add(k1);box1.add(f1);box1.add(k2);box1.add(f2);box2.add(k3);box2.add(f3);box2.add(k4);box2.add(f4);box3.add(k5);box3.add(f5);box4.add(k6);box4.add(f6);box5.add(k7);box5.add(f7);box5.add(k8);box5.add(f8);box6.add(k9);box6.add(f9);box6.add(k10);box6.add(f10);box7.add(b1);box7.add(Box.createHorizontalStrut(20));box7.add(b2);box.add(box1);box.add(Box.createVerticalStrut(20));box.add(box2);box.add(Box.createVerticalStrut(20));box.add(box3);box.add(Box.createVerticalStrut(20));box.add(box4);box.add(Box.createVerticalStrut(20));box.add(box5);box.add(Box.createVerticalStrut(20));box.add(box6);box.add(Box.createVerticalStrut(20));box.add(box7);this.add(box);b1.addActionListener(new ActionListener() //确定{@Overridepublic void actionPerformed(ActionEvent e){// TODO 自动生成的方法存根Equ_Frame in=new Equ_Frame();EquAltFrame on=new EquAltFrame();in.f1.setText(on.f1.getText());in.f2.setText(on.f2.getText());in.f3.setText(on.f3.getText());in.f4.setText(on.f4.getText());in.f5.setText(on.f5.getText());in.f6.setText(on.f6.getText());in.f7.setText(on.f7.getText());in.f8.setText(on.f8.getText());in.f9.setText(on.f9.getText());in.f10.setText(on.f10.getText());}});b2.addActionListener(new ActionListener() //确定{@Overridepublic void actionPerformed(ActionEvent e){// TODO 自动生成的方法存根Equ_Frame frame=new Equ_Frame();dispose();}});}}package kaoqin;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.*;class login extends JFrame //管理员登陆界面{public login(){this.setTitle("管理员登陆界面");this.setSize(300,300);this.setContentPane(new JPanel());this.setVisible(true);init();}JTextField jTextField1;JPasswordField jPasswordField1;private void init(){JLabel jLabel1=new JLabel("管理员登陆");JLabel jLabel2=new JLabel("用户名");JLabel jLabel3=new JLabel("密码");jTextField1=new JTextField(10);jPasswordField1=new JPasswordField(10);JButton button1=new JButton("确定");JButton button2=new JButton("取消");JButton button3=new JButton("修改密码");Box box,box1,box2,box3,box4,box5;box1=Box.createHorizontalBox();box1.add(jLabel1);box1.add(Box.createHorizontalStrut(10));box2=Box.createHorizontalBox();box2.add(jLabel2);box2.add(Box.createHorizontalStrut(20));box2.add(jTextField1);box3=Box.createHorizontalBox();box3.add(jLabel3);box3.add(Box.createHorizontalStrut(20));box3.add(jPasswordField1);box4=Box.createHorizontalBox();box4.add(button1);box4.add(Box.createHorizontalStrut(20));box4.add(button2);box5=Box.createHorizontalBox();box5.add(button3);box=Box.createVerticalBox();box.add(box1);box.add(Box.createVerticalStrut(20));box.add(box2);box.add(Box.createVerticalStrut(20));box.add(box3);box.add(Box.createVerticalStrut(20));box.add(box4);box.add(Box.createVerticalStrut(20));box.add(box5);this.add(box);button1.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {// TODO 自动生成的方法存根// login im=new login();String name=jTextField1.getText(),password=jPasswordField1.getText();if(name.equals("admin")&&password.equals("123456")){MFrame mi=new MFrame();dispose();}else{JOptionPane.showMessageDialog(new JFrame("WARNING"), "用户名或密码错误");}}});button2.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {// TODO 自动生成的方法存根Main_login frame=new Main_login();dispose();}});button3.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {// TODO 自动生成的方法存根MPwd f1=new MPwd();dispose();}});}}package kaoqin;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.*;class login1 extends JFrame //普通用户登陆界面{public login1(){this.setTitle("普通用户登陆界面");this.setSize(300,300);this.setContentPane(new JPanel());this.setVisible(true);init();}JTextField jTextField1;JPasswordField jPasswordField1;private void init(){JLabel jLabel1=new JLabel("员工登陆");JLabel jLabel2=new JLabel("用户名");JLabel jLabel3=new JLabel("密码");jTextField1=new JTextField(10);jPasswordField1=new JPasswordField(10);JButton button1=new JButton("确定");JButton button2=new JButton("取消");JButton button3=new JButton("修改密码");Box box,box1,box2,box3,box4,box5;box1=Box.createHorizontalBox();box1.add(jLabel1);box1.add(Box.createHorizontalStrut(10));box2=Box.createHorizontalBox();box2.add(jLabel2);box2.add(Box.createHorizontalStrut(20));box2.add(jTextField1);box3=Box.createHorizontalBox();box3.add(jLabel3);box3.add(Box.createHorizontalStrut(20));box3.add(jPasswordField1);box4=Box.createHorizontalBox();box4.add(button1);box4.add(Box.createHorizontalStrut(20));box4.add(button2);box5=Box.createHorizontalBox();box5.add(button3);box=Box.createVerticalBox();box.add(box1);box.add(Box.createVerticalStrut(20));box.add(box2);box.add(Box.createVerticalStrut(20));box.add(box3);box.add(Box.createVerticalStrut(20));box.add(box4);box.add(Box.createVerticalStrut(20));box.add(box5);this.add(box);button1.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {// TODO 自动生成的方法存根String name=jTextField1.getText(),password=jPasswordField1.getText();if(name.equals("user")&&password.equals("123456")){WoSerFrame2 mi=new WoSerFrame2();dispose();}else{JOptionPane.showMessageDialog(new JFrame("WARNING"), "用户名或密码错误");}}});button2.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {// TODO 自动生成的方法存根Main_login frame=new Main_login();dispose();}});button3.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {// TODO 自动生成的方法存根MPwd f1=new MPwd();dispose();}});}}package kaoqin;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.sql.*;public class Main_login extends JFrame implements ActionListener {public Main_login(){super("选择用户类型");this.setSize(300,300);this.setContentPane(new JPanel());create();}private void create(){JButton b1,b2,b3;Box box1,box2,box3,box;b1=new JButton("系统管理员");b2=new JButton("普通用户");b3=new JButton("退出登陆");b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);box1=Box.createHorizontalBox();box2=Box.createHorizontalBox();box3=Box.createHorizontalBox();box1.add(b1);box2.add(b2);box3.add(b3);box=Box.createVerticalBox();box.add(box1);box.add(Box.createVerticalStrut(20));box.add(box2);box.add(Box.createVerticalStrut(40));box.add(box3);this.add(box);}public void actionPerformed(ActionEvent e){if(e.getActionmand()=="系统管理员"){login frame=new login();dispose();}else if(e.getActionmand()=="普通用户"){login1 frame=new login1();dispose();}else if(e.getActionmand()=="退出登陆"){System.exit(0);}}public static void main(String args[]){//ConnectionDB myDB=new ConnectionDB();int flag=0; //判断是否创建过数据库的标志File file=new File("SQL.txt");try {//读入标志FileReader in=new FileReader(file);int len;if((len=in.read())!=-1)flag=1; //已创建了数据库,置1in.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}//没有创建过数据库if(flag==0){ConnectionDB myDB=new ConnectionDB();myDB.createTable();myDB.breakDB();try {//写入标志FileWriter out=new FileWriter(file);out.write("1");out.close();} catch (IOException e) {e.printStackTrace();}}Main_login frame1=new Main_login();frame1.setVisible(true);}}package kaoqin;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.*;class MFrame extends JFrame //主功能界面{public MFrame(){this.setTitle("主要功能");this.setContentPane(new JPanel());this.setSize(350,200);this.setVisible(true);init();}private void init(){JButton button1=new JButton("员工信息管理");JButton button2=new JButton("员工出勤信息");JButton button3=new JButton("配置信息");JButton button4=new JButton("退出登陆");Box box1=Box.createHorizontalBox();Box box2=Box.createHorizontalBox();Box box3=Box.createVerticalBox();box1.add(button1);box1.add(Box.createHorizontalStrut(10));box1.add(button2);box1.add(Box.createHorizontalStrut(10));box1.add(button3);box2.add(button4);box3.add(box1);box3.add(Box.createVerticalStrut(30));box3.add(box2);this.add(box3);button1.addActionListener(new ActionListener() // {@Overridepublic void actionPerformed(ActionEvent e){// TODO 自动生成的方法存根Worker_Frame frame=new Worker_Frame();dispose();}});button2.addActionListener(new ActionListener() // {@Overridepublic void actionPerformed(ActionEvent e){// TODO 自动生成的方法存根AttendFrame frame=new AttendFrame();dispose();}});button3.addActionListener(new ActionListener() //{@Overridepublic void actionPerformed(ActionEvent e){// TODO 自动生成的方法存根Equ_Frame frame=new Equ_Frame();dispose();}});button4.addActionListener(new ActionListener() //{@Overridepublic void actionPerformed(ActionEvent e){// TODO 自动生成的方法存根Main_login frame=new Main_login();dispose();}});}}package kaoqin;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.*;class MPwd extends JFrame //管理员密码修改{public MPwd(){this.setTitle("修改密码");this.setVisible(true);this.setSize(300,200);this.setContentPane(new JPanel());init();}JLabel L1,L2,L3;JPasswordField p1,p2,p3;JButton b1,b2;Box box1,box2,box3,box4,box;private void init(){L1=new JLabel("请输入原密码:");L2=new JLabel("请输入新密码:");L3=new JLabel("请再次输入密码:");p1=new JPasswordField(10);p2=new JPasswordField(10);p3=new JPasswordField(10);b1=new JButton("确定");b2=new JButton("取消");box1=Box.createHorizontalBox();box1.add(L1);box1.add(Box.createHorizontalStrut(20));box1.add(p1);box2=Box.createHorizontalBox();box2.add(L2);box2.add(Box.createHorizontalStrut(20));box2.add(p2);box3=Box.createHorizontalBox();box3.add(L3);box3.add(Box.createHorizontalStrut(20));box3.add(p3);box4=Box.createHorizontalBox();box4.add(b1);box4.add(Box.createHorizontalStrut(20));box4.add(b2);box=Box.createVerticalBox();box.add(box1);box.add(Box.createVerticalStrut(10));box.add(box2);box.add(Box.createVerticalStrut(10));box.add(box3);box.add(Box.createVerticalStrut(10));box.add(box4);this.add(box1);this.add(box2);this.add(box3);this.add(box4);this.add(box);b1.addActionListener(new ActionListener() //确定{@Overridepublic void actionPerformed(ActionEvent e){// TODO 自动生成的方法if(p1.getText().equals("123456")){if(p2.getText().equals(p3.getText())){JOptionPane.showMessageDialog(new JFrame("WARNING"), "密码修改成功");login frame=new login();dispose();}else{JOptionPane.showMessageDialog(newJFrame("WARNING"), "两次密码输入不一致,请重新输入");}}else{JOptionPane.showMessageDialog(new JFrame("WARNING"), "原密码输入不正确,请重新输入");}}});b2.addActionListener(new ActionListener() //确定{@Overridepublic void actionPerformed(ActionEvent e){// TODO 自动生成的方法存根Main_login frame=new Main_login();dispose();}});}}package kaoqin;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.*;class OperatSFrame extends JFrame //提示类{private JLabel displayLabel;private static Font font=new Font("楷体",Font.BOLD,14);public OperatSFrame(){this.setSize(300,100);this.setLayout(null);this.setResizable(false);this.setVisible(true);this.addpnents();}private void addpnents(){displayLabel=new JLabel("操作成功!");displayLabel.setFont(font);displayLabel.setBounds(80,30,100,30);this.add(displayLabel);}}package kaoqin;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.*;class UBoundFrame extends JFrame//非弹性工作制{public UBoundFrame(){this.setTitle("非弹性工作制");this.setVisible(true);this.setContentPane(new JPanel());this.setSize(400,400);create();}JLabel k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;JTextField f1,f2,f3,f4,f5,f6,f7,f8,f9,f10;Box box1,box2,box3,box4,box5,box6,box7,box;JButton b1;private void create(){k1=new JLabel("工号:");k2=new JLabel("姓名:");k3=new JLabel("进入时间:");k4=new JLabel(":");k5=new JLabel("离开时间:");k6=new JLabel(":");k7=new JLabel("工作时间:");k8=new JLabel(":");k9=new JLabel("早退次数:");k10=new JLabel("迟到次数:");b1=new JButton("返回");f1=new JTextField(5);f2=new JTextField(5);f3=new JTextField(5);f4=new JTextField(5);f5=new JTextField(5);f6=new JTextField(5);f7=new JTextField(5);f8=new JTextField(5);f9=new JTextField(5);f10=new JTextField(5);box1=Box.createHorizontalBox();box2=Box.createHorizontalBox();box3=Box.createHorizontalBox();box4=Box.createHorizontalBox();box5=Box.createHorizontalBox();box6=Box.createHorizontalBox();box7=Box.createHorizontalBox();box=Box.createVerticalBox();box1.add(k1);box1.add(f1);box1.add(Box.createHorizontalStrut(20)); box1.add(k2);box1.add(f2);box2.add(k3);box2.add(f3);box2.add(k4);box2.add(f4);box3.add(k5);box3.add(f5);box3.add(k6);box3.add(f6);box4.add(k7);box4.add(f7);box4.add(k8);box4.add(f8);box5.add(k9);box5.add(f9);box6.add(k10);box6.add(f10);box7.add(b1);box.add(box1);box.add(Box.createVerticalStrut(20)); box.add(box2);box.add(Box.createVerticalStrut(20));box.add(box3);box.add(Box.createVerticalStrut(20));box.add(box4);box.add(Box.createVerticalStrut(20));box.add(box5);box.add(Box.createVerticalStrut(20));box.add(box6);box.add(Box.createVerticalStrut(20));box.add(box7);this.add(box);b1.addActionListener(new ActionListener() //确定{@Overridepublic void actionPerformed(ActionEvent e){// TODO 自动生成的方法存根AttendFrame frame=new AttendFrame();dispose();}});}}package kaoqin;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.*;class WoAddFrame extends JFrame//添加员工{private ConnectionDB myCon=new ConnectionDB();private JButton YesBtn,NoBtn;private static JTextField woName,woNo,woAge,woYear,woPosition,woSex,woPassword;private JLabel woNameLabel,woNoLabel,woAgeLabel,woYearLabel,woPositionLabel,woSexLabel,woPassword Label;//提示区private static Font font=new Font("楷体",Font.BOLD,14);。
学生请假管理系统需求分析设计文档(附待部分核心代码-ssh框架实现)精编版
2014 - 2015学年第 2 学期1.总体目标 (1)1.1背景 (1)1.1.1引言 (1)1.2要求 (1)1.3目标 (1)2.需求分析 (2)2.1功能需求描述 (2)2.1.1基本功能: (2)2.1.2业务功能: (2)2.2用户需求描述 (2)2.2.1学生用户需求描述 (2)2.2.2任课教师用户需求描述 (2)3.数据库设计 (2)4. 功能模块设计 (4)4.1系统流程 (5)5. 主要功能的具体实现 (8)5.1请假功能的实现 (8)5.2审核功能的实现 (11)5.3权限修改功能 (15)5.4导入功能 (17)6.系统的运行环境需求 (18)6.1硬件环境: (18)6.2.软件环境: (18)7.测试结果与分析 (18)7.1主要测试内容 (18)7.2软件测试的目的 (19)7.3软件测试的任务 (19)7.4.1功能测试 (19)7.4.2负载测试 (19)7.4.3文档测试 (19)7.5 测试环境 (20)7.6 系统具体测试 (20)8.课程设计总结 (21)1.总体目标1.1背景1.1.1引言目前高校大部分都还是采用学生写好请假条,然后到辅导员那里申请请假的方式进行请假,这种方式不仅麻烦而且比较费时。
在信息化的今天,能有效地借助网络才能提高办事效率。
因此,请假管理系统能够解决这种请假方式所带来的很多麻烦。
1.2要求请假管理系统要达到以下功能:增删查改:学生信息管理(导入/查/改/删)、老师(含辅导员和系领导)信息管理业务功能:学生填写请假事由、提交给辅导员审批、按请假制度超过3天的提交给系领导审批、打印请假条、学生查看历史请假记录、辅导员可按不同筛选条件查看请假记录。
1.3目标请假管理系统的基本目标是方便学生请假和校方的批假工作,系统实现后,应做该到:方便学生:学生可以通过登录本系统填写请假原因向校方申请请假,不用通过手写请假条后找到导员请假。
方便校方:学生在系统中申请请假后可以进入本系统进行审核,方便了校方很多请假方面的工作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
请假管理系统源代码 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】#include <stdio.h>#include <stdlib.h>#include <string.h>#include <windows.h>#define select inttypedef struct //账户信息{char name[20]; //char pw[20]; //User.pw} User;typedef struct{char Num[20];char n1[20];char Class[20];char time[100];char reason[100];char instructor[100];} Leave;typedef struct{char n1[20];char Num[20];// char name[20];char Class[20];char time[100];char reason[100];char instructor[100];char suggest[100];} TEACHER;int check (char name[20]){int i=0;User ru;FILE *f =fopen("data.dat","rb"); rewind(f);for(i=0; !feof(f); i++){int d=i*sizeof(User);fseek(f,d,SEEK_SET);fread(&ru,sizeof(User),1,f);if(strcmp(name,)==0)return 1;}return -1;}int login(char name[20],char pw[20]){User us;FILE *f =fopen("data.dat","rb");while(!feof(f)){fread(&us,sizeof(User),1,f);if(strcmp(name,)==0){if(strcmp(pw,us.pw)==0)return 1; }}return -1;}int main(){char n[20];char plog[20];char nlog[20];int c;User u;FILE *f =fopen("data.dat","ab"); if(f!=NULL){fwrite(&u,sizeof(User),1,f); }fclose(f);Login:system("color F0");system("cls");printf("\n\n");printf("========================================================================\n");printf("| |\n");printf("|-----------------------------学生请假系统-----------------------------|\n");printf("| |\n");printf("========================================================================\n");printf("\n");Sleep(1000);printf("\n");printf("请输入帐号:");scanf("%s",nlog);c=check(nlog);if(c==1)//如果账户存在{strcpy(n,nlog);//复制登录帐号if(strlen(n)==9)//如果是学生{int a,i;select s=0;printf("\n");printf("请输入密码:");//直接输入密码scanf("%s",plog);for(a=2,i=0; i<4; i++,a--){if(login(nlog,plog)==-1)//密码错误{system("color F0");char plog[20]= {}; //登录数组初始化system("cls");printf("\n");printf("******************************************************* *****************\n");printf("* 密码错误! *\n");printf("******************************************************* *****************\n");printf("\n\n");if(a>0){printf("请重新输入密码(你还有%d次机会):",a);printf("\n\n");scanf("%s",plog);if(login(nlog,plog)==1)goto success2;}elsereturn 0;}}if(login(nlog,plog)==1){success2: system("color F0");printf("\n\n");printf("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\登陆成功///////////////////////\n");Sleep(1000);system("cls");}LEAVESYSTEM:printf("\n\n");printf("======================================================= =================\n");printf("|1.提交请假申请|\n");printf("|2.查询请假批准状态|\n");printf("| 如无需操作,可直接关闭程序|\n");printf("======================================================= =================\n");printf("\n\n");Sleep(1000);printf("请输入您要执行的选项:");scanf("%d",&s);Sleep(1000);while(s!=1&&s!=2){if(s!=1&&s!=2){ system("color 0c");printf("选项不存在,请重新输入(1/2):");s=0;scanf("%d",&s);}}if(s==1)//写入请假{system("color F0");system("cls");printf("\n\n");printf("========================================================================\n");printf("| |\n");printf("|------------------------------提交请假申请----------------------------|\n");printf("| |\n");printf("========================================================================\n");printf("\n\n");Leave a;Sleep(1000);printf("请输入班级:\n");scanf("%s",a.Class);printf("请输入姓名:\n");scanf("%s",a.n1);printf("请详细输入请假时间:\n");scanf("%s",a.time);printf("请详细输入请假原因:\n");scanf("%s",a.reason);strcpy(nlog,a.Num);strcpy(a.instructor,"0");FILE *t=fopen("leave.dat","ab");fwrite(&a,sizeof(Leave),1,t);//讲以变量u的地址开始的内存区域的一个数据写到f指向的文件中,每个数据占sizeof(User)fclose(t);fflush(t);// Sleep(1000);printf("\n");printf("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\保存成功///////////////////////\n");printf(" 请不定时来查询你的假条申请状态!\n\n\n");system("pause");system("cls");goto LEAVESYSTEM;}if(s==2)//学生查询状态代码{system("color F0");system("cls");printf("\n\n");printf("========================================================================\n");printf("| |\n");printf("|----------------------------查询请假批准状态--------------------------|\n");printf("| |\n");printf("========================================================================\n");Sleep(1000);TEACHER b;FILE *t=fopen("read.dat","rb");while(1){if(!(fread(&b,sizeof(TEACHER),1,t)))break;if((strcmp(nlog,b.Num))==0){printf("---------------------------------------------------------------\n");printf("|学生%s请假申请反馈信息:\n",b.n1);printf("|班级:%s\n \n",b.Class);printf("|姓名:%s\n \n",b.n1);printf("|请假时间:%s\n \n",b.time);printf("|请假原因:%s\n \n",b.reason);printf("---------------------------------------------------------------\n");Sleep(1000);printf("\n");printf(" -------------------------------------------------------------\n");printf(" 申请状态:%s\n",b.instructor);printf(" 辅导员意见:%s\n",b.suggest);printf(" -------------------------------------------------------------\n");system("pause");Sleep(1000);system("cls");goto LEAVESYSTEM;}}}if(s==3){goto Login;}}//身份学生if(strlen(n)==4)//如果是辅导员{int a,i;select s;printf("\n");printf("请输入密码:");//直接输入密码 scanf("%s",plog);for(a=2,i=0; i<4; i++,a--){if(login(nlog,plog)==-1)//密码错误{system("color 0c");char plog[20]= {}; //登录数组初始化system("cls");printf("\n");printf("******************************************************* *****************\n");printf("* 密码错误! *\n");printf("******************************************************* *****************\n");printf("\n\n");if(a>0){printf("请重新输入密码(你还有%d次机会):",a);printf("\n\n");scanf("%s",plog);if(login(nlog,plog)==1)goto success3;}elsereturn 0;}}if(login(nlog,plog)==1){success3: system("color F0");printf("\n\n");printf("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\登陆成功///////////////////////\n");Sleep(1000);}//Approvalsystem:system("cls");printf("\n\n");printf("======================================================= =================\n");printf("| |\n");printf("|-------------------------学生请假系统(辅导员端)-----------------------|\n");printf("| |\n");printf("========================================================================\n");printf("\n");Sleep(1000);printf("========================================================================\n");printf("|1.查看学生请假申请|\n");printf("|2.返回登陆界面|\n");printf("| 如无需操作,可直接关闭程序|\n");printf("======================================================= =================\n");printf("\n\n");Sleep(1000);printf("请输入您要执行的选项:");scanf("%d",&s);while(s!=1&&s!=2){if(s!=1&&s!=2){printf("选项不存在,请重新输入(1/2):"); scanf("%d",&s);}}if(s==1)//辅导员读{system("cls");printf("\n\n");printf("======================================================= =================\n");printf("| |\n");printf("|----------------------------查看学生请假申请--------------------------|\n");printf("| |\n");printf("========================================================================\n");printf("\n\n");Sleep(1000);Leave a;FILE *t=fopen("leave.dat","rb");while(1){int ch;if(!(fread(&a,sizeof(Leave),1,t)))break;{printf("-------------------------------------------------------------\n");printf("|学生信息如下:\n");printf("|班级:%s\n",a.Class);printf("|姓名:%s\n",a.n1);printf("|学号:%s\n",a.Num);printf("|请假时间:%s\n",a.time);printf("|请假原因:%s\n",a.reason);printf("-------------------------------------------------------------\n");Sleep(1000);printf("\n\n\n");printf(" \n");printf(" 是否批准学生请假申请\n");printf(" ----------------------------------------------------------- \n");printf(" ----------------------------------------------------------- \n");printf(" 1.批准学生请假申请\n");printf(" 2.不批准学生请假申请\n");printf("\n\n\n");printf("请输入您要执行的选项:");scanf("%d",&ch);while(ch!=1&&ch!=2){if(ch!=1&&ch!=2){printf("选项不存在,请重新输入(1/2):");scanf("%d",&ch);}}if(ch==1){printf("\n\n");printf("-------------------------------------------------------------\n");printf("执行中....\n");printf("-------------------------------------------------------------\n");Sleep(1000);TEACHER b;FILE *F=fopen("read.dat","ab");strcpy(b.instructor,"您的请假申请已被批准!");printf("\n");printf("辅导员意见:");scanf("%s",b.suggest);strcpy(b.Class,a.Class);strcpy(b.n1,a.n1);strcpy(b.time,a.time);strcpy(b.reason,a.reason);strcpy(b.Num,a.Num);// FILE *f3=fopen("leave.dat","ab"); fwrite(&b,sizeof(TEACHER),1,F);fclose(F);fflush(F);Sleep(1000);printf("\n\n\n");printf("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\操作成功///////////////////////\n");system("pause");printf("\n\n\n\n\n");continue;}if(ch==2){printf("-------------------------------------------------------------\n");printf("执行中....\n");printf("-------------------------------------------------------------\n");Sleep(1000);TEACHER b;FILE *F=fopen("read.dat","ab");strcpy(b.instructor,"您的请假申请没有被批准,请按时上课!");printf("\n");printf("辅导员意见:");scanf("%s",b.suggest);strcpy(b.Class,a.Class);strcpy(b.n1,a.n1);strcpy(b.time,a.time);strcpy(b.reason,a.reason);strcpy(b.Num,a.Num);fwrite(&b,sizeof(TEACHER),1,F); fclose(F);fflush(F);Sleep(1000);printf("\n\n\n");printf("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\操作成功///////////////////////\n");system("pause");printf("\n\n\n\n\n");continue;}}}}if(s==2){system("cls");goto Login; //修改学生请假申请状态反回 }}//如果是辅导员if(strlen(n)==5)//如果是老师{int a,i;printf("\n");printf("请输入密码:");//直接输入密码scanf("%s",plog);for(a=2,i=0; i<4; i++,a--){if(login(nlog,plog)==-1)//密码错误{system("color 0c");char plog[20]= {}; //登录数组初始化system("cls");printf("\n");printf("******************************************************* *****************\n");printf("* 密码错误! *\n");printf("******************************************************* *****************\n");printf("\n\n");if(a>0){printf("请重新输入密码(你还有%d次机会):",a);printf("\n\n");scanf("%s",plog);if(login(nlog,plog)==1)goto success1;}elsereturn 0;}}if(login(nlog,plog)==1){success1: system("color F0");printf("\n\n");printf("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\登陆成功///////////////////////\n");Sleep(1000);system("cls");}system("cls");printf("\n\n");printf("========================================================================\n");printf("| |\n");printf("|---------------------------学生请假系统(老师端)-----------------------|\n");printf("| |\n");printf("========================================================================\n");Sleep(1000);printf("\n\n");printf(" -------------------------------------------------------------\n");printf(" 学生请假加载中...\n");printf(" -------------------------------------------------------------\n");Sleep(1000);// int i=0;TEACHER b;FILE *t=fopen("read.dat","rb");// rewind(t);while(1){if(!(fread(&b,sizeof(TEACHER),1,t)))break;// long d=i*sizeof(TEACHER);// fseek(t,d,SEEK_SET);// fread(&b,sizeof(TEACHER),1,t);printf("---------------------------------------------------------------\n");printf("|学生学号%s请假申请反馈信息:\n",b.Num); printf("|班级:%s\n",b.Class);printf("|姓名:%s\n",b.n1);printf("|请假时间:%s\n",b.time);printf("|请假原因:%s\n",b.reason);printf("|申请状态:%s\n",b.instructor);printf("---------------------------------------------------------------\n");printf("\n\n");}system("pause");}}if(c==-1)//账户不存在{system("color F0");system("cls");char n[20];char p[20];strcpy(n,nlog);//复制帐号if(strlen(n)==9)//完成注册,存入data.dat文档{User u;printf("******************************************************* *****************\n");printf("* 同学!第一次登录请完成注册 *\n");printf("******************************************************* *****************\n");printf("\n\n");printf(" ----------------------------------------------------------------------\n");printf(" 请输入新密码\n");printf(" ----------------------------------------------------------------------\n");scanf("%s",p);strcpy(,n);strcpy(u.pw,p);FILE *f =fopen("data.dat","ab");//打开文件让指针f 指向打开的文件fwrite(&u,sizeof(User),1,f);//讲以变量u的地址开始的内存区域的一个数据写到f指向的文件中,每个数据占sizeof(User) fclose(f);fflush(f);printf("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\注册成功///////////////////////\n\n\n");system("pause");system("cls");}if(strlen(n)==5){User u;printf("******************************************************* *****************\n");printf("* 老师!第一次登录请完成注册 *\n");printf("******************************************************* *****************\n");printf("\n\n");printf(" ----------------------------------------------------------------------\n");printf(" 请输入新密码\n");printf(" ----------------------------------------------------------------------\n");scanf("%s",p);strcpy(,n);strcpy(u.pw,p);FILE *f =fopen("data.dat","ab");//打开文件让指针f 指向打开的文件fwrite(&u,sizeof(User),1,f);//讲以变量u的地址开始的内存区域的一个数据写到f指向的文件中,每个数据占sizeof(User) fclose(f);fflush(f);printf("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\注册成功///////////////////////\n\n\n");system("cls");}if(strlen(n)==4){User u;printf("******************************************************* *****************\n");printf("* 辅导员!第一次登录请完成注册 *\n");printf("******************************************************* *****************\n");printf("\n\n");printf(" ----------------------------------------------------------------------\n");printf(" 请输入新密码\n");printf(" ----------------------------------------------------------------------\n");scanf("%s",p);strcpy(u.pw,p);FILE *f =fopen("data.dat","ab");//打开文件让指针f 指向打开的文件fwrite(&u,sizeof(User),1,f);//讲以变量u的地址开始的内存区域的一个数据写到f指向的文件中,每个数据占sizeof(User) fclose(f);fflush(f);printf("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\注册成功///////////////////////\n\n\n");system("pause");system("cls");}goto Login;}return 0;}。