前几天,在课程要求下完成了个人项目的项目工程编写,即一个中小学数学卷子自动生成程序。

程序主要功能是用户预设账户登录后可以选择等级进行对应的小中高的数学卷子对应出题生成txt文本。

本文针对partner G 的工程进行分析,讲解这个项目的一些过程得失。

据需求分析,项目难点在于

1.文件流的使用,包括文件夹的生成,试卷txt的生成

2.随机出题已经保证出的题目不会重复

3.题目的数学逻辑严谨性

优点:

  1. 文件路径使用相对路径。文件路径具有相对路径和绝对路径两种形式,而绝对路径可能会使得程序的可重用性差,使得在别的终端上不能运行,而在程序中使用相对路径则会变的有极强的适应性,包括 ./ 为当前路径,../为上一级目录的使用都是能提高代码健壮性的。
  2. 在使用文件流IO时使用try catch捕捉异常。IO输入容易产生错误,因为可能会有文件路径出错,文件找不到等运行时错误,在编译i阶段是找不出这些问题的,因此一个try catch 的异常捕捉是十分有必要且严谨的。
  3. 题目查重。每次出卷子时产生的题目会对文件夹中该老师出现过的题目进行查重,会将该题目与文件夹中其他试卷,包括当前出题卷进行比对,若相同,这该题不会输出到卷子上。较为完善的题目查重设置,使用了File类中的list()方法,list()方法是返回某个目录下的所有文件和目录的文件名,返回的是String数组。
  4. java语言熟练掌握。能够清晰的使用static静态变量,使用文件流的File类和BufferrdWriter类,以及文件输入的InputStreamReader类和BufferedReader类等。

However, it is a pity that it has its pluses and minuses

缺点:

  1. 没有太多体现java的oop思想。Object-oriented programming,面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想,而不是将程序看作一系列函数的集合。本项目中并未过多的体现面向对象的独立对象之间的调用,而是单纯的一些面向过程的编程,只是函数调用的集合。
  2. 有些地方可以考虑优化。比如代码逻辑复杂的地方糅杂在一块,不够清晰,可考虑再多分成几个小函数,提高代码易读性。增加判断文件夹是否建立,若文件夹不存在则程序会创建,可以减少前期工作。

个人项目:中小学数学卷子自动生成程序

这份需求的项目编写,让我再次使用了久违的c++头文件与实现分开封装的形式编程,对以前知识的一个回顾。而和partner G 探讨不同的程序逻辑之间的优劣性,和不同编程语言实现这个项目的难易程度,同时也再次熟悉起当初只是入门的java语言,受益匪浅。

中小学数学卷子自动生成程序--对G同学的代码分析的更多相关文章

  1. HNU_中小学数学卷子自动生成程序(个人项目)简要分析

    一.前言 首先,在这里特别感谢我的结对编程伙伴HnuLyx,他在算法上和设计思路上都与我有很大的不同,个人项目互评中,为我的项目提出了很多很好的建议,让我在认清自己不足的同时,了解到很多以前没有注意的 ...

  2. Demo005 小学四则运算自动生成程序

    目录 小学四则运算自动生成程序 0.传送门 1.题目要求 2.功能实现 2.1 总体设计 2.2 用户欢迎界面 2.3 用户功能界面 2.4 屏幕输出 2.5 文本输出 2.6 获取时间 2.7 用户 ...

  3. 13.深入k8s:Pod 水平自动扩缩HPA及其源码分析

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 源码版本是1.19 Pod 水平自动扩缩 Pod 水平自动扩缩工作原理 Pod 水平自动 ...

  4. EF自动生成的模型edmx代码分析

    edmx代码分析 本文分析Entity Framework从数据库自动生成的模型文件代码(扩展名为edmx). 1. 概述 本文使用的数据库结构尽量简单,只有2个表,一个用户表和一个分公司表(相当于部 ...

  5. SpringMVC学习系列-后记 结合SpringMVC和Hibernate-validator,根据后台验证规则自动生成前台的js验证代码

    在SpringMVC学习系列(6) 之 数据验证中我们已经学习了如何结合Hibernate-validator进行后台的数据合法性验证,但是通常来说后台验证只是第二道保险,为了更好的用户体验会现在前端 ...

  6. 【转】第5篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:自动注册JS脚本+委托回调方法分析

    作者: 牛A与牛C之间 时间: 2013-11-19 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第5篇:Xilium CefGlue 关于 CLR Object 与 JS ...

  7. [Android实例] Android Studio插件-自动根据布局生成Activity等代码1.4 (开源)(申明:来源于网络)

    [Android实例] Android Studio插件-自动根据布局生成Activity等代码1.4 (开源)(申明:来源于网络) 地址:http://www.eoeandroid.com/thre ...

  8. 分享下使用 svn,测试服务器代码自动更新、线上服务器代码手动更新的配置经验

    分享下使用 svn,测试服务器代码自动更新.线上服务器代码手动更新的配置经验 利用SVN的POST-COMMIT钩子自动部署代码 Linux SVN 命令详解 Linux SVN 命令详解2 使用sv ...

  9. Idea_学习_06_IntelliJ IDEA 自动导入包 快捷方式 关闭重复代码提示

    二.参考资料 1.IntelliJ IDEA 自动导入包 快捷方式 关闭重复代码提示

随机推荐

  1. php session 的使用方法

    public function insert(Request $request){ $parm = $request->except('token'); $this->validate($ ...

  2. 一比一还原axios源码(零)—— 概要

    从vue2版本开始,vue-resource就不再被vue所维护和支持,官方也推荐使用axios,所以,从我使用axios至今,差不多有四五年了,这四五年的时间只能算是熟练应用,很多内部的实现和原理不 ...

  3. 关于dotnet动态生成controller的问题

    一些动态生成controller的问题 前言 最近在写包, 一开始封装了仓储Repository用于操作数据库, 然后为了快速开发一些业务简单的接口, 通过QueryController , Modi ...

  4. Docker——dockerfile

    dockerFile介绍 dockerFile是用来构建docker镜像的文件!命令参数脚本! 步骤: 编写dockerFile文件 docker build构建成为一个镜像 docker run运行 ...

  5. Spring——初识

    1.1 使用 导包:Spring Web MVC(maven) <!-- https://mvnrepository.com/artifact/org.springframework/sprin ...

  6. 6月19日 python学习总结 Django之路由系统

    Django之路由系统   Django的路由系统 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调 ...

  7. vue学习过程总结(06) - vue的数据存储store

    这个不知道能怎么叫不?现在对这块很迷.以下为个人理解 store是状态管理,是一个对象,有其属性和方法. 常见的值有:state/mutations/actions/getters, 这几个值的意思: ...

  8. Oracle :value too large for column "SCHEMA"."TABLE"."COLUMN" (actual: 519, maximum: 500)的解决方案

    原因:我是使用 CREATE TABLE XXX AS subquery 进行创建的数据表,主要是将相关的数据聚合在一起,然后通过导出为SQL脚本文件,进行导入到新库中,导致部分INSERT INTO ...

  9. ActiveMQ数据接收类型问题

    一.问题描述 最近开发了一个工具,功能是监听ActiveMQ消息然后做相应的处理,本地自测没有问题,但是部署在现场出现如下报错: [WARN ] [2020-08-27 19:49:42] [org. ...

  10. jQuery--筛选【查找函数】

    查找函数介绍 <A> <B> <C></C> <D></D> <E></E> <F>< ...