考勤查询系统源代码
课程设计考勤管理系统源代码【最新范本模板】

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。
课程设计考勤管理系统源代码

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
需求分析
功能需求
学生信息管理
系统需要提供对学生基本信息的增删 改查功能,包括姓名、学号、班级等 。
课程设计考勤管理系统源代码

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="com.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_UPDATABLE ).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();Stringname=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 自动生成的方法存根Stringname=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.getActionCommand()=="系统管理员"){login frame=new login();dispose();}else if(e.getActionCommand()=="普通用户") {login1 frame=new login1();dispose();}else if(e.getActionCommand()=="退出登陆") {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.addCompnents();}private void addCompnents(){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;。
学生考勤管理系统源代码

#include<iostream>#include<cstring>#include<windows.h>using namespace std;class time{public:time(int y=0,int m=0,int d=0){year=y;month=m;day=d;}~time(){}protected:int year,month,day;};//信息类class xinxi:public time{ public:xinxi(){ tiaoshu++;}~xinxi(){tiaoshu--;}void setname(char *n){strcpy(name,n);}void settime(int y,int m,int d){year=y;month=m;day=d;} void setqklx(char *qk){strcpy(queke,qk);}void setjieci(char *jc){strcpy(jieci,jc);}void setkechen(char *kc){strcpy(kechen,kc);}char *getname(){char *n;n=name;return n;}char *getqklx(){char *qk=queke;return qk;}char *getjieci(){char *jc;jc=jieci;return jc;}char *getkechen(){char *gk;gk=kechen;return gk;}int *gettime();private:char name[20];//姓名char jieci[3],kechen[10],queke[10];int tm[3];static int tiaoshu;};int xinxi::tiaoshu=0;int *xinxi::gettime(){int *t;t=tm;tm[0]=year;tm[1]=month;tm[2]=day;return t;}class qkechen:public xinxi{public:qkechen(){kcshu++;}~qkechen(){kcshu--;}int getrc(xinxi st1[],int n,int j);char qkn[20];//公有数据成员private:int renci;static int kcshu;//静态数据成员};int qkechen::kcshu=0;int qkechen::getrc(xinxi st1[],int n,int j){renci=0;renci++;for(int i=0;i<n;i++)if(*(st1[i+1].gettime()+1)==*(st1[j].gettime()+1)&&*(st1[i+1].gettime()+2)= =*(st1[j].gettime()+2))if(strcmp(qkn,st1[i].getkechen())==0)renci++;return renci;}class qstu:public xinxi{public:qstu(){qst++;}~qstu(){qst--;}void print(xinxi &st1);int getjs(xinxi st1[],int n,int j);int setjs(int js=0){jieshu=js;}char qstn[20];private:int jieshu;static int qst; //静态数据成员};int qstu::qst=0;void qstu::print(xinxi &st1){cout<<"|缺课日期|"<<"第几节课|"<<"课程名称|"<<"缺课类型|"<<endl;cout<<"|"<<*st1.gettime()<<"|"<<*(st1.gettime()+1)<<*(st1.gettime()+2)<<"|" <<st1.getjieci()<<"|"<<st1.getkechen()<<"|"<<st1.getqklx()<<"|"<<endl;}int qstu::getjs(xinxi st1[],int n,int j){int i=0,js=0;xinxi min;if(*(st1[j].getjieci()+2)!='\0')js=+2;elsejs++;for(i=0;i<n;i++)if(*(st1[i+1].gettime()+1)==*(st1[j].gettime()+1)&&*(st1[i+1].gettime()+2)= =*(st1[j].gettime()+2))if(strcmp(st1[i+1].getname(),qstn)==0){if(*(st1[i].getjieci()+2)!='\0')js=+2;elsejs++;}jieshu=js;return jieshu;}//函数声明int shuru(xinxi st1[]);void chaxun(xinxi st1[],qstu qt[]);void xiugai(xinxi st1[],int n);void tongji1(xinxi st1[],qstu qt1[]);void tongji2(xinxi st1[],qkechen qk1[]);void caidan();void xiansi(xinxi &st1);void setqstn(xinxi st1[],qstu qt1[],int n);void setqkn(xinxi st1[],qkechen qk[],int n);//全局变量int g,k=1,b=1;int q=-1;char name[20],kechen[10],queke[10],jieci[3];int y,m,d;//主函数int main(){xinxi tl[15];//定义 15条信息类对象qstu qt[10];qkechen qk[6];int ch;while(1){cout<<"********欢迎进入学生考勤管理系统!*********"<<endl;caidan();cout<<"--------请选择菜单项:"<<endl;cin>>ch;switch(ch){case 1: g=shuru(tl); break;case 2: xiugai(tl,g); break;case 3: chaxun(tl,qt); break;case 4: tongji1(tl,qt); break;case 5: tongji2(tl,qk); break;case 6: exit(0);}}return 0;}void caidan(){ system("color A");cout<<"*************************************************************"<<endl;cout<<"*学生考勤管理系统*"<<endl;cout<<"*************************************************************"<<endl;cout<<"1.-------------录入学生的缺课记录---------------------------*"<<endl; cout<<"2.-------------修改学生的缺课记录---------------------------*"<<endl;cout<<"3.-------------查询学生的缺课情况---------------------------*"<<endl;cout<<"4.--------统计某段时间内旷课学生姓名及旷课节数--------------*"<<endl;cout<<"5.--------统计某段时间内旷课的课程及旷课人次----------------*"<<endl;cout<<"6.----------------退出系统----------------------------------*"<<endl;}//输入函数int shuru(xinxi st1[]){ char a;cout<<"------输入开始!----"<<endl;do{ q++;cout<<"请输入学生姓名"<<endl;cin>>name;st1[q].setname(name);cout<<"请输入课程名称"<<endl;cin>>kechen;st1[q].setkechen(kechen);cout<<"请输入缺课日期"<<endl;cin>>y>>m>>d;st1[q].settime(y,m,d);cout<<"请输入缺课类型"<<endl;cin>>queke;st1[q].setqklx(queke);cout<<"请输入缺课节次"<<endl;cin>>jieci;st1[q].setjieci(jieci);cout<<"是否还要继续输入:(y/n)"<<endl;cin>>a;}while(a=='y');return q+1;}void xiugai(xinxi st1[],int n){int k=1,j=0,a[10];int flgh;int h;while(k==1){ cout<<"请输入你要修改缺课记录的学生姓名"<<endl;cin>>name;flgh=0;for(int i=0;i<n;i++)if(strcmp(name,st1[i].getname())==0)do{ a[j]=i;cout<<"1.修改日期 2.修改节次 3.修改课程名称 4.修改缺课类型"<<endl;cout<<"请输入要选择的数值(1,2,3,4)"<<endl;int b;cin>>b;if(b==1){ cout<<"请输入新日期"<<endl;cin>>y>>m>>d;st1[i].settime(y,m,d);}else if(b==2){cout<<"请输入新节次"<<endl;cin>>jieci;st1[i].setjieci(jieci);}else if(b==3){cout<<"请输入新课程名称"<<endl;cin>>kechen;st1[i].setkechen(kechen);else if(b==4){ cout<<"请输入新缺课类型"<<endl;cin>>queke;st1[i].setqklx(queke);}flgh=1;j++;}while(b<1||b>4);if(flgh==0){cout<<"没有你要找的学生姓名,请重试要退出请按 0"<<endl; cin>>k;}else{cout<<"还要继续吗(1\0)退出请按 0"<<endl;cin>>k;}}for(int i=0;i<j;i++){h=a[i];xiansi(st1[h]);}}void chaxun(xinxi st1[],qstu qt[]){char n='y';int u[10];while(n=='y'){int j=0;cout<<"输入你要查询的学生姓名:"<<endl;cin>>name;int i=0;for(;i<g;i++)if(strcmp(name,st1[i].getname())==0){u[j]=i;j++;}if(j==0){cout<<"没有你所要的学生名字!";//没有找到cout<<"是否退出退出请按 n\n";cin>>n;for(int a=0;a<j;a++){//只有一条信息if(j<2){ i=u[a];cout<<"|缺课日期|"<<"第几节课|"<<"课程名称|"<<"缺课类型|"<<endl;cout<<"|"<<*st1[i].gettime()<<"|"<<*(st1[i].gettime()+1)<<"|"<<*(st1[i].get time()+2)<<"| "<<st1[i].getjieci()<<"| "<<st1[i].getkechen()<<"| "<<st1[i].getqklx()<<"| "<<endl;}//两条信息以上排序else{i=u[a];if(*(st1[i].gettime()+1)<*(st1[i+1].gettime()+1))qt[i].print(st1[i]);elseif(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)<*( st1[i+1].gettime()+2))qt[i].print(st1[i]);elseif(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)==* (st1[i+1].gettime()+2))if(strcmp(st1[i].getjieci(),st1[i+1].getjieci())==-1)qt[i].print(st1[i]);}cout<<"是否继续查询(y/n)继续请按 y退出按 n"<<endl;cin>>n;}}}//统计某段时间内旷课学生姓名及旷课节数void tongji1(xinxi st1[],qstu qt1[]){int d1=0,js=0;xinxi min;if(g==0)cout<<"没有你要统计的学生信息请返回菜单录入学生缺课信息"<<endl;else if(g==1){cout<<"姓名:"<<st1[0].getname()<<endl;if(*(st1[0].getjieci()+2)!='\0')js=+2;elsejs++;cout<<"节数:"<<js<<endl;}else//信息按时间排序{int i=0;for(;i<(g-1);i++){if(*(st1[i].gettime()+1)<*(st1[i+1].gettime()+1)){min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];}elseif(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)<*( st1[i+1].gettime()+2)){min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];}elseif(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)==* (st1[i+1].gettime()+2))d1++;}for(int j=0;j<(g-d1);j++){cout<<*st1[j].gettime()<<*(st1[j].gettime()+1)<<*(st1[j].gettime()+2)<<endl ;for(i=0;i<k;i++){ setqstn(st1,qt1,g);cout<<"姓名:"<<qt1[i].qstn<<endl;cout<<"节数:"<<qt1[i].getjs(st1,g,i)<<endl;}}}}//统计某段时间内旷课的课程及旷课人次void tongji2(xinxi st1[],qkechen qk1[]){ int d1=0,rc=0;xinxi min;if(g==0)cout<<"没有你要统计的学生信息请返回菜单录入学生缺课信息"<<endl;else if(g==1){cout<<"课程名:"<<st1[0].getkechen()<<endl;rc++;cout<<"人数:"<<rc<<endl;}else{int i=0;for(;i<g;i++){if(*(st1[i].gettime()+1)<*(st1[i+1].gettime()+1)){min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];}elseif(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)<*( st1[i+1].gettime()+2)){min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];}elseif(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)==* (st1[i+1].gettime()+2))d1++;}for(int j=0;j<(g-d1);j++){cout<<*st1[j].gettime()<<*(st1[j].gettime()+1)<<*(st1[j].gettime()+2)<<endl ;for(i=0;i<b;i++){ setqkn(st1,qk1,g);cout<<"课程名:"<<qk1[i].qkn<<endl;cout<<"人数:"<<qk1[i].getrc(st1,g,i)<<endl;}}}}void xiansi(xinxi &st1){cout<<"|缺课日期 |"<<"第几节课 |"<<"课程名称 |"<<"学生姓名|"<<"缺课类型|"<<endl;cout<<"|"<<*(st1.gettime())<<"|"<<*(st1.gettime()+1)<<*(st1.gettime()+2) <<"|"<<st1.getjieci()<<"|"<<st1.getkechen()<<"|"<<st1.getname()<<"|"<<st1.g etqklx()<<"|"<<endl;}//设置缺课学生名void setqstn(xinxi st1[],qstu qt1[],int n){int i=0;for(;i<n;i++){if(i==0)strcpy(qt1[0].qstn,st1[i].getname());else if(strcmp(st1[i].getname(),st1[i+1].getname())!=0) {strcpy(qt1[i].qstn,st1[i].getname());k++;}}}//设置有缺课学生的课程名void setqkn(xinxi st1[],qkechen qk[],int n){int i=0;for(;i<n;i++){if(i==0)strcpy(qk[0].qkn,st1[i].getkechen());else if(strcmp(st1[i].getkechen(),st1[i+1].getkechen())!=0) {strcpy(qk[i].qkn,st1[i+1].getkechen());b++;}}}。
课程设计考勤管理系统源代码

