考勤管理系统:实现数据在文件的读取功能

//获取系统时间的方法:Date date=new Date(new java.util.Date().getTime());

/*
* 考勤管理系统:实现数据在文件的读取功能;两个模块,功能如下:
* ----管理员模块:
* 1.注册新用户
* 2.查询所用用户
* ----用户模块:
* 1.上班打卡
* 2.下班打卡
* 3.查询历史打卡记录
* */
public class TestUser {
static Scanner input=new Scanner(System.in);
static File file=new File("userInfo.txt");
static List<User> list=new ArrayList<User>();

//管理员查询所有用户信息
public static void userInformation() throws IOException{
ArrayList<User> array=new ArrayList<User>();
array=read();
System.out.println("用户名 真实姓名");
for(int i=0;i<array.size();i++){

System.out.println(array.get(i).getUserName()+" "+array.get(i).getName());
}
System.out.println("-----------------------------------------------------------");
}

//管理员注册新用户
public static void registerUser() throws IOException{
User user=new User();
int n=5;
System.out.println("请输入要添加的用户的信息");
while(n>0){
System.out.println("请输入用户名:");
String userName=input.next();
System.out.println("请输入用户的真是姓名:");
String name=input.next();
System.out.println("请输入密码:");
String password=input.next();
System.out.println("请再次输入密码:");
String password1=input.next();

if(password.equals(password1)){
user.setUserName(userName);
user.setName(name);
user.setPassword(password);
user.setSign_in_first(null);
user.setSign_in_last(null);
list.add(user);
write();
System.out.println("用户信息添加成功!!!");
break;
}
else{
System.out.println("重新输入信息!!");
}
}
System.out.println("----------------------------------------------------------------");
}

//管理员模块
public static void manager() throws IOException{

int m=5;//输入密码的错误机会为5次
String str1="java";
boolean b=false;

while(m>0){
System.out.println("请输入管理员密码:");
String str=input.next();
if(str.equals(str1)){
System.out.println("登陆成功!");
System.out.println("-----------------------------------------------------------");
System.out.println("1-注册新用户信息");
System.out.println("2-查询所有用户信息");
System.out.println("3-添加信息完毕退出");
System.out.println("-----------------------------------------------------------");
System.out.println("请选择您需要的操作:");
int n=input.nextInt();
switch(n){
case 1:registerUser();break;
case 2:userInformation();break;
case 3: b=true;System.out.println("退出成功!");break;
default:b=true;System.out.println("输入错误,请重新操作!");
}
if(b!=false){
break;
}
}
else{
System.out.println("管理员密码错误");
m--;
System.out.println("您还有"+m+"此机会!!");
if(m<0){
break;
}
}
}
}

//用户模块
public static void userT() throws IOException{
ArrayList<User> array=new ArrayList<User>();
array=read();
User user=new User();
//设置日期格式 System.out.println(df.format(new Date()));
// new Date()为获取当前系统时间
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=new Date(new java.util.Date().getTime());
int n=array.size();
int m=5;//五次机会输入密码和用户名
boolean d=false;
boolean b=false;
while(m>0){
System.out.println("请输入您的真实姓名:");
String name=input.next();
System.out.println("请输入您的密码:");
String password=input.next();
for(int i=0;i<array.size();i++){
if(array.get(i).getName().equals(name) && array.get(i).getPassword().equals(password)){
System.out.println("登陆成功!");
System.out.println(array.get(i).getName()+" 您好 ,今天是 "
+new Date(new java.util.Date().getTime()));
while(true){
System.out.println("---------------------------------------------------");
System.out.println("1-上班打卡 2-下班打卡 3.查询打卡记录 4-退出");
System.out.println("请选择您要操作的选项:");
int t=input.nextInt();
switch(t){
case 1://上班打卡记录
String time=df.format(date);
user.setSign_in_first(time);
user.setSign_in_last(null);
user.setName(name);
user.setUserName(null);
user.setPassword(password);
list.add(user);
write();
System.out.println("打卡成功,退出系统");
System.exit(0);
case 2://下边打卡记录
String time1=df.format(date);
user.setSign_in_last(time1);
user.setSign_in_first(null);
user.setName(name);
user.setUserName(null);
user.setPassword(password);
list.add(user);
write();
System.out.println("打卡成功,推出系统");
System.exit(0);
case 3://查询记录
System.out.println("类型 时间");
for(int j=0;j<array.size();j++){

if(array.get(j).getName().equals(name) && array.get(j).getPassword().equals(password)){
System.out.println(name+"打卡记录:");
System.out.println("上班: "+array.get(j).getSign_in_first());
System.out.println("下班: "+array.get(j).getSign_in_last());
}
}
break;
case 4:d=true;System.out.println("退出!!!");break;
default :System.out.println("您输入错误,请从新输入!!!");
}
if(d!=false){
break;

}
}

}
b=true;
if(d!=false){
break;
}
}
}

}

//将文件中数据被程序读取
public static ArrayList<User> read() throws IOException{
ArrayList<User> array=null;
ObjectInputStream ois=null;
try {
array=new ArrayList<User>();
ois=new ObjectInputStream(new FileInputStream(file));
array=(ArrayList<User>) ois.readObject();
} catch (Exception e) {
e.printStackTrace();
}finally {
ois.close();
}
return array;
}

//将程序中的数据写入文件的方法
public static void write() throws IOException{
ObjectOutputStream oos=null;
try {
oos=new ObjectOutputStream(new FileOutputStream(file));
oos.writeObject(list);
oos.flush();
} catch (Exception e) {
e.printStackTrace();
}finally {
oos.close();
}
}
public static void main(String[] args) throws IOException {
System.out.println("*************************************************************");
System.out.println("* 欢迎进入宏远考勤系统 *");
System.out.println("*************************************************************");
while(true){
System.out.println("请选择登陆类型:1-管理员登陆 2.用户登陆 0-退出系统 (输入完毕后按回车确定!!)");
int n=input.nextInt();
switch(n){
case 1:manager();break;
case 2:userT();
case 0:System.out.println("系统退出!!!");System.exit(0);
default :System.out.println("您输入错误,请从新输入!!!");

}
}
}
}

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

