以txt为数据源的随机点名系统
入门小白一枚,看了很多相关的内容才写出了这个系统,但还有一点的缺陷。
开始的解题思路是:直接通过IO流直接对文本进行操作,但是增删改的实现实在是太麻烦了,于是就推翻重来用了数组的读出写入的方式,进行相应的增删改操作再把数组的内容写入文本的方式。
最后还存在一点的问题是:对文本内删除内容,会存在一行的空白,在读取内容的时候依旧存在这个问题,如果有更好的建议可以再评论区或是私信里提出,完善好这个操作。
package day2;import java.io.*;
import java.util.*;public class ChengXu {String path = "新建.txt";public static void main(String[] args) {ChengXu chengXu = new ChengXu();
// chengXu.test4("zhou");
// chengXu.test3();chengXu.test();}
// 显示public void test() {char c;boolean quit = true;while (quit) {System.out.println("--------随机点名系统--------");System.out.println("1.随机选人 2.添加学生 3.删除学生 4.查看信息 5.退出系统");c = test6();switch (c) {case '1':
// 随机选人test5();break;case '2':
// 添加学生test3();break;case '3':
// 删除学生System.out.println("请输入要删除的对象名字");Scanner scanner = new Scanner(System.in);test4(String.valueOf(scanner.next()));break;case '4':
// 查看信息test2();break;case '5':
// 退出系统char isExit = test7();if (isExit == 'Y') {quit = false;}break;}}}// 创建对象public List<String> test1() {BufferedReader reader = null;String lineTxt = null;List<String> list1 = null;try {reader = new BufferedReader(new InputStreamReader(new FileInputStream(path)));list1 = new ArrayList<>();int count;// 逐行读取while ((lineTxt = reader.readLine()) != null) {list1.add(lineTxt);}reader.close();} catch (Exception e) {System.out.println(e);}return list1;}// 获取String数组public void test2() {for (String i : test1()) {System.out.println(i);}}// 添加public void test3() {List<String> list = test1();BufferedWriter writer = null;Scanner sc = null;try {writer = new BufferedWriter(new FileWriter(path, true));sc = new Scanner(System.in);System.out.println("输入字符串:");System.out.println("--姓名---年龄--学号--性别--专业--");//next():只读取输入直到空格。String str1 = sc.next();var i2 = Integer.parseInt(sc.next());var i3 = Integer.parseInt(sc.next());String str4 = sc.next();String str5 = sc.next();//关闭var input = new Information(str1, i2, i3, str4, str5);writer.write(String.valueOf(input.toString())); // 逐行输入writer.newLine(); // 换行writer.flush(); // 刷新} catch (IOException e) {e.printStackTrace();}}// 删除public void test4(String name) {if (name != null) {BufferedWriter bufferedWriter = null;List<String> list = test1();try {bufferedWriter = new BufferedWriter(new FileWriter(path));for (int i = 0; i < list.size(); i++) {boolean b = list.get(i).contains(name);if (b) {Collections.replaceAll(list, list.get(i), "");System.out.println("成功");}}for (int i = list.size() - 1; i >= 0; i--) {String delete = list.get(i);if (delete.equals("")) {break;}bufferedWriter.write(delete); //写入bufferedWriter.newLine(); //换行bufferedWriter.flush(); //刷新}} catch (IOException e) {e.printStackTrace();}}}// 随机抽取public void test5(){List<String> strings = test1();int index = new Random().nextInt(strings.size());String name = strings.get(index);System.out.println("被点到的人为:" + name);}// 检测输入内容是否符合public static char test6() {char c;System.out.println("请输入操作: ");Scanner scanner = new Scanner(System.in);for (; ; ) {String str = scanner.next();c = str.charAt(0);if (c != '1' && c != '2' &&c != '3' && c != '4' && c != '5') {System.out.print("6选择错误,请重新输入:");} else break;}return c;}// 确认是否退出public static char test7() {Scanner scanner = null;char c;for (; ; ) {System.out.println("确认是否退出 [Y]/[N]");scanner = new Scanner(System.in);String str = scanner.nextLine().toUpperCase();c = str.charAt(0);if (c == 'Y' || c == 'N') {break;} else {System.out.print("7选择错误,请重新输入:");}}return c;}
}
其中遇到了很多问题也都是从http://t.csdn.cn/cQx7G这篇文章上借鉴的,所以在内容上都会有相似的地方。
以txt为数据源的随机点名系统相关推荐
- python带你制作随机点名系统,超级简单
前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 在某些难以抉择得时候,我们经常要用外力来帮助我们做出选择 比如,课堂随机点名或面对活动需要人上台表演时等等场景 这个时候,有一个随机点名系统就非常好啦,毕 ...
- 自动点名系统c语言,用C语言编写一个随机点名系统
/*编写一个随机点名系统,运行该系统后,按空格键可以显示出一名同学,以前被选中的同学,将不会再次被选中*/ #include /*standard input & output*/ #incl ...
- 用JS实现一个随机点名系统(五)
用JS实现一个随机点名系统 每次上课前10分钟,老师都会叫我们回答问题,奈何每次都是点学号,好像每次我都能中奖,我直接跟老师提议,老师,我用来JS来帮你写个随机点名的系统吧!这样就不会每次都 抽到我了 ...
- 【微信小程序】随机点名系统(点击开始滚动名字点击结束按钮结束滚动)
[微信小程序]随机点名系统(点击开始滚动名字点击结束按钮结束滚动) 1.效果图: 2.js代码 {Page({data:{condition: Math.floor(Math.random()*7+1 ...
- 我写了个随机点名系统,非常好用~ 我给它取名叫做——随机点名系统
快开学了吧?作为课代表或者班长的你肯定需要一个随机点名系统.所以我做了一个可以通过导入Excel录入学生信息的随机点名系统.真的方便好用!!! 一.如何使用 点名系统的使用 和 把大象放进冰箱的步骤类 ...
- 随机点名系统——html初学实战
一.实验目的 编写随机点名程序(越不来上课的人,被点中的概率越高,实现抽查.预警等功能) 二.算法设计与结果预览 选择开发语言: C/C++ 不太适合,由于我的想法是最终要做出一个比较拿的出手的图形界 ...
- 一个网页版的随机点名系统
一个随机点名的网页 <!DOCTYPE html> <html lang="en"> <head><meta charset=" ...
- 超赞随机点名系统(抽奖系统),快来看看是不是你想要的(附完整源码)
名称:随机点名系统 新人在线求点赞,有什么建议也可以在评论里告诉我哦~ 需求及功能: 1.点击按钮开始随机,再次点击按钮停止随机: 2.已经被随机到的下一次开始随机时将不能再被随机到: 3.随机的位数 ...
- java 小程序之随机点名系统
package javaSE.第二周.day08; /* * 难度:编写一个随机点名系统, * 两个功能,一个是抽取学员回答问题,一个是记录学员被命中的次数 */ public class Ra ...
最新文章
- 苹果手机怎么设置时间24小时制_外媒实测苹果iPhone 12续航:5G网络下表现不佳...
- 注意力机制在活体检测中的应用
- 2- 计算机的组成,VMware使用
- C#处理JSON 数据
- LeetCode 1473. 给房子涂色 III(DP)
- python基础语法_字符串编码
- jsp网页上实现计算三角形面积小程序
- mysql 支持全文搜索_MySQL全文本搜索:启用全文本搜索支持
- Apache Traffic Server服务搭建
- 爱尔兰圣三一大学计算机专业硕士,爱尔兰圣三一学院研究生申请要求
- Cisco RV180W 路由器设置
- 时间最优轨迹规划(3-5-3次多项式)
- 手机无线投屏win10
- python 密码验证
- 冷月手撕408之操作系统(3)-操作系统的发展及分类
- ecshop2.5软件的文件架构{转}
- R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据、从雅虎金融读取著名的苹果公司的全部股票数据
- rejected from java.util.concurrent.ThreadPoolExe错误
- HijackThis日志细解【简明教程增强版】(四)
- 三年硬件工程师薪水_关于“硬件工程师工资不高”的几个真相