课程设计考勤管理系统源代码课程设计考勤管理系统是一款致力于提高教育教学管理效率和规范化程度的软件,它通过采用先进的技术手段和设计理念,实现了从学生选课到教师授课再到考勤管理的全面覆盖,真正做到了教育教学管理的精细化、智能化和高效化。
本文主要介绍课程设计考勤管理系统的源代码。
一、概述课程设计考勤管理系统源代码采用的是Java语言,基于B/S架构开发,在技术上采用了Spring框架、Hibernate框架和Struts框架等技术,并使用了MySQL数据库进行数据存储。
其主要功能包括:学生选课、教师管理、课程管理、教学计划、教学资料、在线作业、成绩管理、考勤管理等。
二、架构课程设计考勤管理系统采用的是B/S架构,即浏览器-服务器架构,使得系统的访问和管理都可以通过浏览器完成,具有跨平台、易扩充、易维护等优点。
系统的架构分为客户端和服务器端,其中客户端主要是浏览器,服务器端主要包括:网站服务器、应用程序服务器、数据库服务器等。
三、模块课程设计考勤管理系统主要由以下几个模块组成:1. 学生管理模块该模块主要负责学生的信息管理和选课管理,实现学生的个人信息修改、查阅选课情况、查询成绩等功能。
2. 教师管理模块该模块主要负责教师信息和课程管理,实现教师个人信息修改、查询课表、布置作业等功能。
3. 课程管理模块该模块主要负责课程的添加、修改、删除、查询等操作。
4. 教学计划模块该模块主要负责教学计划的制定和管理,包括课程教学计划、教学进度等信息。
5. 教学资料模块该模块主要负责教学资料的上传、下载和管理,包括课件、参考书籍等。
6. 在线作业模块该模块主要负责在线作业的布置和管理,包括作业题目、作业答案等。
7. 成绩管理模块该模块主要负责学生成绩的管理,包括成绩录入、成绩查询等。
8. 考勤管理模块该模块主要负责考勤的管理,包括课程考勤、缺勤情况等。
四、源代码考勤管理系统源代码主要由Java代码和数据库文件两部分组成。
考勤管理系统源代码

