Extreme Programming: Implementation of the THEMIS Group's scientific interest Rate calculator

THEMIS-EE308 团队账号 2023-11-21 14:23:01
Course for This Assignment2301-MUSE
Assignment RequirementsExtreme Programming
Objectives of This AssignmentTeams collaborate efficiently to complete the scientific interest rate calculator.
Other ReferencesN / A


  • 1. Project Address
  • 2. Screenshots of Github Commit Logs & Commit Times
  • Commit times: 5
  • 3. Functional Implementation Ideas
  • 3.1. Registration and Login Module
  • 3.2. Scientific Calculator Functions
  • 3.3. Interest Rate Calculator
  • 3.4. Integration of Uniapp and Cloud Development
  • 3.5. Security and Maintainability
  • 4. Screenshots and Complete Running Video of Our Program
  • 4.1. Screenshots(Main Pages)
  • 4.1.1. login page
  • 4.1.2. scientific_calc page
  • 4.1.3. profit_calc page
  • 4.1.4. profit_info_settings page
  • 4.2. Running Video
  • 4.2.1. login page navigator to other page
  • 4.2.2. profit_info_settings page
  • 4.2.3. profit_calc page
  • 4.2.4. scientific_calc page
  • 4.3. Partial Code
  • 5. Division of Labor and The Ratio of Workload in This Assignment
  • 6. Difficulties encountered in cooperation and solutions
  • 7. PSP Table

1. Project Address

Github Repository Adress

2. Screenshots of Github Commit Logs & Commit Times

Screenshot taken at 21:37, November 19, 2023.


Commit times: 5


3. Functional Implementation Ideas


3.1. Registration and Login Module

  • During user registration, we'll collect basic information such as usernames and passwords. This data will be sent to the backend for validation.
  • In the login process, security measures will be implemented, such as encrypting passwords to ensure the confidentiality of user information.
  • Upon successful login verification, user information will be stored in a session for maintaining login status throughout the session. We'll also implement error-handling mechanisms to promptly notify users of potential issues.

3.2. Scientific Calculator Functions

  • We plan to implement a range of scientific calculator functions, including basic operations (addition, subtraction, multiplication, division), trigonometric functions, exponential functions, etc., catering to diverse user calculation needs.
  • The user interface will be designed to be intuitive and user-friendly, ensuring easy access to all functionalities.
  • We'll consider various possible edge cases and error-handling scenarios to enhance the system's stability. For instance, providing friendly error messages for division by zero situations.

3.3. Interest Rate Calculator

  • The interest rate table will be stored in the backend database, ensuring the dynamic nature of interest rate information. We'll provide an administrative interface for administrators to update the interest rate table at any time.
  • On the frontend, we'll implement two input boxes to capture user input for deposit/loan amount and duration. This data will be sent to the backend for calculation using the interest rate table in the database.
  • To ensure data accuracy, we'll persistently fetch interest rates from the backend database without relying on caching.

3.4. Integration of Uniapp and Cloud Development

  • We've chosen Uniapp for its cross-platform capabilities, allowing us to deploy the application on multiple platforms, leveraging its rich component library.
  • Cloud development will be utilized to simplify backend development, particularly in handling the database. We'll make full use of cloud functions and real-time databases to implement real-time and asynchronous functionalities.
  • This integration not only enhances development efficiency but also makes the application more scalable and maintainable.

3.5. Security and Maintainability

  • Access control and data encryption will be implemented to ensure the security of user data. User passwords will be encrypted using hash algorithms.
  • Regular data backups are a crucial step to address potential data loss scenarios. Additionally, we'll establish fault-tolerant mechanisms to ensure the system operates smoothly in the face of exceptional situations.
  • While writing code, we'll focus on a well-structured codebase and comprehensive comments to facilitate future maintenance efforts.

4. Screenshots and Complete Running Video of Our Program

4.1. Screenshots(Main Pages)

4.1.1. login page


4.1.2. scientific_calc page


4.1.3. profit_calc page


4.1.4. profit_info_settings page


4.2. Running Video

4.2.1. login page navigator to other page


4.2.2. profit_info_settings page


4.2.3. profit_calc page


4.2.4. scientific_calc page


