zoukankan      html  css  js  c++  java
  • 结对编程项目报告

    结对编程项目前述

    此次结队编程项目是我和刘明杰共同完成的。

    此项目是在个人项目的基础上进行的。先前我们的个人项目均是使用C++编写的,考虑到图形界面。我们决定改用Java,且由于先前的C++代码量并不是很大,而且需要改动之前代码的逻辑并增添新的代码,我们决定重新使用Java代码按照个人项目中C++代码的逻辑进行编写而没有将先前的C++代码编译为DLL文件之后在用Java调用。

    综合分析了我们两个人的项目后我们决定按照我的个人项目的框架进行编写,但由于我的题目生成部分的括号生成存在重复问题,因此题目生成部分的逻辑采用了刘明杰的。保留的我的个人项目中的AccountManager、PaperGenerator类、Account类以及Expression类,在PaperGenerator类中题目生成部分的原代码全部清除,用刘明杰的题目生成部分的代码取代;同时我们也针对要计算结果的要求对表达式的生成、存储方式进行了修改;最后我们一起完成了各窗口的规划和编写工作。

    项目概览

    项目构成

    项目构成如下:

    MainPackege包中的类是主类。主MainClass类中声明了所有需要的管理类和模型类,将底层操作与编写的图形界面中的各控件进行绑定。

    Manager包中的类是管理类。其中AccoundManager类用于进行账户的登录、注册、获取登录的用户等操作;DatabaseManager类用于与数据库文件进行增加行、删除行等交互操作;PaperGenerator类用于生成三类不同的试卷;SMSManager用于进行短信验证码的发送、对输入的短信验证码与发送的验证码进行核对等操作。

    Model包中的类时单个数据对象的原子类。其中Account类定义了单个账户,包含用户名、密码、用户类型等信息;Expression类时一个表达式类,用于存储由PaperGenerator类生成的单个表达式,以及表达式的结果(答案);AnswerItem类对应答题界面上单独一道题,它根据表达式生成,存储了表达式的原公式,四个选项的值以及正确选项的下标。

    Windows包中包含四个图形界面的类。AnswoerWindow绘制了答题界面;GradeWindow绘制成绩单的界面;LoginWindow绘制了登录界面,RegistWindow绘制了注册界面。

    ApplicationData文件夹中放置的是数据库文件,所有账号的信息均保存在该文件中。

    管理类的外部接口说明

    四个管理类提供的外部接口如下:

    AccountManager类外部接口:

    boolean Login(String username, String password) //登录账号,返回账号验证结果

    boolean Register(String username, String password, Account.Type type) //注册账户

    boolean Exist(String username) //检查用户名是否已经存在

    boolean Logout() //登出账号,返回原来的登录状态

    Account GetCurrentAccount() //获取当前登录的账户

    PaperGenerator类外部接口:

    List<Expression> GeneratePrimaryPaper(int num) //生成指定题量的小学试卷

    List<Expression> GenerateJuniorPaper(int num) //生成指定题量的小学试卷

    List<Expression> GenerateSeniorPaper(int num) //生成指定题量的小学试卷

    DatabaseManager类外部接口:

    boolean AddAccount(Account account) //向数据库中写入账户信息

    void RemoveAccount(String username) //从数据库中删除账户信息

    Account FetchAccount(String username) //从数据库中获取指定的账户

    boolean ExistenceCheck(String username) //在数据库中检查指定的账户是否存在

    项目细节说明

    1、短信验证部分是通过阿里云的短信服务实现的,在完成签名和模板的申请后按照阿里云提供的短信验证模板进行配置,实现了短信验证部分的功能。

    2、表达式的计算是通过栈实现的,思路是,在生成表达式的过程中对根号、平方、sin、cos等特殊操作数生成操作数的同时计算为普通数字,之后将表达式整理为仅包含普通数字、四则运算符以及括号的中缀表达式,接着将生成的中缀表达式转换为后缀表达式,最后使用栈对后缀表达式进行计算。

    3、用户数据的保存最开始是采取将用户信息加密后保存在.txt文件中,在我们后续商讨时决定更改为采用本地数据库文件的方式来存储用户数据。

    4、所有窗口类中的控件都被声明为了public final的形式,便于在主类中为不同窗口的控件添加事件处理程序以及修改控件显示的文本。

    5、每套试卷生成的题目数量为20-30之间的随机数目。

    用户界面截图

    登录界面

    注册界面

    答题界面

    成绩界面

    此次项目的收获

    通过这次结对编程项目,提高了我们结对编程的能力,同时我们也收获了很多经验和教训。我们在“复习”了Java语言的同时,也学会了Java中正则表达式的处理、通过引入Java库包与数据库进行交互等新的知识。这次结对编程让我们认识到了沟通的重要性,在处理单个表达式的生成与结果的计算时,就因为我们之间的沟通不到位导致生成的表达式与计算结果的函数应读入的表达式的格式不相符,导致我们花费了比预计长一倍的时间来进行格式的校正。

    此外,这次的结对编程其实就是在个人项目基础上的拓展需求,我们两人做个人项目的时候使用的都是C++语言,虽然C++完成个人项目比较轻松,但是在加需求,要求使用UI界面的时候,我们一开始尝试过使用QT,但是无功而返,对于这种情况,其实就是没有对需求变化做好足够分析,拓展性不强,通过这次的结对编程认知不足。

  • 相关阅读:
    现在的企业用到的Java开发主流框架有哪些
    StringBuffer清空
    java代码优化写法1(转摘)
    java代码优化写法(转摘)
    mysql常用
    java软引用、弱引用(转摘)
    mybtais分批insert
    大魔王降临cnblogs了~~
    tomcat去除项目名部署
    静态代码块、非静态代码块、构造函数的输出顺序
  • 原文地址:https://www.cnblogs.com/derzom/p/9750096.html
Copyright © 2011-2022 走看看