{#include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> #include<malloc.h> #include<time.h> /* 所使用的头文件 */ typedef struct/* 时间结构体定义 */{int hour; int minute; }TIME;typedef struct worker /* 职工结构体定义 */ {char id[10]; char name[10];TIME time[20]; struct worker *next; }worker;int menu_select(); void welcome(); void createInfo(); void createRec(); void listRec(); void searchRec(); void saveRec(); void deleteRec(); void modifyRec(); void loadRec(); void resetPassword(); int fun();worker *head=NULL; writeinfo_flag=0;char password[16]="888888"; struct tm *timeinfo; int main()/* 主菜单 *//* 欢迎界面 */ /* 新建职工信息 */ /* 录入考勤信息 *//* 浏览当天考勤信息 */ /*/ 查询考勤信息 *//* 保存所有信息 *//* 删除考勤信息 */ /* 修改考勤信息 *//* 加载文件信息 *//* 重设密码 *//* 判断输入选择是否正确 *//* 链表头指针 head*//* 信息保存标记 *//* 初始密码 *//* 主函数 */char s[16]; welcome();loadRec();/* 欢迎界面 */ /* 加载文件信息 */printf("\n 提示:\n\n 初始密码为:888888\n"); /* 进入系统密码管理*/ printf("\t\t\t\n\n\n\n\n 请输入密码,进去系统( 密码不超过15 个字符):"); scanf("%s",s);while(strcmp(password,s)!=0){printf("\n 密码错误,请重新输入:"); scanf("%s",s);} system("cls");for(;;) /* 菜单循环*/{ switch(menu_select()) {case 0:system("cls");createInfo();break;case 1:system("cls");createRec();break;case 2:system("cls");listRec();break;case 3:system("cls");searchRec();break;case 4:system("cls");deleteRec();break;case 5:system("cls");modifyRec();break;case 6:system("cls");saveRec();break;case 7:system("cls");resetPassword();break;case 8:system("cls");if(writeinfo_flag==1)saveRec();return 0; default:{printf("\n 选择错误,请按回车键返回后,重新输入(0~8)!"); getchar();getchar();system("cls"); break;}}}return 0;}/* 选择菜单*/ int menu_select(){worker *p=head;int c,k;time_t nowtime; time( &nowtime );timeinfo = localtime( &nowtime );printf("\t\t** ************ 选择菜单************* *\t");/* 在菜单中显示当前时间*/if(timeinfo->tm_wday==0){printf(" 时间:星期天");printf(" %d:%d",timeinfo->tm_hour,timeinfo->tm_min);}elseprintf(" 时间: 星期%d %d:%d",timeinfo->tm_wday,timeinfo->tm_hour,timeinfo->tm_min);printf("\n ------------------------------------------------------------------ ");printf("\t\t\t0. 新建职工信息\n");printf("\t\t1. 录入考勤信息\n");printf("\t\t2. 浏览考勤信息\n");printf("\t\t3. 查询考勤信息\n");printf("\t\t4. 删除考勤信息\n");printf("\t\t5. 修改考勤信息\n");printf("\t\t6. 保存所有信息\n");printf("\t\t7. 重设密码\n");printf("\t\t8. 退出(退出后信息会自动保存在磁盘中)\n\t\t( 任何情况下按Ctrl+C 退出程序)\n ”);printf("\n ------------------------------------------------------------------ ");printf("\n\n 请输入您的选择(0~8):");scanf("%d",&c); if(timeinfo->tm_wday==0&&p!=NULL) /* 每周周日所有考勤信息初始化*/{for(k=0;k<20;k++){p->time[k].hour=88; p->time[k].minute=88;}}return c;}void loadRec() /* 从磁盘导入信息*/{worker *rear,*p,*pre; FILE *fp,*key; int i,pos=0; key=fopen("key.txt","r"); if(key!=NULL){}fscanf(key,"%s",password); fclose(key);p=(worker*)malloc(sizeof(worker)); /* 开辟一个新单元 */ fscanf(fp,"%s%s",p->id,p->name); for(i=0;i<20;i++)fscanf(fp,"%d%d",&p->time[i].hour,&p->time[i].minute); if(head==NULL){head=p; pre=p; rear=p;}else{rear->next=p; pre=rear; rear=p;}}pre->next=NULL; fclose(fp); return;}fp=fopen("workerRec.txt","r"); if(fp!=NULL){fseek(fp, 0, SEEK_END); pos= ftell(fp);}if(fp==NULL||0 == pos)件*/{printf("\n\n\n\n\n\n\t\t 提示:在!\n");printf("\n\t\t getchar();\n\n\t\t 数据库中没有职工信息请按回车键进入主菜单新建职工信息/* 指针移到文件末尾 *//* 打开职工信息文件和密码文,文本为空或文件不存system("cls"); return;}fseek(fp, 0, SEEK_SET); while(!feof(fp)){Un");/*清屏 *//* 指针移到文件开头 */ /*fp 不指向文件末尾 *//* 关闭文件 */void createInfo() /* 新建职工信息*/{worker *p,*rear;int i,k,n;char s[10];if(head!=NULL){printf("\n\n\n\n\n\n\n\t\t\t 职工信息数据库已存在\n\n\t\t\t 新建职工信息将续接在信息库的后面\n\n\n\t\t\t 按回车键继续");getchar();getchar();rear=head; while(rear->next!=NULL) rear=rear->next;system("cls");}printf("\n\n 请输入希望建立职工信息条数:");scanf("%s",s);if(fun(s)==0)return;elsen=atoi(s);printf("\n 请输入职工的工号(至多6 个字符)和姓名( 至多5 个字符):\n"); for(i=0;i<n;i++){p=(worker*)malloc(sizeof(worker));scanf("%s%s",p->id,p->name); if(strlen(p->id)>6||strlen(p->name)>5){printf("\n 职工工号或姓名输入长度不合法!\n\n 请按回车键返回主菜单\n",n);rear->next=NULL;free(p);getchar();getchar();system("cls");return;}for(k=0;k<20;k++) /* 时间初始化为88:88*/{p->time[k].hour=88;p->time[k].minute=88;}if(head==NULL){head=p;rear=p;}else{ rear->next=p; rear=p;}} p->next=NULL;printf("\n%d 条信息建立完毕!\n\n 请按回车键返回主菜单\n",n); getchar();getchar();system("cls");writeinfo_flag=1;return;}void createRec() /* 录入考勤信息*/{time_t nowtime;worker *p;char s[10],k[10],*g=k,ss[10];int c,m,week;time( &nowtime );timeinfo = localtime( &nowtime );week=timeinfo->tm_wday; if(head==NULL){printf("\n\n\n\n\t\t\t 数据库中没有职工信息\n\n\t\t\t 无法使用该功能\n\n\t\t\t 请按回车键返回主菜单新建职工信息!");getchar();getchar();system("cls");return;} if(timeinfo->tm_wday==6||timeinfo->tm_wday==0){printf("\n\n\n\n\t\t\t 今天不是工作日\n\n\t\t\t 无法录入考勤信息\n\n\t\t\t 请按回车键返回主菜单!");getchar();getchar();system("cls");return;}printf("\n\n\n\t\t\t 请选择录入考勤种类:\n\n\t\t\t1. 上午上班(8:00)\n\n\t\t\t2. 上午下班(11:30)\n\n\t\t\t3. 下午上班(14:00)\n\n\t\t\t4. 下午下班(17:30)\n\n");printf("\n\t\t 您的选择(以回车键结束):");scanf("%s",k); if(fun(k)==0)return;elsem=atoi(k);if(m<1||m>4){printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls");return ;}system("cls");if(m==1&&(timeinfo->tm_hour>11||(timeinfo->tm_hour==11&&timeinfo->tm_min>30))) {printf("\n\n\n\t\t\t 现在已经过了上午下班的时间(11:30)\n\n\t\t\t 无法录入上班的时间(8:00)信息\n\n\t\t\t 请按回车键返回主菜单");getchar();getchar();system("cls");return;}if(m==3&&(timeinfo->tm_hour>17||(timeinfo->tm_hour==17&&timeinfo->tm_min>30))){printf("\n\n\n\t\t\t 现在已经过了下午下班的时间(17:30)\n\n\t\t\t 无法录入上班的时间(14:00)信息\n\n\t\t\t 请按回车键返回主菜单");getchar();getchar();system("cls");return;}/* 可通过工号或姓名;录入*/printf("\n\n\n\t\t\t 请选择输入工号还是姓名:\n\n\t\t\t1. 选择输入工号\n\n\t\t\t2. 选择输入姓名\n\n");printf("\n\t\t 您的选择(以回车键结束):");scanf("%s",ss); if(fun(ss)==0)return;elsec=atoi(ss);if(c<1||c>2){printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls"); return ;} system("cls"); switch(c) { case 1:{ printf("\n\n\n\n\n\n\t\t\t 请输入工号(以回车键结束):"); scanf("%s",s);for(p=head;strcmp(p->id,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->id,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该工号\n");printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls"); return;} if((m==2||m==4)&&p->time[4*week+m-6].hour==88){printf("\n\n\n\n\t\t\t 该职工无上班记录,无法记录下班信息, 请先录入上班信息\n");printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls"); return;}p->time[4*week+m-5].hour=(timeinfo->tm_hour); /* 存储时间*/p->time[4*week+m-5].minute=(timeinfo->tm_min);break;}case 2:{ printf("\n\n\n\n\n\n\t\t\t 请输入姓名(以回车键结束):"); scanf("%s",s);for(p=head;strcmp(p->name,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->name,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该姓名\n");printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls");return;} if((m==2||m==4)&&p->time[4*week+m-6].hour==88) {printf("\n\n\n\n\t\t\t 该职工无上班记录,无法记录下班信息, 请先录入上班信息\n");printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls");return;}time( &nowtime );timeinfo = localtime( &nowtime );week=timeinfo->tm_wday;p->time[4*week+m-5].hour=(timeinfo->tm_hour); p->time[4*week+m-5].minute=(timeinfo->tm_min); break;}}system("cls");printf("\n\n\n\n\n\n\t\t\t 考勤成功! 请按回车键返回主菜单\n");getchar();getchar();writeinfo_flag=1;system("cls");return;}void listRec() /* 浏览当天的考勤信息*/{worker *p=head;int m,week;week=timeinfo->tm_wday;if(head==NULL){printf("\n\n\n\n\t\t\t 数据库中没有职工信息\n\n\t\t\t 无法使用该功能\n\n\t\t\t 请按回车键返回主菜单新建职工信息!");getchar();getchar();system("cls");return;}if(timeinfo->tm_wday==6||timeinfo->tm_wday==0) {printf("\n\n\n\n\t\t\t 今天不是工作日,无考勤记录\n\n\t\t\t 无法浏览当天的考勤信息\n\n\t\t\t 请按回车键返回主菜单!");getchar();getchar();system("cls");return;}printf("\n 职工今天整体出勤情况如下:\n\n");printf(" 职工号姓名上午上班上午下班下午上班下午下班\n"); while(p!=NULL){m=0;printf("\n%s %s",p->id,p->name);if((p->time[(week-1)*4].hour>8&&p->time[(week-1)*4].hour<25)||(p->time[(week-1)*4].hour==8&&p->time[(week-1)*4].minute>0))printf(" 迟到"); /* 上班时间之后来的都算迟到*/else if(p->time[(week-1)*4].hour==88&&(timeinfo->tm_hour>11||(timeinfo->tm_hour==11&&timein fo->tm_min>30)))printf(" 旷工"); /* 过了下班时间就是旷工*/else if(p->time[(week-1)*4].hour==88&&(timeinfo->tm_hour<11||(timeinfo->tm_hour==8&&timeinf o->tm_min==30)))printf(" 无记录"); /* 下班之前还没有来显示无记录*/else if(p->time[(week-1)*4].hour!=88){printf(" ");m++;}if((p->time[(week-1)*4+1].hour<11&&p->time[(week-1)*4].hour!=0)||(p->time[(week-1)*4+1].hour==11&&p->time[(week-1)*4+1].minute<30))printf(" 早退");else {printf(" ");m++;}if((p->time[(week-1)*4+2].hour>14&&p->time[(week-1)*4+2].hour<25)||(p->time[(week-1)*4+2].hour==14&&p->time[(week-1)*4+2].minute>0))printf(" 迟到");else if(p->time[(week-1)*4+2].hour==88&&(timeinfo->tm_hour>17||(timeinfo->tm_hour==17&&timeinfo->tm_min>30)))printf(" 旷工");else if(p->time[(week-1)*4+2].hour==88&&(timeinfo->tm_hour<17||(timeinfo->tm_hour==17&&tim einfo->tm_min==30)))printf(" 无记录");else if(p->time[(week-1)*4+2].hour!=88){printf(" ");m++;}if((p->time[(week-1)*4+3].hour<17&&p->time[(week-1)*4+2].hour!=0)||(p->time[(week-1)*4+3].hour==17&&p->time[(week-1)*4+3].minute<30))printf(" 早退");else {printf(" ");m++;}if(m==4&&(timeinfo->tm_hour>17||(timeinfo->tm_hour==17&&timeinfo->tm_min>30))) printf(" 全勤!");p=p->next;}printf("\n\n 显示完毕,按回车键返回主菜单!");getchar();getchar();system("cls");return;}void searchRec() /* 根据工号或姓名查找考勤信息*/{worker *p=head;int c,i;char s[10],k[10];if(head==NULL){printf("\n\n\n\n\t\t\t 数据库中没有职工信息\n\n\t\t\t 无法使用该功能\n\n\t\t\t 请按回车键返回主菜单新建职工信息!");getchar();getchar();system("cls");return;}printf("\n\n\n\t\t\t 请选择输入工号还是姓名:\n\n\t\t\t1. 选择输入工号\n\n\t\t\t2. 选择输入姓名\n\n");printf("\n\t\t 您的选择(以回车键结束):");scanf("%s",k); if(fun(k)==0)return;elsec=atoi(k); if(c<1||c>2){ printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始getchar();getchar();system("cls"); return ;!\n");} system("cls"); switch(c) { case 1:{ printf("\n\n\n\n\n\n\t\t\t 请输入工号(以回车键结束):"); scanf("%s",s);for(p=head;strcmp(p->id,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->id,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该工号\n"); printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls"); return;}break;}case 2:{ printf("\n\n\n\n\n\n\t\t\t 请输入姓名(以回车键结束):"); scanf("%s",s);for(p=head;strcmp(p->name,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->name,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该姓名\n"); printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls"); return;}break;}system("cls");printf(" 职工号姓名\n\n");printf(" %s %s",p->id,p->name);printf(" 周一");for(i=0;i<4;i++) {上午上班上午下班下午上班下午下班if(p->time[i].hour==88)printf(" --:--if(p->time[i].hour!=88) printf(" %2d:%2d if(i==4) printf("\n\n"); ");",p->time[i].hour,p->time[i].minute);printf("\n 周二"); for(i=4;i<8;i++){if(p->time[i].hour==88)printf(" --:--if(p->time[i].hour!=88) printf(" %2d:%2d if(i==8) printf("\n\n"); ");",p->time[i].hour,p->time[i].minute);}printf("\n 周三"); for(i=8;i<12;i++){if(p->time[i].hour==88)printf(" --:--if(p->time[i].hour!=88) printf(" %2d:%2d if(i==12) printf("\n\n"); ");",p->time[i].hour,p->time[i].minute);}printf("\n 周四"); for(i=12;i<16;i++){if(p->time[i].hour==88)printf(" --:--if(p->time[i].hour!=88) printf(" %2d:%2d ");",p->time[i].hour,p->time[i].minute);if(i==16)printf("\n\n");}printf("\n 周五");for(i=16;i<20;i++){if(p->time[i].hour==88)printf(" --:-- ");if(p->time[i].hour!=88)printf(" %2d:%2d ",p->time[i].hour,p->time[i].minute); if(i==20)printf("\n\n");}printf("\n\n\n\n\n\n\t\t\t 显示完毕,按回车键返回主菜单!"); getchar();getchar();system("cls");return;}void saveRec() /* 储存所有信息*/{worker *p=head;FILE *fp,*key;int i;if(writeinfo_flag==0){printf("\n\n\n\n\t\t\t 信息无改动,无需保存!\n\n\t\t\t 请按回车键返回主菜单\n");getchar();getchar();system("cls");return;}if(writeinfo_flag==1){ if((fp=fopen("workerRec.txt","w"))==NULL||(key=fopen("key.txt","w"))==NULL) {printf("\n\t\t\t 提示:\n\n\t\t\t 存储信息失败!\n"); printf("\n\t\t\t 请按回车键进入主菜单重新开始\n"); getchar();getchar();system("cls");return;} while(p!=NULL){fprintf(fp,"%s\n%s\n",p->id,p->name); for(i=0;i<20;i++)fprintf(fp,"%d\n%d\n",p->time[i].hour,p->time[i].minute); p=p->next;} fprintf(key,"%s",password);fclose(fp),fclose(key);writeinfo_flag=0; /* 消除改动标志*/ printf("\n\n\n\n\n\t\t\t 保存完毕,按回车键继续!");getchar();getchar();system("cls");return;}}void deleteRec() //删除考勤信息*/{worker *p,*pre=head;char s[16],k[10];int c; if(head==NULL){printf("\n\n\n\n\t\t\t 数据库中没有职工信息\n\n\t\t\t 无法使用该功能\n\n\t\t\t 请按回车键返回主菜单新建职工信息!");getchar();getchar(); system("cls"); return;}printf("\n\n\n\t\t\t 提示:\n\n\t\t\t 初始密码为:888888\n"); printf("\n\n\n\t\t\t 请输入密码(密码不超过15 个字符):"); scanf("%s",s);while(strcmp(password,s)!=0){printf("\n\n\t\t\t 密码错误!\n\n"); printf("\t\t\t 按回车键返回主菜单!"); getchar();getchar();system("cls");return;} printf("\n\n\n\t\t\t 密码输入成功!\n\n\t\t\t 请按回车键继续"); getchar();getchar();system("cls");printf("\n\n\n\t\t\t 请选择输入工号还是姓名:\n\n\t\t\t1. 选择输入工号\n\n\t\t\t2. 选择输入姓名\n\n");printf("\n\t\t 您的选择(以回车键结束):");scanf("%s",k); if(fun(k)==0)return;elsec=atoi(k); if(c<1||c>2){ printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始getchar();getchar();system("cls"); return ;!\n");} system("cls"); switch(c) { case 1:{ printf("\n\n\n\n\n\n\t\t\t 请输入工号:"); scanf("%s",s);for(p=head;strcmp(p->id,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->id,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该工号\n"); printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls"); return;}break;}case 2:{ printf("\n\n\n\n\n\n\t\t\t 请输入姓名:"); scanf("%s",s);for(p=head;strcmp(p->name,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->name,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该姓名\n"); printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls");return;} break;}} system("cls"); if(p==head) head=p->next;else{ for(;pre->next!=p;pre=pre->next); pre->next=p->next;}free(p);printf("\n\n\n\n\n\n\t\t\t 删除成功,请按回车键返回主菜单!"); getchar();getchar();system("cls"); writeinfo_flag=1; return;}void modifyRec() /* 修改考勤信息*/{worker *p,*pre=head; char s[16],k[10];int c; if(head==NULL){ printf("\n\n\n\n\t\t\t 数据库中没有职工信息\n\n\t\t\t 无法使用该功能\n\n\t\t\t 请按回车键返回主菜单新建职工信息!");getchar();getchar(); system("cls"); return;}printf("\n\n\n\t\t\t 提示:\n\n\t\t\t 初始密码为:888888\n"); printf("\n\n\n\t\t\t 请输入密码(密码不超过15 个字符):"); scanf("%s",s);if(strcmp(password,s)!=0){printf("n\n\n\t\t\t 密码错误!\n\n"); printf("\t\t\t 按回车键返回主菜单!"); getchar();getchar();system("cls");return;}printf("\n\n\n\t\t\t 密码输入成功!\n\n\t\t\t 请按回车键继续"); getchar();getchar();system("cls");printf("\n\n\n\t\t\t 请选择通过工号修改还是姓名修改:\n\n\t\t\t1. 选择输入工号\n\n\t\t\t2. 选择输入姓名\n\n");printf("\n\n\n\t\t 您的选择(以回车键结束):"); scanf("%s",k);if(fun(k)==0)return;elsec=atoi(k); if(c<1||c>2){printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls");return ;} system("cls"); switch(c) { case 1:{printf("\n\n\n\n\n\n\t\t\t 请输入工号:"); scanf("%s",s);for(p=head;strcmp(p->id,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->id,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该工号\n");printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls");return;}break;} case 2:{ printf("\n\n\n\n\n\n\t\t\t 请输入姓名:"); scanf("%s",s);for(p=head;strcmp(p->name,s)!=0&&p->next!=NULL;p=p->next);if(strcmp(p->name,s)!=0&&p->next==NULL){printf("\n\n\n\n\t\t\t 不存在该姓名\n"); printf("\n\n\n\n\t\t\t 请按回车键返回主菜单重新开始!\n"); getchar();getchar();system("cls");return;}break;}} system("cls");printf("\n\n\n\t\t\t 请选择要修改的内容:\n\n\t\t\t1. 工号\n\n\t\t\t2. 姓名\n\n\t\t\t3. 上午上班时间\n\n\t\t\t4. 上午下班时间\n\n\t\t\t5. 下午上班时间\n\n\t\t\t6. 下午下班时间");printf("\n\n\n\t\t 您的选择(以回车键结束):");scanf("%s",&k);if(fun(k)==0)return;elsec=atoi(k);if(c<1||c>6) {printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls"); return ;}system("cls");switch(c){case 1: printf("\n\n\n\t\t 请输入要修改的工号(至多10 个字符):"); scanf("%s",p->id);break; case 2: printf("\n\n\n\t\t 请输入要修改的姓名(至多10 个字符):"); scanf("%s",p->name);break; case 3: printf("\n\n\n\t\t 请输入要修改星期几的考勤( 请输入1~5):"); scanf("%d",&c);printf("\n\n\n\t 请输入要修改的时间和分钟(如:10 点5 分就输入10:05):");scanf("%d:%d",&p->time[(c-1)*4].hour,&p->time[(c-1)*4].minute);break;case 4: printf("\n\n\n\t\t 请输入要修改星期几的考勤( 请输入1~5):"); scanf("%d",&c);printf("\n\n\n\t 请输入要修改的时间和分钟(如:10 点5 分就输入10:05):");scanf("%d:%d",&p->time[(c-1)*4+1].hour,&p->time[(c-1)*4+1].minute);break;case 5:printf("\n\n\n\t\t 请输入要修改星期几的考勤( 请输入1~5):"); scanf("%d",&c);printf("\n\n\n\t 请输入要修改的时间和分钟(如:10 点5 分就输入10:05):");scanf("%d:%d",&p->time[(c-1)*4+2].hour,&p->time[(c-1)*4+2].minute);break; case 6: printf("\n\n\n\t\t 请输入要修改星期几的考勤( 请输入1~5):"); scanf("%d",&c);printf("\n\n\n\t 请输入要修改的时间和分钟(如:10 点5 分就输入10:05):");scanf("%d:%d",&p->time[(c-1)*4+3].hour,&p->time[(c-1)*4+3].minute);break;} printf("\n\n\n\t\t\t 修改成功,请按回车键返回主菜单!"); getchar();getchar();system("cls"); writeinfo_flag=1;return;}void resetPassword() /* 重设密码*/{char s[16];printf("\n\n\n\t\t 提示:\n\n\t\t 初始密码为:888888\n"); printf("\n\t\t 请输入密码(密码不超过15个字符):"); scanf("%s",s);if(strcmp(password,s)!=0){printf("\n\n\n\t\t 密码错误!\n\n"); printf("\n\n\n\t\t 按回车键返回主菜单!");getchar();getchar();system("cls");return;}printf("\n\n\t\t 密码输入成功!\n\n\t\t 请按回车键继续"); getchar();getchar();system("cls");printf("\n\n\n\t 请输入要修改的密码(密码不超过15 个字符):"); scanf("%s",s);strcpy(password,s);printf("\n\n\t 修改成功,请按回车键返回主菜单!"); getchar();getchar();system("cls"); writeinfo_flag=1;return;}void welcome() //欢迎界面{ printf("\n\n\n\n\n\n\n\t\t\t 欢迎使用职工考勤管理系统"); printf("\n\n\n\t\t\t 请按任意键进入系统,开始您的操作"); printf("\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t 作者:XXX");getch(); system("cls");return;}int fun(char *g){do{ if(*g<'0'||*g>'9') {printf("\n\n\t\t 输入错误!\n\n\t\t 请按回车键返回主菜单重新开始!\n");getchar();getchar();system("cls"); return 0 ;}g++; }while(*g!=0); return 1;}。
学生考勤系统源代码

学生考勤系统源代码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); /*选项不在以上的系统自动退出*/}}。
精品考勤管理课程设计考勤管理系统源代码5

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="com.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.getActionCommand()=="系统管理员"){login frame=new login();dispose();}else if(e.getActionCommand()=="普通用户"){login1 frame=new login1();dispose();}else if(e.getActionCommand()=="退出登陆"){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.addCompnents();}private void addCompnents(){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);。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
--考勤管理USE xinxigoCREATE TABLE worker --员工信息表( W_id CHAR(10)CONSTRAINT worker_Prim PRIMARY KEY,w_name CHAR(16)not null,SEX CHAR(2)CONSTRAINT SEX_Chk CHECK(SEX='男'OR SEX='女')not null, AGE INT not null,w_drgee VARCHAR(16)NOT NULL,)CREATE TABLE work_note --出勤记录表( W_id CHAR(10),w_num int,CONSTRAINT work_note_Prim PRIMARY KEY(W_id,w_num),work_tim CHAR(20),end_tim CHAR(20),work_note CHAR(20),)CREATE TABLE out_note --出差记录表( W_id CHAR(10),out_num int,CONSTRAINT out_note_Prim PRIMARY KEY(W_id,out_num),out_tim datetime,back_tim datetime,out_days int,)CREATE TABLE over_note --加班记录表( W_id CHAR(10),over_num int,CONSTRAINT over_note_Prim PRIMARY KEY(W_id,over_num),over_tim CHAR(16),overend_tim CHAR(16),over_days CHAR(16),)CREATE TABLE off_note --请假记录表( W_id CHAR(10),off_num int,CONSTRAINT off_note_Prim PRIMARY KEY(W_id,off_num),off_tim CHAR(16),offend_tim CHAR(16),off_days CHAR(16),)CREATE TABLE mounth_note --月记录表( w_id CHAR(10)CONSTRAINT mounth_Prim PRIMARY KEY,work_note int not null,out_note int,over_note CHAR(16),off_note int,)--向员工信息表中插入信息insert into worker( W_id,w_name,SEX,AGE,w_drgee)values('001','张三','男','21','总经理')insert into worker( W_id,w_name,SEX,AGE,w_drgee)values('002','李四','男','22','副经理')insert into worker( W_id,w_name,SEX,AGE,w_drgee)values('003','王五','男','23','职员')insert into worker( W_id,w_name,SEX,AGE,w_drgee)values('004','侯六','男','24','职员')insert into worker( W_id,w_name,SEX,AGE,w_drgee)values('005','欢欢','女','25','职员')insert into worker( W_id,w_name,SEX,AGE,w_drgee)values('006','珊珊','女','26','职员')--向出勤记录表中插入信息insert into work_note( W_id,w_num,work_tim,end_tim,Work_note)values('001','021','2011/11/11 8:00','20:00','无缺勤')insert into work_note( W_id,w_num,work_tim,end_tim,Work_note)values('002','022','0','0','缺勤一天')insert into work_note( W_id,w_num,work_tim,end_tim,Work_note)values('003','023','2011/11/11 8:00','12:00','下午缺勤')insert into work_note( W_id,w_num,work_tim,end_tim,Work_note)values('004','024','2011/11/11 8:00','20:00','无缺勤')insert into work_note( W_id,w_num,work_tim,end_tim,Work_note)values('005','025','2011/11/11 14:00','20:00','下午缺勤')insert into work_note( W_id,w_num,work_tim,end_tim,Work_note)values('006','026','0','0','缺勤一天')--向出差记录表中插入信息insert into out_note( W_id,Out_num,Out_tim,Back_tim,Out_days)values('001','0211','2011.1.1','2011.1.11','10')insert into out_note( W_id,Out_num,Out_tim,Back_tim,Out_days)values('002','0222','2011.1.2','2011.1.5','3')insert into out_note( W_id,Out_num,Out_tim,Back_tim,Out_days)values('003','0233','2011.2.12','2011.2.17','5')insert into out_note( W_id,Out_num,Out_tim,Back_tim,Out_days)values('004','0244','2011.2.18','2011.2.22','4')insert into out_note( W_id,Out_num,Out_tim,Back_tim,Out_days)values('005','0255','2011.3.11','2011.3.15','4')insert into out_note( W_id,Out_num,Out_tim,Back_tim,Out_days)values('006','0266','2011.3.16','2011.3.22','6')--向加班信息表中插入信息insert into over_note( W_id,Over_num,Over_tim,Overend_tim,Over_days) values('001','0311','20:00','22:00','2小时')insert into over_note( W_id,Over_num,Over_tim,Overend_tim,Over_days) values('002','0322','0','0','无加班')insert into over_note( W_id,Over_num,Over_tim,Overend_tim,Over_days) values('003','0333','21:00','22:00','1小时')insert into over_note( W_id,Over_num,Over_tim,Overend_tim,Over_days) values('004','0344','20:00','23:00','3小时')insert into over_note( W_id,Over_num,Over_tim,Overend_tim,Over_days) values('005','0355','0','0','无加班')insert into over_note( W_id,Over_num,Over_tim,Overend_tim,Over_days) values('006','0366','22:00','24:00','2小时')--向请假记录表中插入信息insert into off_note( W_id,Off_num,Off_tim,Offend_tim,Off_days)values('001','0411','2011.10.1','2011.10.11','10')insert into off_note( W_id,Off_num,Off_tim,Offend_tim,Off_days)values('002','0422','2011.10.11','2011.10.22','11')insert into off_note( W_id,Off_num,Off_tim,Offend_tim,Off_days)values('003','0433','0','0','无请假')insert into off_note( W_id,Off_num,Off_tim,Offend_tim,Off_days)values('004','0444','2011.10.12','2011.11.12','30')insert into off_note( W_id,Off_num,Off_tim,Offend_tim,Off_days)values('005','0455','2011.11.3','2011.11.6','3')insert into off_note( W_id,Off_num,Off_tim,Offend_tim,Off_days)values('006','0466','0','0','无请假')--向出勤月统计表中插入信息insert into mounth_note( W_id,Work_note,Out_note,Over_note,Off_note) values('001','14','10','20小时','6')insert into mounth_note( W_id,Work_note,Out_note,Over_note,Off_note) values('002','15','14','无加班','1')insert into mounth_note( W_id,Work_note,Out_note,Over_note,Off_note) values('003','16','9','9小时','5')insert into mounth_note( W_id,Work_note,Out_note,Over_note,Off_note) values('004','17','10','11小时','3')insert into mounth_note( W_id,Work_note,Out_note,Over_note,Off_note) values('005','18','8','无加班','4')insert into mounth_note( W_id,Work_note,Out_note,Over_note,Off_note) values('006','19','9','14小时','2')--建立查询--查询员工的基本信息select*from workergo--根据员工编号查询select w_name,off_num,off_daysfrom worker,off_notewhere worker.W_id = off_note.W_idand worker.W_id ='001'go--根据员工姓名查询月出勤信息select w_name,SEX,AGE,w_drgee,Work_note,Out_note,Over_note,Off_note from mounth_note,workerwhere worker.W_id = mounth_note.W_idand w_name='李四'go--根据员工加班信息查询员工姓名及职务,年龄select w_name,SEX,AGE,w_drgee,worker.W_idfrom over_note,workerwhere worker.W_id =over_note.W_idand over_note.Over_days='1小时'go--根据员工请假情况查询员工基本信息以便对其进行表彰select worker.W_id,w_name,SEX,AGE,w_drgeefrom off_note,workerwhere worker.W_id =off_note.W_idand off_days='无请假'go--根据缺勤情况查询员工信息以便进行赏罚select worker.W_id,w_name,SEX,AGE,w_drgee,w_num,work_tim,end_tim from work_note,workerwhere worker.W_id =work_note.W_idand Work_note='缺勤一天'go--建立存储过程--建立一个向员工出勤表中插入数据的存储过程CREATE PROCEDURE insert_in@W_id CHAR(10),@w_num int,@work_tim CHAR(20),@end_tim CHAR(20),@work_note CHAR(20)ASinsert into work_notevalues(@W_id, @w_num, @work_tim ,@end_tim ,@work_note )goexec insert_in @W_id='009',@w_num=029,@work_tim='2010/11/18:00',@end_tim='2010/11/1 20:00',@work_note='全勤'goselect*from work_notego--建立一个通过员工编号查询员工请假信息的存储过程Create Procedure work_off @W_id CHAR(10)asselect*From off_notewhere W_id=@W_idexec work_off '001'go--建立一个根据员工加班编号查询员工加班信息以便给员工增减工资的存储过程Create Procedure work_on @over_num intasselect*From over_notewhere over_num=@over_numexec work_on '0311'go--建立一个触发器,根据员工姓名对员工信息进行修改create trigger update_W_idon workerfor updateasdeclare @before_update char(10),@after_update char(10)select @before_update=W_id from deletedselect @after_update=W_id from inserted if(@after_update>100)beginprint'人数过多,超出公司承受能力,请核实' rollback transactionendupdate worker set W_id='008'where w_name='李勇'update worker set W_id='108'where w_name='李勇'go--对员工表进行修改之后对查询表中基本信息select*from worker。