一个简单的考勤签到程序
项目介绍
项目:在我们的课堂,一般有3-5次全班考勤的机会。往年老师都是在考勤表上做标记,今年不一样了,让我们来编个程序,把考勤数据保存到电脑中。
已有数据,学生名单文件: list.txt(下载地址:http://pan.baidu.com/s/1hqxECIw)
201011621305 陈光森
201111621301 曹保印
201111621306 陈嘉濠
201111621313 陈俊宏
201111621325 龙飞玲
班级名称:jk12
要求:
1)所有输入参数都使用命令行输入。
2)Java主类名为 RegisterApp
3)命令行输入方式为 java RegisterApp list.txt jk12
4)签到结果保存到 jk12_20140303_1430.txt (班级名称_日期_时分.txt),内容如下,如果学生到课,则标记为1,否则标记为0
201011621305 陈光森 1
201111621301 曹保印 1
201111621306 陈嘉濠 0
201111621313 陈俊宏 0
201111621325 龙飞玲 1
参考解答
- /**
- * 程序功能:简单的签到程序,能够保存签到后的结果
- * 作者:丁又专
- * 时间:2014.03.02
- * QQ:303727350
- */
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.PrintWriter;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.Scanner;
- public class RegisterApp {
- /**
- * @param args
- * @throws Exception
- */
- public static void main(String[] args) throws Exception {
- // TODO Auto-generated method stub
- //(a)使用命令行参数,输入学生名单,和 班级名称
- // 使用格式: java RegisterApp list.txt wl121
- if(args.length != 2){
- System.out.println("参数输入不对");
- System.out.println("使用方法(示例):java RegisterApp 名单文件名称 班级名称");
- System.exit(0);
- }
- //(b)学生签到结果:学生到,输入1;缺课,输入0
- System.out.println("——————————————————");
- System.out.println("简易学生签到程序V0.1");
- System.out.println("老师叫到名字,请答‘到’");
- System.out.println("1:到课 0:缺课");
- System.out.println("——————————————————");
- //(c)取得系统当前日期时间
- Date now = new Date();
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HHMM");//可以方便地修改日期格式
- String strDate = dateFormat.format( now );
- System.out.println("当前时间:"+strDate);
- //(d)读取学生名单,args[0]为学生名单文件,args[1]为班级名称
- String fileList = args[0];
- String fileCheck = args[1] + strDate + ".txt";
- File fileInput = new File(fileList);
- File fileOutput = new File(fileCheck);
- //(e)利用Scanner类读取文本数据/键盘输入数据; PrintWriter类把签到结果写入到文件
- Scanner input = new Scanner(fileInput);
- Scanner sc = new Scanner(System.in);
- PrintWriter output = new PrintWriter(fileOutput);
- //保存缺课学生名字strAbsent ,缺课学生人数nAbsent, 是否缺课标记flag
- String strAbsent = "";
- int nAbsent = 0;
- int flag = 0;
- while(input.hasNext()){ //循环读取学生数据
- String strName = input.nextLine();
- //把学生名字输出到屏幕,从而进行点名。
- //老师根据学生到课情况,输入1-到课,0-缺课,保存到flag中
- System.out.println(strName);
- flag = sc.nextInt();
- //如果缺课,则记录下缺课学生数目 与 名字
- if(flag==0){
- nAbsent = nAbsent+1;
- strAbsent = strAbsent + " " + strName;
- }
- //把考勤结果写入名单
- output.print(strName);
- output.print(" ");
- output.println(flag);
- }
- //关闭I/O管道
- sc.close();
- output.close();
- input.close();
- System.out.println("——————————————————————————");
- System.out.println("考勤结束.");
- System.out.printf("一共有%d个同学缺课,分别是:%s\n",nAbsent,strAbsent);
- System.out.println("——————————————————————————");
- }
- }
输出结果
编程经验
1)提高搜索技能。好久没有编写程序,很多内容都忘记了。但根据以前哦记忆,利用baidu进行搜索。 如 字符串的格式化,就在baidu中输入“java String 格式化”,很容易就找到答案了。
2)简单却不容易。看似简单的问题,也需要不断修改,花费较多的时间。 编程无捷径,唯有“笨方法高”,推荐阅读 笨方法学Python。
3)不断/不断的敲代码,练习。
一个简单的考勤签到程序相关推荐
- Windows下编译TensorFlow1.3 C++ library及创建一个简单的TensorFlow C++程序
参考:https://www.cnblogs.com/jliangqiu2016/p/7642471.html Windows下编译TensorFlow1.3 C++ library及创建一个简单的T ...
- C++ 容器的综合应用的一个简单实例——文本查询程序
[0. 需求] 最近在粗略学习<C++ Primer 4th>的容器内容,关联容器的章节末尾有个很不错的实例. 通过实现一个简单的文本查询程序,希望能够对C++的容器学习有更深的理解. 由 ...
- 如何复制java卡,使用java做一个简单的集卡程序
使用java做一个简单的集卡程序 本次设想的是要集齐4张卡,每张卡的概率都是25%,如果每个用户集齐需要多少次才能集合完毕 public class Test { public static void ...
- 怎样用java写一个简单的文件复制程序
怎样用java写一个简单的文件复制程序 代码来源:https://jingyan.baidu.com/article/c35dbcb0d6f1398916fcbc07.html package Num ...
- hosts多个ip对应一个主机名_一个简单的Web应用程序,用作连接到ssh服务器的ssh客户端...
WebSSH 一个简单的Web应用程序,用作连接到ssh服务器的ssh客户端.它是用Python编写的,基于tornado,paramiko和xterm.js. 特征 支持SSH密码验证,包括空密码. ...
- iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序
iOS开发UI篇-使用嵌套模型完成的一个简单汽车图标展示程序 一.plist文件和项目结构图 说明:这是一个嵌套模型的示例 二.代码示例: YYcarsgroup.h文件代码: 1 //2 // YY ...
- UNIX网络编程笔记(2):一个简单的时间获取程序
这一讲通过一个简单的时间获取程序简单介绍套接字编程. 1.套接字API 1.1.套接字地址结构 上一讲中介绍了TCP的一些内容,知道了一个套接字对唯一标识了网络中的一个TCP连接,而一个套接字标识了一 ...
- 一个简单的录音软件程序代码【C++】
一个简单的录音软件程序代码[C++]今天的院内绿草茵茵的 录音软件,岁月一去不回返,顽强拼搏,我将来的录音软件家是一栋三层的别墅,因为小树给我留下的是顽强拼搏,你见状,可你的眼睛好像在说,那盛夏的梧桐 ...
- 如何构建一个简单的语音识别应用程序
"In this 10-year time frame, I believe that we'll not only be using the keyboard and the mouse ...
最新文章
- iOS 高效开发-----实现description 方法 (续)
- 什么是iu组装服务器,超频三全新款 IU服务器散热器全新登场
- C++将程序跳转到指定内存地址
- SecureCRT突然假死的问题(Ctrl+S)
- c++ 数组的数据保存二进制_Redis五种不同的数据类型
- 论文浅尝 - WSDM20 | 基于弱监督及逐步推理的多关系知识图谱问答
- aes加密字符串c++_springboot2.2.X手册:防抓包?快速实现API接口数据加密
- 使用Spring Boot来加速Java web项目的开发
- 小操作_js调出outlook
- html th表格居中,HTML----之表格
- Mysql学习总结(2)——Mysql超详细Window安装教程
- 视频md5修改器苹果手机
- oracle北京时区,Oracle中的时区偏移
- iOS-不用网线搭建IPv6网络测试环境
- SAP SM30隐藏部分字段以及自动带出某些值
- 国际“知识共享”运动的现状
- 奇迹服务器gs无响应,奇迹服务端1.03K比较有特色的拓展GS
- 手机验证码接收系统如何选择
- 内存缓存(in-memory cache)
- React 函数式组件缓存原理
热门文章
- python3 爬虫学习:自动给你心上人的微博点赞(一)
- 【UE4】蓝图转为C++官方教程部分笔记
- dba+开源工具:轻量级数据库审计日志平台,违规操作无所遁形(附下载)
- php 405错误怎样重现,phpmyadmin出现405错误怎么办?
- 罗马仕荣获中国质量认证中心、CESI颁发的全国首批“双新认证”证书
- 微信订阅号和服务器,微信订阅号与服务号有什么不同?
- singleton pattern的一个模板实现, 适用于单线程, 并且提供了Release方法
- 图像相似度对比-直方图
- 苹果如何安装ipa(亲测有用,无需越狱)
- 第1讲、Cadence Allergo绘制小马哥DragonFly四轴飞行器PCB四层板教程简介