Description
You are a team of developers. Judy (from ID Software) has a boyfriend named Bob Lucky. He would like to order an ERP software for his computer games shop from you. Your task is to develop a small prototype in Python before the contract. An external software architect, Bill Gates has created a skeleton code for the project. Bill would like to improve your skills in implementing algorithms, so he asks you not to use some of the built-in functions (see below).
Specification
An important rule
Don not use these built-in functions:
sum()
, sort()
, sorted()
, print()
, input()
, find()
, index()
, count()
in any module. If you are allowed to use it in a module, it is indicated in this specification document, otherwise it’s forbidden (and we will check it :) ).
Menu
The entry point of the software is main.py
. It shows the main menu, from which
we can jump to submenus (menus implemented in modules). Users should be able to
go back to the main menu from any submenu, so each submenu must have an option
to do this ( (0) Go back to the main menu ).
You must always run main.py, not the modules themselves! You don’t have to change the imports.
Each submenu has a set of options. By selecting one of them you run specified feature. The default features are: Show table, Add new item, Update item, Remove item.
ui.py
It contains the skeleton and description of the functions you should implement.
The print()
and input()
functions are allowed only in this module.
data_manager.py
This module is already implemented, don’t touch it, but use it! :) There are two functions that you can use to write a table out to a file or read a table from a file. This ERP software uses tables (list of lists) to store data in memory. You must use only this module for file access.
common.py
Implements commonly used functions to increase code cleanness. Any function that is used in more than one file should be placed here. In short, this module will help you to avoid copy-pasting.
Modules
Each module has its own directory and contains the following files:
.py
source file with the same name as the module (for exampleaccounting.py
in the/accounting
directory): It contains the data structure of the input file in the header comment. It also contains the skeleton and description of the functions you should implement. You are allowed to modify only this file inside the module’s directory! You need to implement these features:- module menu similar to main.py
- basic features: list, add, remove, update (CRUD - Create, Read, Update, Delete)
- special features
- data test file : please do not touch it
- data file : you can use it in the .py source file. Please do not modify by hand.
Other rules
- Each team member must implement at least one of these: a module or ui.py or common.py.
- ui.py and common.py must be implemented.
- You are not allowed to create new files in the whole project, but you can make new functions.
- You are not allowed to import external libraries (except the given ones).
- You must implement all the skeleton functions in a module.
Bonus task (nice to have)
You must implement all the modules before starting the bonus task.
Create a bonus module. Find out the details, figure out the special functions. Get a data file and implement the module.
LINK
Plan your project
Before starting to code, plan your project. Create a Spreadsheet that will hold all your tasks. It should consist of following columns:
- ID - unique identifier of the task.
- Module - module which this task refers to.
- Name - short task name.
- Description - detailed description of the task.
- Difficulty - this is a prediction how difficult this task is. Try to predict it.
- Owner - the person responsible for completion of this task.
- Status - tasks status - Todo/In progress/Done.
- Completion date - day when the task was completed. (Important for reporting purposes
Here’s a sample table:
ID | Module | Name | Description | Difficulty | Owner | Status | Completion Date |
---|---|---|---|---|---|---|---|
1 | ui | Implement table printing | Implement function that prints beautiful table. This function should only print table, there should be no return statement. | 1 | User1 | Done | 2016-12-10 |
2 | store | Implement get average function | Implement function that returns the average number of games by given manufacturer. The function shouldn’t print anything it should return a float number. | 5 | User2 | In progress |
Share this document with mentors (with edit permissions). Remember to keep it updated because it’ll help us measure your teamwork.
GitHub Classroom project
Here you can find the Github repository as your team assignment. Please accept the invitation: BP/MSC invitation: http://go.code.cool/pbwp-lw-erp
KRK invitation: https://classroom.github.com/g/biC9EkM3
Submission
Please submit an URL for your project repository.
You should summarize for every team member, which module(s) did (s)he implement. As the project assignment described, each teammate must have implemented at least one module, and User interface (ui.py) and Common (common.py) modules must have been implemented.
Please make a comment on your submission using the following format (don’t forget to change the example texts to real names)
**Accounting module (accounting.py):** __Codecooler Name__
**Customer Relationship Management (CRM) (crm.py):** __Codecooler Name__
**Human resources module (hr.py):** __ Codecooler Name__
**Selling module (selling.py):** __ Codecooler Name__
**Store module (store.py):** __ Codecooler Name__
**Tool manager module (inventory.py):** __ Codecooler Name__
**User Interface (ui.py) and Common (common.py):** __ Codecooler Name__
This exercise deepens your Python knowledge, improves your skill to write clean code, boosts your ability to conform to requirements, to work with a version control system, and to work together as a team.