4.3. Partial Code

    change(e) {
        return this.interestRate = e;
    async _intiProfitList() {
        if (this.profitList) return
        const profitList = await this.$http.get_profit();

profitList_fixed() {
                const fixed = [...this.$store.state.profitList.filter(item => item.type === "fixed")];
                // console.log(fixed);
                return fixed[0].option;
                // return [...this.$store.state.profitList.filter(item => item.type==="fixed")];
            profitList_current() {
                // console.log(current);
                const current = [...this.$store.state.profitList.filter(item => item.type === "current")];
                return current[0].option;
            profitList_loans() {
                // console.log(loans);
                const loans = [...this.$store.state.profitList.filter(item => item.type === "loans")];
                return loans[0].option;
                // return [...this.$store.state.profitList.filter(item => item.type==="current")];
            DateDiff() {
                var aDate, oDate1, oDate2, iDays;
                aDate = this.sDate1.split("-");
                oDate1 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]); //转换为yyyy-MM-dd格式
                aDate = this.sDate2.split("-");
                oDate2 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]);
                iDays = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 / 24); //把相差的毫秒数转换为天数
                return iDays + 1; //返回相差天数
// cloudfunction
'use strict';
const db = uniCloud.database()
exports.main = async (event, context) => {
    const collection = db.collection('profit')
    const res = await collection.get()
    return {

5. Division of Labor and The Ratio of Workload in This Assignment

Student IDUserWork DescriptionContribution
832101125Jie HuangProject planning, software testing.7.00%
832101128Daming FuImplemented functionality to accept user-modified interest rates.7.00%
832101109Hongming ChenImplemented functionality to retrieve deposit/loan interest rate table.6.90%
832101108Jiayi LuImplemented functionality to store calculations and return results.6.50%
832101229Lin BaoFrontend design for the scientific calculator.6.70%
832101123Minghao GaoFrontend design for the interest rate calculator.7.00%
832101220Siqi LinFrontend design, integration of frontend and backend, backend review.16.00%
832101121Weijie HongCompleted registration and login module.6.90%
832101116Wenxuan ZhouImplemented functionality to record history in the database.6.60%
832101211Xinyun LiDesign of the login interface.3.00%
832101104Yuxiang SuImplemented functionality to calculate deposit/loan interest.6.70%
832101127Yuxin PengImplemented functionality to calculate deposit/loan interest rates.6.70%
832101207Yuyang HuaDesign of the interest rate calculator interface.3.00%
832101202Zhipeng WangImplemented functionality to transmit data to the database.7.00%
832101217Zhaoqing LinFrontend design for the scientific calculator.3.00%

6. Difficulties encountered in cooperation and solutions

Jie HuangUncertain about how to organize efficient team collaboration.Establish a clear project plan and track progress of each team member.
Daming FuUnsure how to call API interfaces.Refer to the Mini Program development documentation.
Hongming ChenLacks understanding of interest rate calculation methods.Consult bank-related calculation methods for reference.
Jiayi LuFacing difficulties in frontend-backend collaboration.Refer to documentation and collaborate closely with peers.
Lin BaoIssues with proportion control in interface design.Define a standardized format for interface proportions.
Minghao GaoUncertain about interface navigation.Consult the development documentation.
Siqi LinDoesn't know how to update data operations.Refer to development documentation and communicate with peers.
Weijie HongEncountering challenges in designing different interfaces.Discuss with peers.
Wenxuan ZhouUnclear about database storage logic and organization.Discuss with peers, search online, and learn.
Xinyun LiConsidering which font to use for the interface.Review specific effects and make modifications.
Yuxiang SuUnsure how to pass parameters.Consult the development community.
Yuxin PengFacing challenges in maintaining consistency across different platforms.Optimize based on testing.
Yuyang HuaConsidering which color to use for the interface.Reference design manuals.
Zhipeng WangUnsure how to effectively debug.Collaborate closely with development peers.
Zhaoqing LinUncertain about how to better design interface layout.Experiment with design tools.

7. PSP Table


Personal Software Process StagesEstimated Time (minutes)Actual Time (minutes)
• Estimate3040
• Analysis120180
• Design Spec6030
• Design Review2020
• Coding Standard3030
• Design6030
• Coding600700
• Code Review6060
• Test180120
• Test Report120160
• Size Measurement1010
• Postmortem & Process Improvement Plan5045


Personal Software Process StagesEstimated Time (minutes)Actual Time (minutes)
• Estimate3040
• Analysis120180
• Design Spec6030
• Design Review2020
• Coding Standard3035
• Design6030
• Coding700700
• Code Review6060
• Test200120
• Test Report120160
• Size Measurement1010
• Postmortem & Process Improvement Plan5045
20 回复 打赏 收藏 转发到动态 举报



软件工程 高校 福建省·福州市
  • LinQF39
  • Jcandc
  • 助教-陈锦辉
  • 近7日
  • 近30日
  • 至今