入门小白一枚,看了很多相关的内容才写出了这个系统,但还有一点的缺陷。

开始的解题思路是:直接通过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为数据源的随机点名系统相关推荐

  1. python带你制作随机点名系统,超级简单

    前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 在某些难以抉择得时候,我们经常要用外力来帮助我们做出选择 比如,课堂随机点名或面对活动需要人上台表演时等等场景 这个时候,有一个随机点名系统就非常好啦,毕 ...

  2. 自动点名系统c语言,用C语言编写一个随机点名系统

    /*编写一个随机点名系统,运行该系统后,按空格键可以显示出一名同学,以前被选中的同学,将不会再次被选中*/ #include /*standard input & output*/ #incl ...

  3. 用JS实现一个随机点名系统(五)

    用JS实现一个随机点名系统 每次上课前10分钟,老师都会叫我们回答问题,奈何每次都是点学号,好像每次我都能中奖,我直接跟老师提议,老师,我用来JS来帮你写个随机点名的系统吧!这样就不会每次都 抽到我了 ...

  4. 【微信小程序】随机点名系统(点击开始滚动名字点击结束按钮结束滚动)

    [微信小程序]随机点名系统(点击开始滚动名字点击结束按钮结束滚动) 1.效果图: 2.js代码 {Page({data:{condition: Math.floor(Math.random()*7+1 ...

  5. 我写了个随机点名系统,非常好用~ 我给它取名叫做——随机点名系统

    快开学了吧?作为课代表或者班长的你肯定需要一个随机点名系统.所以我做了一个可以通过导入Excel录入学生信息的随机点名系统.真的方便好用!!! 一.如何使用 点名系统的使用 和 把大象放进冰箱的步骤类 ...

  6. 随机点名系统——html初学实战

    一.实验目的 编写随机点名程序(越不来上课的人,被点中的概率越高,实现抽查.预警等功能) 二.算法设计与结果预览 选择开发语言: C/C++ 不太适合,由于我的想法是最终要做出一个比较拿的出手的图形界 ...

  7. 一个网页版的随机点名系统

    一个随机点名的网页 <!DOCTYPE html> <html lang="en"> <head><meta charset=" ...

  8. 超赞随机点名系统(抽奖系统),快来看看是不是你想要的(附完整源码)

    名称:随机点名系统 新人在线求点赞,有什么建议也可以在评论里告诉我哦~ 需求及功能: 1.点击按钮开始随机,再次点击按钮停止随机: 2.已经被随机到的下一次开始随机时将不能再被随机到: 3.随机的位数 ...

  9. java 小程序之随机点名系统

    package javaSE.第二周.day08; /*  * 难度:编写一个随机点名系统,  * 两个功能,一个是抽取学员回答问题,一个是记录学员被命中的次数  */ public class Ra ...

最新文章

  1. 苹果手机怎么设置时间24小时制_外媒实测苹果iPhone 12续航:5G网络下表现不佳...
  2. 注意力机制在活体检测中的应用
  3. 2- 计算机的组成,VMware使用
  4. C#处理JSON 数据
  5. LeetCode 1473. 给房子涂色 III(DP)
  6. python基础语法_字符串编码
  7. jsp网页上实现计算三角形面积小程序
  8. mysql 支持全文搜索_MySQL全文本搜索:启用全文本搜索支持
  9. Apache Traffic Server服务搭建
  10. 爱尔兰圣三一大学计算机专业硕士,爱尔兰圣三一学院研究生申请要求
  11. Cisco RV180W 路由器设置
  12. 时间最优轨迹规划(3-5-3次多项式)
  13. 手机无线投屏win10
  14. python 密码验证
  15. 冷月手撕408之操作系统(3)-操作系统的发展及分类
  16. ecshop2.5软件的文件架构{转}
  17. R语言使用quantmod包的getSymbols函数从指定金融数据源获取指定时间段的股票数据、从雅虎金融读取著名的苹果公司的全部股票数据
  18. rejected from java.util.concurrent.ThreadPoolExe错误
  19. HijackThis日志细解【简明教程增强版】(四)
  20. 三年硬件工程师薪水_关于“硬件工程师工资不高”的几个真相

热门文章

  1. 一个纸杯子的测试用例
  2. 计算机毕业设计基于asp.net的旅游网站
  3. String Similarity
  4. 【ArcGIS Pro二次开发】(15):用地用海名称和代码互转
  5. excel表格,如何按编号换行
  6. 如何实现视频平台会员多账号登录
  7. 华为mate40pro和华为mate30pro的区别
  8. 互联网赚钱的逻辑是什么?
  9. 基于JPVideoPlayerKit的小视频播放
  10. 运行webdriver时启动不了浏览器