User类:

/*
*考勤管理系统的用户类:
* */
public class User implements Serializable{
private String userName;//用户名称
private String name;//真实姓名
private String password;
private String sign_in_first;//上班打卡
private String sign_in_last;//下班打卡
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(String userName, String name, String password, String sign_in_first, String sign_in_last) {
super();
this.userName = userName;
this.name = name;
this.password = password;
this.sign_in_first = sign_in_first;
this.sign_in_last = sign_in_last;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSign_in_first() {
return sign_in_first;
}
public void setSign_in_first(String sign_in_first) {
this.sign_in_first = sign_in_first;
}
public String getSign_in_last() {
return sign_in_last;
}
public void setSign_in_last(String sign_in_last) {
this.sign_in_last = sign_in_last;
}
@Override
public String toString() {
return "User [userName=" + userName + ", name=" + name + ", password=" + password + ", sign_in_first="
+ sign_in_first + ", sign_in_last=" + sign_in_last + "]";
}

}

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

另外需要建立一个文件userInfo.txt;

时间: 2024-10-15 04:02:39

考勤管理系统:实现数据在文件的读取功能的相关文章

Java数据存入文件和读取文件

在Java程序开发过程中我们发现并不能够让程序多次运行时获得上一次关闭程序前的运行结果--我们没有将运行的结果加以保存.这个时候我们就要找到Java操作读取数据的方法(以操作文件为例):Java中的输入/输出模型,I/O模型又称为I/O流.(以下简称I/O流). 流按方向可以分为输入(input)和输出(output)2种.输入和输出是相对的,这里我们是站在程序的角度来看的,将程序的数据写到文件就是输出,从文件中读取数据就是输入. 按类型(大小)可以分为字节型(byte)和字符型(byte)2种

在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除。

作者:邵盛松 2009-09-05 前言 1关于的BLOB(Binary)数据的存储和读取功能主要参考了MSDN上的一篇<AppendChunk and GetChunk Methods Example (VC++)>,原文地址是http://msdn.microsoft.com/en-us/library/ms807920.aspx.还有www.vckbase.com上有一篇文章<使用ADO实现BLOB数据的存取 -- ADO开发实践之二>,原文地址是http://www.vck

如何选择一款高效的考勤管理系统

考勤管理系统在企业发展中发挥着重要的作用,而且随着企业的壮大和员工人数的增多,一个高效的考勤管理系统是必备的,与传统的考勤管理方式相比,新型考勤管理系统可以实现移动考勤,减轻人力资源的工作,提高工作效率.今天点点时光的小编告诉您如何选择一款高效的考勤管理系统,希望对您有所帮助.如何选择一款有效的考勤管理系统?在您确定哪个考勤管理系统对您的公司有益之前,您需要了解考勤管理系统的优点.KPI(关键绩效指标):考勤管理系统提供组织的KPI,包括工时和工资,工作状态和人数.省钱:详细了解员工队伍,使业务

iOS中的 沙盒文件夹 (数据的写入和读取,归档和反归档)

AppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { /** 沙盒中文件夹: 1.Documents : 存储长久保存的数据 2.library: Caches:存放的缓存,比如:视频,音频,图片,小说等等 Perferences:存储偏好设置,比如:应用程序是否是第一次启动 保存用户名和密码. 3.t

c#用NPOI将excel文件内容读取到datatable数据表中

将excel文件内容读取到datatable数据表中,支持97-2003和2007两种版本的excel 1.第一种是根据excel文件路径读取excel并返回datatable 1 /// <summary> 2 /// 将excel文件内容读取到DataTable数据表中 3 /// </summary> 4 /// <param name="fileName">文件完整路径名</param> 5 /// <param name=

《程序实现》从xml、txt文件里读取数据写入excel表格

直接上码 import java.io.BufferedReader; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; impo

C++中文件的读取操作,如何读取多行数据,如何一个一个的读取数据

http://blog.csdn.net/sunhero2010/article/details/50980591 练习8.1:编写函数.接受一个istream&参数,返回值类型也是istream&.此函数必须从给定流中读取数据,直至遇到文件结束标识时停止. [cpp] view plain copy #include <iostream> #include <stdexcept> using std::istream; using std::cin; using 

从plist文件中读取数据

//从plist文件中读取数据- (void)readDataFromPlist{    //1.先获取文件路径    NSString * filePath = [[NSBundle mainBundle] pathForResource:@"Book" ofType:@"plist"];    //2.根据路径初始化字典对象    self.dic = [NSMutableDictionary dictionaryWithContentsOfFile:fileP

Mean and Standard Deviation-从文件中读取数据计算其平均数和标准差

Meanand Standard Deviation-从文件中读取数据计算其平均数和标准差 //Meanand Standard Deviation-从文件中读取数据计算其平均数和标准差 #include<iostream> #include<fstream> #include<cstdlib> #include<cmath>   int main() {     usingnamespace std;     ifstream fin;     ofstr