算数答题小程序

我要开发同款
wtn1356872023年01月25日
177阅读
开发技术javac++

作品详情

这是我当时交给老师的实验报告,详细介绍了项目的内容和困难的解决方法。这里用的是java,不过我更熟悉c++。实验步骤:一. 创建用到的数据类:数据类:用户User,题目Problem,数据集All_data,日志Log,主类Main二. 构思好数据类之间的关系:All_data 只构造一个对象,用Vector记录全部的已经存在的用户User的数据。文件读写都通过All_data的唯一对象进行操作。User中用Vector来存储用户的错题集Log中记载编程过程中的一些数据,无其他功能Main中负责加载All_data ,并作为数据中转基站,含有一个User对象作为当前登录操作的用户,其他窗口的所有操作都与Main.user有关。三. 构建数据类的成员变量:All_data 中含有公有数据成员Vector userVector,Log log。代表所有用户的容器和一个日志对象。本系统所有涉及的javafx弹窗和统一的风格设置都用静态数据成员放在All_data类中,使之成为真正意义上的集中的数据中枢。User中含有私有数据成员String id,code代表账号密码,int The_total_number_of_right_answers代表正确题目总数公有数据成员 VectorproblemVector 代表错题集Problem中私有成员为两个100以内的整数以及一个运算符。 四. 构建并实现数据类的成员函数:All_data中构建了文件读写的成员函数,无存档情况下的初始化构造器等,以及一些静态方法。User中构建了对错题集的操作函数,以及各种构造器。Problem中实现了随机生成题目的无参构造器。以及重写了toString五. 在控制台调试数据类的代码是否成功实现功能,是否存在bug,并修改:跑随机数产生用户,产生题目,随机数模拟答题结果,统统输出到控制台观察数据是否按预想实现六. 构思交互窗口搭建:通过网上的资料的查询得知java实现界面可以使用swing和awt,或者javafx。七. 学习并尝试使用swing和awt 实现窗口:学了一点swing用法,实现了一个登录界面之后发现颜值过低并且程序过于复杂,重新写了整个项目,并改用javafx八. 学习javafx用于实现窗口交互功能:学习了javafx用到的有关面板,控件,窗体的操作与功能等涉及到大作业需求的所有知识。九. 创建窗口类:创建了窗口类Login,MainMenu,ErrorBook,Challenge,Ranking。分别是登录,主菜单,答题,错题集,排行榜。用于区分大功能的模块。每个窗体类中含有许多功能性小窗体,直接在事件函数体或窗体类的成员函数中实现,不单独写一个类,避免窗体互相调用的混乱以及减小代码量更加清晰。十. 实现面板与控件的可视化界面:分别给每一个窗体类,以及窗体类里涉及的许多小窗体甚至弹窗布局好了一个我觉得还算美观的界面。十一. 实现按钮事件监听与窗口之间的跳转与数据传输:编写按钮事件代码,将窗口间需要的数据建立好联系。十二. 美化界面:找了一些美观的图片,设置了控件和面板的样式与背景图片。给每个主要窗体分别单独设置了符合功能的图标。实验结果:以下是实现的功能大作业要求的功能我用绿色标注,额外的功能用红色标注数据操作的功能:读写方面:将所有数据集中到一个专门用于数据存储的对象中,每次读写只需通过这个对象实现。读文件时,先寻找路径是否存在,不存在则自动生成路径,再寻找文件是否存在,不存在则自动生成,存在则读取。写文件时操作同上。账号安全方面:实现了每一个用户都拥有自己的id账号和密码,并强制要求账号密码都不得少于6位,防止过于简单密码不安全。密码支持所有字符的输入,大大保证了密码的复杂性。用户可以点击主菜单界面上方面板的任意位置,进入用户个人界面,可以查看自己的答题量,评分称号(增强趣味性),以及提供了修改密码的入口,修改密码时,要验证旧密码,并且要输入两次新密码,才可以修改成功,保障了密码的安全与防止了错输。错题集维护方面:每个用户都有自己独立的错题集,错题集实现了不重复的功能,即如果一样的题目被答错两次及以上,也不会重复塞入错题集。错题可以重做,对于每一道错题,用户答对之后都会从错题本中删除,并记录一次答对题量。排行榜对所有用户进行按题量排序,排序结果永久保留,供下一次排序提高效率。(为了提高程序效率,排序只在打开排行榜时进行一次,而不是用户每次答题都进行一次。)(效率差距在用户数量巨大至十万以上时比较明显。fx界面中的功能一. 登录界面:有3个功能,分别是登录,注册,游客登陆。登录与注册共用同一套账号密码输入框,非常方便快捷。登录账号或者密码错误会有弹窗提醒,注册账号密码低于6位也会有弹窗提醒,注册账号已存在也会有弹窗提醒。游客登录则共用默认游客账号。游客账号参与排行榜。注册完成后自动登录,非常方便。成功登录之后,关闭登录界面,进入主菜单界面。成功登录跳转页面时分别有不同的弹窗提醒。其中密码框使用了密码框控件,账号安全很有保障。登录后可在主菜单界面点击上方信息面板进入用户主页修改密码二. 主菜单界面:主菜单界面铺满屏幕,分为上方属性栏(包含用户id,答题量,以及单击属性栏可以打开用户主页,可以修改密码)和5个按钮:挑战答题,错题本,排行榜,开发者外挂,退出。其中,点击挑战答题,错题本,排行榜,开发者外挂则分别进入对应界面。如果错题本是空的,则弹窗提醒去刷题,不打开错题本界面。只有开发者王图南手里的和发给老师运行评分的程序含有“开发者外挂”界面,方便功能测试。给普通用户提供的程序不会含有“开发者外挂”功能(如果有机会的话)。隐藏了窗口自带的红叉叉,提供了自己写的按钮“退出”,更加美观。点击退出则离开系统。三. 答题界面:启动界面随机生成10题100以内的整数的加减法算术题呈现在列表框中,每题对应一个输入框。用户作答结束后点击“提交答卷”按钮开始批改答卷,批改完成则在新窗口显示答题详情,包含:正确率,对错数量,错题列表以及对应的标准答案。在下方有一个“加入错题集”按钮,供用户自由选择是否将本次答卷计入错题集,(如果用户本次答题心情不好乱答一通,自认为本次错题没有重做意义时,可以选择直接关闭答题窗口而不计入错题集,但本次答对的题计入正确题量参与排行榜)。其中,错题集中已经有的相同错题不会重复计入。四. 错题集界面:启动错题集,自动加载当前用户的错题集,并将全部题目显示在左边的列表框中。有3个按钮:1.“随机再次尝试错题”:则是从错题集中随机拉出一道题在新弹窗中作答,并弹窗提示作答结果。如果回答正确,则会将该题从错题集中删除并记录一次正确答题总量,参与排行榜。2.“挑战10道错题”:在错题集中挑选10道错题(错题总量不足10题则不足10题),依次弹窗供答题,功能同“随机再次尝试错题”。3.“清空错题集”:用户可以清空杂乱的错题集,重新来过。五. 排行榜界面:启动排行榜界面,自动读取全部用户答题信息,进行排序,然后在列表框中按答题量顺序显示,可以通过滑条拖动查看全部用户答题情况。第一名,前3名,前10名,前30名分别拥有不同的背景图片,排名越高越拉风,画面美观,也让用户更有争榜积极性。六. 开发者外挂界面:老师运行我的程序时可以通过此功能便捷生成大量用户数据进行考核。1. 随机产生机器人用户。由于大量生成用户,用于开发者(我)调试程序以及观察程序运行效率。也可用于机器人当“托”陪用户进行排行榜竞争。用于一次生成千万用户程序压力过大(发现一次生成5万用户时有点卡顿),限制一次最大只能生成200个,就算输入一个亿也只生成200个(当然超过int范围或者输入非数字会拒绝生成)。点击生成时候,会弹出一个窗口来模拟进度条功能,通过窗口大小变化来直观展示生成进度。(比直接用进度条酷炫一点)生成的机器人用户统一默认密码为123456,可以通过排行榜查询到机器人的id后,重新打开登录界面进行登录机器人账号,登录后可正常使用该账号,密码也可重新修改。(该功能仅供测试用)2. 清除全部用户。用户太多时(比如达到数十万),程序运行卡顿,调试程序不方便,故全部清除。清除过程一键解决,非常方便。3. 随机增加当前用户题量与错题,供排行榜与错题本功能的调试。七. 用户主界面: 包含用户信息(Id,答题量,称号等)。有用户设置功能如:修改密码。点击修改密码弹出修改密码界面,在该界面对应位置按要求输入旧密码,两次新密码后即成功并关闭修改密码界面。如果旧密码错误或者新密码不规范(低于六位)或者两次新密码不一致,则会弹窗提醒。三个输入框均使用密码框控件,非常安全。八. 退出:退出程序。
查看全文
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论