Learning how to manage our financial status is an important lesson for all of us. More and more people choose to use digital tools to manage their wealth efficiently. In this idea, we target to build an accounting system to help people keep track of their income and expense. The system roughly include following functions:
This accounting system is designed for the use of multiple users. Each user could register for their own account and set their password according to the specific format. Then, they would have to log in to use the rest function of this system.
Assumption1: User could only access to this system via program terminal, they could not access to the user-information text file and programming code file of this system.
Assumption2: There is no limit on the total number of users and number of records owned by each user.
Assumption3: Each user would have a unique username. Creating accounts with the same username would be prohibited by the system.
When users log in to his account, his information will be loaded from his account file and stored in variables in the program.
Every time the user modifies his information, the system would modify the variables instead of the account file.
Whenever the user wants to log out, the information would then be written into the account file. This could avoid frequent access to the file which may cause low efficiency and long processing time.
Assumption: users will sign out and terminate the program after each operation.
Users could add many attributes of each income or expenses record.
Attributes include basic information such as amount, date, type, remarks, etc.
This information will be stored inside the users' specific file after the program terminates and would be extracted from the file when program reactivate.
The records could be deleted and edited at any time and file stored corresponding information would be updated accordingly.
Users could view their records by date, type, and account; They could search for each record by its date, type, account, and other attributes.
Users may also provide incomplete information about each attribute and still able to search for records.
Note: "Type" means the usage of money, i.e. What this money is used for (e.g. food, taxi, party, game). "Method" means the payment method (e.g. cash, creditcard, cheque).
A total of two line user interfaces will be displayed during the execution of the program.
The first one is the login interface where users would input username and password to log in to the system. They can also register their account in this interface.
The second interface is the main functionality displace interface where users would choose to execute different functions of this system.
Assumption: users may input invalid input during their operation, which requires an input-protected system to block those invalid input and ask users to re-enter their input.
The system would provide a statistical report of users’ financial state (e.g. monthly income and expenses, percentage of food expenses). The report would also be shown in the form of graphs.
The accounting system allows budget setting. The user would be able to set maximum expense. When expenses reach the budget, there should be an alert from the system.
- At most of the time, the system could be stopped and returned to the menu by inputting nothing and pressing Enter(except for adding records).
- The system allows NOT CHANGING the record by entering 0 when editing the records. It also allows Searching from/until the lower/upper bound by entering 0 when searching records by Amount/Date.
- When showing the records, if the type/method/remark is TOO LONG or there are TOO MANY kinds of them, there might be problems in output formatting. In this project, we assume the users would not input too long or too many kinds of records.