This project is created with the collabortion of two of my colleagues.
In this project we have created a GUI based social networking application (which we named it Beta) that manages posts and the social media accounts. Below are the requirements for implementing the project:
- Manage users, posts, followers, and newsfeed classes.
- Create text files that contain information about these classes.
- Users are of is two types: Individual and Business users
- Users can follow other users in the system
- User profile contains basic information: Profile photo, name, short biography, location, and birthdate.
- Individual users can post their information in their dashboard.
- A post can be live, picture, video, or text.
- Followers can like or dislike the post
- Business users can add additional information to their profile, such as website link. 10. Business users can also create advertisements
- Business users can advertise their products to users’ newsfeed based on their payment plan.
- Basic plan: 10AED sends to 5 users
- Silver plan: 30AED send to 10 users
- Golden plan: 40AED send to 15 users
- Newsfeed for a user only displays current week’s posts of the users he/she follows.
- User’s newsfeed notifies the birthdays within a week.
- Display newsfeed for a user on that date.
- Display the users that received the advertisements from the business.
Class names | Attributes | Behaviors |
---|---|---|
Manager | -users: User[] -posts: Posts[] -UserFilename:string -postsFilename:string |
+readUsers() +readPosts() |
User | + name:string +password: str +email:str + followers:User [] +posts: Posts [] |
+setname(string) +getstring(): string +setpassword(strring) +getpassword(): string +getNewsfeed(Newsfeed()) +setemail(string) +getemail(): string +setposts[Post] +getposts(): Post +setfollowers[User] +getfollowers(): User |
Individual | +maritalstatus: (single, married, divorced) | +setmaritalstatus(boolean) +getmaritalstatus():boolean |
Business | +websitelink: string +paymentPlan: (Basic plan, Silver plan, Golden plan) |
+setwebsitelink(string) +getwebsitelink(): string +setpaymentplan(string) +getpaymentplan(): string |
Profile | +profile_photo: png +username: string +birthdate: DATETIME +location: string + biography: string |
+setprofilephoto(png) +getprofilephoto(): png +setusername(string) +getusername(): string +setbirthdate(DATETIME) +getbirthdate(): DATETIME +setlocation(string) +getloaction(): string +setbiography(string) +getbiography(): string |
Newsfeed | + newsfeed= Posts{} + adsfeed= Ads{} | + post_hash: (Username:content) +post_ad: (Business_name: content) |
Post | +Username: User(name) +content: (live, picture, video or text) +like_num: int |
+setusername(User) +getterusername():User() +setcontent(string) +getcontent(): string +setlike_num(int) +getlike_num(): int |
Ads | +Business_name:User(name) +content: [live,picture,video or text] +ad_link: string + posts: Business(paymentPlan) |
+setbusinessname(User) +getbusinessname(): User() +setcontent(string) +getcontenxt(): string +setad_link(string) +getad_link(): string |
The individual and business classes could not be displayed in a graphical user interface. We were unable to do so for the advertisements as well. Moreover, we could not create the birthday notification and weekly updated posts.
- User.py : user classes
- Registration.py : register interface that saves the data to txt file
- User gui.py : the interface of user's newsfeed and account profile, enable the user to like posts and create a post either pic or text
- Posts.txt : saving file for posts created by user
- User.txt : saving file for users registered in the app