View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007


The Group

Abdul Abouniaj
Claudiu Fofiu
Younus Rashid
Lucian Andrioaie


The purpose of this project to design and program a small investment portfolio manager application. The application is to manage for a given individual user a set of portfolios containing different types of accounts. From time to time, we had milestones to break up this big project into smaller projects which evolves into a useful application for managing financial information.


We first started the project with creating simple accounts with different types which are:
For each account, it has its own rules and its own way and types of transactions.

1- Fixed Savings: Fixed Savings have two types of transactions which we can process. We have the deposite transaction (which increases the balance by the amount deposited), and the withdrawal transaction (which will decrease the balance of the acount by the amount withdrawn). This account also has a fixed rate of interest. Once a timeperiod, the appropriate amount of interest (1/365 for daily, 1/12 for monthly, or 1 for yearly times current interest rate) is applied against the account and that amount is credited to the account as a special deposit. There are no monthly fees associated with this account. The balance on this account is expressed in terms of dollars. Overdrafts are not allowed (you cannot withdraw more than current balance). Balance can never be 0.

2- Equity Stock: Equity Stock has two types of transactions which we can process. We have the Buy transaction (which increases the balance by : Purchase Amount / Price per share at time of transaction), and the sell transaction (which decreases balance by: if sell to get specific amount, decrease balance by Desired Amount / Price per share; if sell by specific shares, decrease balance by number of shares specified). This account value (balance price per share) is volatile and needs to be computed via dynamic information. The balance can never be 0 (we do not allow floats, margin calls, short-selling, etc.) You cannot sell more shares than you own.

3- Equity Bond: Equity Bond has two types of transactions which we can process. It is pretty similar to the Equity Stock methods, but with different implementation. We have the Buy transaction (increases the balance by: Purchase amount/ Bond Face Value at time of transaction (cannot purchase partial bonds)). Also we have the Sell transaction (which decreases the balance by: Quantity of bonds sold. (cannot sell partial bonds)). This account value (balance bond price) is much less volatile than stocks but still varies each day. The balance can never be 0. You cannot sell more bonds than you own. Interest is credited to this bond, but the money received must go to either a FixedSavings account or an EquityStock account that is specified by the user.

Note that all accounts have an account identifier that is a string representing the name of the account, and an account number. Account numbers are unique within a particular name. (The concatenation of the account name and account number is always unique).

Based on these accounts, we created users to access their own financial managements to manage their different types of accounts by validating their username and password using the login menu. To make that looks better and easy to access and use, we implemented a very easy to use UI for the users to access their accounts theiry created portfolios in a fashion way to add and look up accounts previously added. Then, we moved on to be more specific on keeping track of the users information using the XML way of storing the data and information of the user so that everytime a user tried to login, then the user would realize that all his/her information is being loaded and working fine. In addition, we implemented a way to check the current stock prices over the web if the user has an equity stock account to buy and sell stocks. To make life easier, we created a way to search for a specific account for a specific user using the SQL statements for looking up account using the accounts' balance, name, or number. As well as having report statements to find out the normal, exception and full reports of the transaction for that user's account. Finally, we implemented all of our working code as a website. The website requires login from the user which is the username and password for that user. Once we check that the user's name and password is correct, then a space for query statements is ready for the user to have to search for a specific account.

Our Milestones

M1 - Create a basic set of accounts
M2 - Handle multiple users and portfolios. Create basic GUI
M3 - Design System
M4 - User Interface Design and Implementation
M5 - Monitor/Track stock activity from Web
M6 - Handle basic queries on system
M7 - Web-Enable the application

Hints for Future Students

Good luck and hope you guys enjoy this class like we did over here :)

Makers of the Squeak Environment, Please Read This

Our group faced lots of problems while using Squeak. One of the problems is that it always freezes for no reason! We would be working on the project and suddently it freezes and there is no way we can save the image or fileout our code. It crashed on me in the whole semester about 10 times or even more. I hope you can fix that bug. Also, the Squeak library is really useful. To make it much useful, please provide us with a well-documented procedures or information about the methods we can use for our assignments or projects. A good example would be the API for JAVA. It is very well-documented and very easy to use for our programs. Finally, try to make the SmallTalk code executable so we can use it for future usage like Java instead of having to use Squeak to compile our code and run the program.

The whole environment is not bad and I like the colorful windows and everything, but I hope you guys can fix these things to make Squeak a better environment to code SmallTalk in.

Finally, We Can Say ...

SmallTalk is a powerful pure Object-Oriented language. We can benefit a lot from it. We as a group felt that it made somethings easier such as accessing arrays or Collections instead of just looping through the arrays or the collections, we can just access any element by just using one method such as do, collect and so on. It is fantastic dealing with 3D designs and implementation and very easy to use for graphics, sounds and videos.
Overall, the class was really nice and interesting and we have learned a lot about design since this course was concentrating on the Object Oriented Analysis, Design, and Implementation. The best amazing thing we have learned in this class was CRC cards. Those CRC cards are life savers. They make life easy by having classes between your hands where you can just add responsibilities of that class with its collaborative classes with it. While implementing the project, every member had a set of those CRC cards to guide us on how to implement the project and a very artistic way. This course is interesting and we recommend it to everyone :)

Finally, all we can say is Good luck and hope you find this site helpful to get you going for this course :)

Link to this Page