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

程序主要功能是用户预设账户登录后可以选择等级进行对应的小中高的数学卷子对应出题生成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. Dapr云原生应用开发系列7:工作流集成

    题记:这篇介绍一个很有意思的东西,Dapr和Logic Apps这样的工作流引擎集成. Dapr工作流 在1年多前,Dapr的孵化团队搞了一个很有意思的东西:把Dapr和Logic Apps集成起来, ...

  2. ubuntu 学习中的坑-2021-11-22

    安装ssh-server服务 查看是否安装ssh服务 #dpkg -l | grep ssh 安装ssh-server服务 #sudo apt-get install openssh-server 然 ...

  3. git commit 后,没有push ,怎么撤销

    如果是撤销到commit 之前,本地修改也放弃,可以 使用git  reset --hard , 但是想保留本地修改,也想撤销commit 可以使用 git reset  --mixed  HEAD^ ...

  4. 记一次解决关机蓝屏 | MULTIPLE_IRP_COMPLETE_REQUESTS | klflt.sys

    已经解决蓝屏问题,原因是卡巴斯基安全软件驱动导致,需要卸载卡巴斯基安全软件,详细过程如下. 一.关机时蓝屏 Win10系统,在关机动画快结束时突然蓝屏,提示:你的设备遇到问题,需要重启,终止代码:MU ...

  5. redis规范(实用)

    redis功能强大,数据类型丰富,再快的系统,也经不住疯狂的滥用.通过禁用部分高风险功能,并挂上开发的枷锁,业务更能够以简洁.通用的思想去考虑问题,而不是绑定在某种实现上. Redis 根据不同的用途 ...

  6. Arcmap软件报错:This application cannot run under a virtual machine arcmapr, 但是你并没有使用虚拟机

    在任务栏搜索"启用或关闭 windows 功能",取消 "适用于 Linux 的 Windows 子系统" (有可能还需要 取消 "虚拟机平台&quo ...

  7. [xnuca](web)xblog

    session会话机制介绍如下 http是无状态协议.服务器靠cookie和session来记住用户.$_SESSION 和 $_GET等一样,是超全局变量. 后台脚本里面会写: session() ...

  8. python+pytest接口自动化(11)-测试函数、测试类/测试方法的封装

    前言 在python+pytest 接口自动化系列中,我们之前的文章基本都没有将代码进行封装,但实际编写自动化测试脚本中,我们都需要将测试代码进行封装,才能被测试框架识别执行. 例如单个接口的请求代码 ...

  9. JavaScript的访问器

    一.访问器属性: 1.Configurable:表示能否通过delete删除属性,从而重新定义属性,能否修改属性的特性,或者能否把属性修改为数据属性.对于直接在对象上定义的属性,这个特性的默认值为tr ...

  10. JavaScript HTML5事件

    有3个页面级事件在HTML5版本中被引入.  事件  说明  DOMContentLoaded  在DOM树形成后触发(与此同时,图片.CSS和JavaScript可能还在加载).在这个事件中,脚本运 ...