Zoo Management System
Hello Everyone,
My name is Ramy Tawfik, this is my ePortfolio to show my work for my CS-499 Computer Science Capstone, My final class of my Computer Science Degree, at Southern New Hampshire University.
I have learned many important concepts and skills in the Computer Science program. I learned how to use HTML/CSS in the IT-270 Web Site Design course, In my CS-250 I learned about the software development life cycle “ Agile and waterfall”. Agile methodology was a new concept for me, and I learned a lot of important information about it and how to use Agile methodology while developing a software product. I also learned about object-oriented programing concepts and gained important skills when I develop software using different programming languages. I also learned C++ in my IT-312 Software Devel w/C++.Net class and made a final project using C++LCR-Game, Java in my IT-145 Foundation in App Development class. In CS-320 Q1397 Software Test, Automation& QA Class I learned a lot of skills in software testing and how important to test my software application. I also learned other skills from my Math and Statistics classes that I will use such as problem-solving skills and critical thinking skills. CS-260 Data Structures and Algorithms class taught me a lot of important concepts in the data structure and algorithms and how too choose the write thing upon the situation. Other courses that I really like the skills and knowledge I learned from them are
- IT-365 Operating Environments,
- DAT-220 Fundamentals of Data Mining,
- IT-390 Mobile Apps Design & Develop,
- CS-330 J2330 Comp Graphic and Visualization,
- IT-255 Intro to Linux Operating Sys.
These are a few examples of what I have learned over the last years during my education journey at SNHU.
Completing my Computer Science degree at SNHU gave me a lot of experience and skills that I will need in my future career as a Software developer. Not just gave me knowledge but taught me how to continually learn and seek new skills and challenges. During my learning journey at SNHU, I’ve learned C++, Java, and Python. So, for my Final Project, I choose to do it using a new programming language C# because this will give me a chance to learn C# and learn new skills and face new challenges. I will use C# and Windows Forms to develop my project and also to learn new skills.
Selected artifact
I will be working on the final project for IT-145 which I developed using Java more than a year ago. The project was developing a console application as an authentication system for a Zoo
Existing functionality
The application was required to follow this scenario
- Ask a user for a username.
- Ask a user for a password.
- Convert the password using a message digest five (MD5) hash.
- Check the credentials against the valid credentials provided in the file (use the hashed passwords in the second column; the third column contains the actual passwords for testing).
- Limit failed attempts to three before notifying the user and exiting.
- After successful authentication, uses the role in the credential file to display the correct system information loaded from the specific role file.
- Allow a user to log out.
- Stays on the credential screen until either a successful attempt has been made, three unsuccessful attempts have been made, or a user chooses to exit.
Code Review
Enhancement
My enhancement for the selected project will be three key categories
- Software design and engineering
- Algorithms and data structure
- Databases
Software design and engineering
- Redesigned the project and changed the programing language to C#.
- Use Windows Forms to develop the application.
- Designed Login Form, Admin Form, and Zookeeper Form using windows forms.
- Expanded the application complexity and functionality.
- Added Admin Functionality Admin Form
- View users
- View total user count.
- Add user functionality.
- Added update user functionality. Update user Form
- Added Zookeeper Functionality ZooKeeper Form
- view animals by Class, Status, and Species.
- update animal info.
- search/view animals.
- Search animal by Class / Species / Name / Status. Search Form
- Add animal. Add Animal
- Converted the password using a message digest five (MD5) hash. Enhance security.
Algorithms and data structure
Used object-oriented programming concepts to design and developed this application I also used algorithms and data structures skills to create a more organized and deficient application.
public enum UserRole
{
Admin,
ZooKeeper
}
public class User
{
private int ID;
private string firstName;
private string lastName;
private string username;
private userRole role;
public int userID { get => ID; set => ID = value; }
public string FirstName { get => firstName; set => firstName = value; }
public string LastName { get => lastName; set => lastName = value; }
public userRole Role { get => role; set => role = value; }
public string Username { get => username; set => username = value; }
public string DisplayName()
{
return this.firstName + " " + this.lastName;
}
}
public enum AnimalClass
{
Amphibian,
Bird,
Mammal,
Reptile
}
public class Animal
{
private int ID;
private AnimalClass animalClass;
private string animalName;
private string species;
private string gender;
private AnimalStatus status;
private DateTime lastFeed;
public int AnimalID { get => ID; set => ID = value; }
public string AnimalName { get => animalName; set => animalName = value; }
public string Species { get => species; set => species = value; }
public AnimalStatus Status { get => status; set => status = value; }
public DateTime LastFeed { get => lastFeed; set => lastFeed = value; }
public AnimalClass AnimalClass { get => animalClass; set => animalClass = value; }
public string Gender { get => gender; set => gender = value; }
public override string ToString()
{
string animalSt;
animalSt = String.Format("{0,-25}: {1}\t\n{2,-25}: {3}\t\n{4,-25}: {5}\t\n{6,-25}: {7}\t\n{8,-25}: {9}\t\n{10,-25}: {11}\t\n",
"Animal Name", animalName,
"Animal Class", animalClass.ToString(),
"Animal Species", species.ToString(),
"Animal Status", status.ToString(),
"Animal Gender", gender,
"Last Feed", lastFeed.ToString());
return animalSt;
}
}
I also Used Lists to store data retrieved from the SQL database.
//Array List to save animals data
ArrayList animalList = new ArrayList();
// ArrayList to save Users list retrieved from the Database
private ArrayList userList = new ArrayList();
Implemented Search features to Admin and Zookeeper forms to search animals by Class, Species, Status, and name. Looking at The number of records for animals and users I see that no advanced search algorithms are needed so I only implemented a linear search but in different situations, we will need different search algorithms such as binary search.
foreach (Animal item in animalList)
Databases
The original application was developed to save data into a text file and that is not secure and not practical. The enhancement of the database category was essential.
- Created a remote MySQL database.
- Hosted the MySQL database remotely on a hosting server to be accessible from anywhere
- Designed user’s and animals’ tables and columns.
- Populated the animal’s table with data “ Class, Species, Status” retrieved from the Philadelphia zoo website.
- Used SQL parameters to pass values to SQL queries to avoid SQL injection.
- Created search, update, add features to Admin and Zookeeper forms.
