rohit35

Tweet file

Mar 16th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.96 KB | None | 0 0
  1. #ifndef _MY_TWEET_LIST
  2. #define _MY_TWEET_LIST 1
  3. typedef struct tweet_t
  4. {
  5. void *content;
  6. void *likes;
  7. void *date;
  8. void *active;
  9. struct tweet_t *next_tweet;
  10. } tweet_t;
  11.  
  12. typedef struct liked_by
  13. {
  14. void *data;
  15. struct liked_by *next;
  16. } liked_by;
  17.  
  18. int *likes_inc(void *likes);
  19.  
  20. liked_by* create_liked_by()
  21. {
  22. liked_by *line = (liked_by*)calloc(1,sizeof(liked_by));
  23. return line;
  24. }
  25.  
  26. tweet_t *create_userpage()
  27. {
  28. tweet_t *cur=(tweet_t*)calloc(1,sizeof(tweet_t));
  29. cur->next_tweet=NULL;
  30. cur->active=create_liked_by();
  31. return cur;
  32. }
  33.  
  34. void userpage(void *idx,list_t *users)
  35. {
  36. node_t *a= idx;
  37. system("color 07");
  38. user_t *acc =(user_t*)a->data;
  39. char *cur =(char*)acc->name;
  40. printf("\t \t \twelcome %s\n\n",cur);
  41. int choice,active=0;
  42. char c='y';
  43. while(c=='y' ||c=='Y')
  44. {
  45. printf("\t \t \tUserpage\t \tOnline:%d Members\n\n",users->size);
  46. printf("\t \t \tpress 1 for entering a Tweet\n");
  47. printf("\t \t \tpress 2 for viewing all tweets\n");
  48. printf("\t \t \tpress 3 for tweet by username\n");
  49. printf("\t \t \tpress 4 for liking a tweet\n");
  50. printf("\t \t \tpress 5 for settings\n");
  51. printf("\t \t \tpress 6 for logout\n");
  52. printf("\t \t \tEnter your choice\n");
  53. printf("\t \t \t");
  54. scanf("%d",&choice);
  55. switch(choice)
  56. {
  57. case 1:
  58. entering_tweet(acc);
  59. break;
  60. case 2:
  61. viewing_tweets(users);
  62. break;
  63. case 3:
  64. tweet_by_username(users,acc);
  65. break;
  66. case 4:
  67. liking_tweet(users,acc);
  68. break;
  69. case 5:
  70. active=setting(users,acc);
  71. if(active==1)
  72. {
  73. c='N';
  74. }
  75. break;
  76. case 6:
  77. c='N';
  78. break;
  79. default:
  80. status();
  81. break;
  82. }
  83. }
  84. fflush(stdin);
  85. clear();
  86. system("cls");
  87. }
  88. void entering_tweet(user_t *acc)
  89. {
  90. system("cls");
  91. printf("\t \t \t<<Entering Tweet>>>\n\n");
  92. tweet_t *cur=(tweet_t*)calloc(1,sizeof(tweet_t));
  93. char *content = (char*)malloc(512*sizeof(char));
  94. char *date = (char*)malloc(512*sizeof(char));
  95. printf("\t \t \tEnter the content\n");
  96. printf("\t \t \t");
  97. fflush(stdin);
  98. gets(content);
  99. printf("\t \t \tEnter the date\n");
  100. printf("\t \t \t");
  101. fflush(stdin);
  102. gets(date);
  103. if(strlen(content) == 0)
  104. {
  105. printf("\t \t \tplease enter the content \n");
  106. printf("\t \t \t");
  107. gets(content);
  108. }
  109. if(strlen(date)==0)
  110. {
  111. printf("\t \t \tplease Enter the date\n");
  112. printf("\t \t \t");
  113. gets(date);
  114. }
  115. cur->content = word(content);
  116. cur->date = word(date);
  117. cur->active=NULL;
  118. cur->next_tweet = NULL;
  119. if(acc->pointer==NULL)
  120. {
  121. acc->pointer=cur;
  122. }
  123. else
  124. {
  125. tweet_t *p=(tweet_t*)acc->pointer;
  126. while(p->next_tweet!=NULL)
  127. {
  128. p=p->next_tweet;
  129. }
  130. p->next_tweet=cur;
  131. }
  132. system("cls");
  133. }
  134. void viewing_tweets(list_t *users)
  135. {
  136. system("cls");
  137. system("color 09");
  138. printf("\t \t \t<<<Viewing All Tweets>>>\n\n");
  139. display(users);
  140. clear();
  141. system("cls");
  142. }
  143. void tweet_by_username(list_t *users,user_t *yourid)
  144. {
  145. system("cls");
  146. system("color 01");
  147. char name[512];
  148. int flag=0;
  149. printf("\t \t \t<<<Tweet By Username>>>\n\n");
  150. printf("\t \t \tEnter the username\n");
  151. printf("\t \t \t");
  152. scanf("%s",name);
  153. node_t *li = NULL;
  154. user_t *user = NULL;
  155. int idx=0,pos=0;
  156. char *character;
  157. for(li = users->head; li!=NULL ; li =li->next)
  158. {
  159. user = (user_t*)li->data;
  160. if(compare_name(li,name))
  161. {
  162. system("cls");
  163. flag++;
  164. printf("\t \t \t<<<Tweet By Username>>>\n\n");
  165. printf("\t \t \tUsername:%s\n",((char*)user->name));
  166. printf("\t \t \tUser Id:%s\n",((char*)user->id));
  167. tweet_t *page=(tweet_t*)user->pointer;
  168. liked_by *current = NULL;
  169. while(page!=NULL)
  170. {
  171. printf("\t \t \t%d)Content:%s\n",(idx+1),((char*)page->content));
  172. character = (char*)page->date;
  173. printf("\t \t \tDate:");
  174. for(pos = 0; character[pos] !='\0'; pos++)
  175. {
  176. if(pos == 2 || pos ==4)
  177. {
  178. printf("-%c",character[pos]);
  179. }
  180. else
  181. {
  182. printf("%c",character[pos]);
  183. }
  184. }
  185. printf("\n");
  186. printf("\t \t \tLikes:%d\n",((int*)page->likes));
  187. printf("\t \t \tLiked By:");
  188. current =(liked_by*)page->active;
  189. if(current==NULL)
  190. {
  191. printf("NULL\n");
  192. }
  193. else
  194. {
  195. while(current!=NULL)
  196. {
  197. printf("%s,",((char*)current->data));
  198. current=current->next;
  199. }
  200. printf("others\n");
  201. }
  202. page=page->next_tweet;
  203. idx+=1;
  204. }
  205.  
  206. }
  207. if(flag!=0)
  208. {
  209. break;
  210. }
  211. }
  212. if(idx==0 && flag==0)
  213. {
  214. printf("\t \t \tNOt Available\n");
  215. }
  216. else if(idx ==0)
  217. {
  218. printf("\t \t \tNo Tweets to display\n");
  219. }
  220. fflush(stdout);
  221. clear();
  222. system("cls");
  223. }
  224. void liking_tweet(list_t *users,user_t *acc)
  225. {
  226. system("cls");
  227. system("color 03");
  228. printf("\t \t \t<<<Liking a Tweet>>>\n\n");
  229. display(users);
  230. if(tweet_list(users))
  231. {
  232. char number[512];
  233. printf("\t \t \tEnter the id number of the user\n");
  234. printf("\t \t \tYou want to like a tweet\n");
  235. printf("\t \t \t");
  236. scanf("%s",number);
  237. void *pos=search_user_tweets(number,users);
  238. if(pos==NULL)
  239. {
  240. printf("\t \t \tInvalid id\n");
  241. }
  242. else
  243. {
  244. system("cls");
  245. int choice;
  246. int total=all_contents(pos);
  247. if(total!=0)
  248. {
  249. printf("\t \t \tEnter The Content Number You Want to Like\n");
  250. printf("\t \t \t");
  251. scanf("%d",&choice);
  252. if(choice!=0 && choice<=total )
  253. {
  254. user_t *cur=(user_t*)pos;
  255. tweet_t *store=(tweet_t*)cur->pointer;
  256. choice-=1;
  257. while(store!=NULL && choice--)
  258. {
  259. store=store->next_tweet;
  260. }
  261. if(check_user(store,acc))
  262. {
  263. store->likes=likes_inc(store->likes);
  264. liked_by *current =(liked_by*)calloc(1,sizeof(liked_by));
  265. current->data=acc->name;
  266. current->next=NULL;
  267. if(store->active == NULL)
  268. {
  269. store->active=current;
  270. }
  271. else
  272. {
  273. liked_by *pos = (liked_by*)store->active;
  274. current->next = pos;
  275. store->active= current;
  276. }
  277. }
  278. else
  279. {
  280. printf("\t \t \tYou have already liked That Tweet\n");
  281. }
  282.  
  283. }
  284. }
  285. else
  286. {
  287. printf("\n\t \t \tThere are no tweets\n");
  288. }
  289. }
  290. }
  291. else
  292. {
  293. printf("\t \t \tNo tweets to like\n");
  294. }
  295. clear();
  296. system("cls");
  297. }
  298. int *likes_inc(void *likes)
  299. {
  300. int *idx=(int*)malloc(sizeof(int)*1);
  301. if(((int*)likes ) == 0)
  302. {
  303. idx=1;
  304. return idx;
  305. }
  306. else
  307. {
  308. int num=((int*)likes);
  309. idx= (num)+1;
  310. return idx;
  311. }
  312. }
  313. int tweet_list(list_t *users)
  314. {
  315. int flag=0;
  316. node_t *li = NULL;
  317. user_t *user = NULL;
  318. tweet_t *page = NULL;
  319. liked_by *cur = NULL;
  320. for(li=users->head; li!=NULL; li=li->next)
  321. {
  322. user=(user_t*)li->data;
  323. page =(tweet_t*)user->pointer;
  324. while(page!=NULL)
  325. {
  326. if(((char*)page->content) != NULL)
  327. {
  328. flag++;
  329. }
  330. page=page->next_tweet;
  331. }
  332. }
  333. return flag;
  334. }
  335. int compare(void *str1,void *str2)
  336. {
  337. char *s =(char*)str1;
  338. char *p =(char*)str2 ;
  339. if(strcmp(s,p)==0)
  340. return 1;
  341. else
  342. return 0;
  343. }
  344. int check_user(tweet_t *store,user_t *acc)
  345. {
  346. liked_by *current =(liked_by*)store->active;
  347. while(current!=NULL)
  348. {
  349. if(compare(current->data,acc->name))
  350. {
  351. return 0;
  352. }
  353. current=current->next;
  354. }
  355. return 1;
  356. }
  357. int all_contents(void *pos)
  358. {
  359. int idx=0,position=0;
  360. user_t *cur=(user_t*)pos;
  361. printf("\t \t \t User Details\n\n");
  362. printf("\t \t \tUsername:%s\n",((char*)cur->name));
  363. printf("\t \t \tId:%s\n",((char*)cur->id));
  364. tweet_t *data=(tweet_t*)cur->pointer;
  365. liked_by *names;
  366. char *character;
  367. printf("\t \t \tContent Num:Content\n");
  368. while(data!=NULL)
  369. {
  370. printf("\t \t \t %d :%s\n",(idx+1),((char*)data->content));
  371. character = ((char*)data->date);
  372. printf("\t \t \tDate:");
  373. for(position =0; character[position] !='\0'; position++)
  374. {
  375. if(position ==2 || position ==4)
  376. {
  377. printf("-%c",character[position]);
  378. }
  379. else
  380. {
  381. printf("%c",character[position]);
  382. }
  383. }
  384. printf("\n");
  385. printf("\t \t \tLikes:%d\n",((int*)data->likes));
  386. printf("\t \t \tLIked By:");
  387. idx++;
  388. names=(liked_by*)data->active;
  389. if(names==NULL)
  390. {
  391. printf("NULL\n");
  392. }
  393. else
  394. {
  395. while(names!=NULL)
  396. {
  397. printf("%s,",((char*)names->data));
  398. names=names->next;
  399. }
  400. printf("others\n");
  401. }
  402. data=data->next_tweet;
  403. }
  404. if(idx==0)
  405. {
  406. printf("\t \t \tNULL :NULL");
  407. }
  408. return idx;
  409. }
  410. void display(list_t *users)
  411. {
  412. node_t *idx = NULL;
  413. user_t *acc = NULL;
  414. tweet_t *page = NULL;
  415. liked_by *current =NULL;
  416. int i=0,pos=0;
  417. char *character;
  418. for(idx=users->head; idx!=NULL; idx=idx->next)
  419. {
  420. acc=(user_t*)idx->data;
  421. printf("\t \t \tUsername:%s\n",((char*)acc->name));
  422. printf("\t \t \tUser Id:%s\n",((char*)acc->id));
  423. page=(tweet_t*)acc->pointer;
  424. while(page!=NULL)
  425. {
  426. printf("\t \t \t%d)Content:%s\n",(i+1),((char*)page->content));
  427. printf("\t \t \tDate:");
  428. character = (char*)page->date;
  429. for(pos =0; character[pos] !='\0'; pos++)
  430. {
  431. if(pos ==2 || pos ==4)
  432. {
  433. printf("-%c",character[pos]);
  434. }
  435. else
  436. {
  437. printf("%c",character[pos]);
  438. }
  439. }
  440. printf("\n");
  441. printf("\t \t \tLikes:%d\n",((int*)page->likes));
  442. printf("\t \t \tLiked By:");
  443. current =(liked_by*)page->active;
  444. if(current==NULL)
  445. {
  446. printf("NULL\n");
  447. }
  448. else
  449. {
  450. while(current!=NULL)
  451. {
  452. printf("%s,",((char*)current->data));
  453. current=current->next;
  454. }
  455. printf("others\n");
  456. }
  457. page=page->next_tweet;
  458. i+=1;
  459. }
  460. if(i==0)
  461. {
  462. printf("\t \t \tContent:NULL\n");
  463. printf("\t \t \tDate:NULL\n");
  464. printf("\t \t \tLikes:0\n");
  465. printf("\t \t \tLiked By:NULL\n");
  466. }
  467. i=0;
  468. printf("\n");
  469. }
  470. }
  471. int setting(list_t *Users,user_t *Acc)
  472. {
  473. system("color 05");
  474. int choice,loop=1,act=0;
  475. while(loop)
  476. {
  477. printf("\n");
  478. system("cls");
  479. printf("\t \t \t<<< Settings>>>\n\n");
  480. printf("\t \t \tEnter 1 for Account Settings\n");
  481. printf("\t \t \tPress 2 for privacy Settings\n");
  482. printf("\t \t \tPress 3 for Back\n");
  483. printf("\t \t \tEnter your choice\n");
  484. printf("\t \t \t");
  485. scanf("%d",&choice);
  486. switch(choice)
  487. {
  488. case 1:
  489. system("color 09");
  490. act=Account_settings(Users,Acc);
  491. if(act==1)
  492. {
  493. loop=0;
  494. }
  495. break;
  496. case 2:
  497. system("color 07");
  498. privacy_settings(Acc);
  499. break;
  500. case 3:
  501. loop=0;
  502. break;
  503. default:
  504. status();
  505. break;
  506. }
  507. }
  508. system("cls");
  509. return act;
  510. }
  511. int Account_settings(list_t*Users,user_t *Acc)
  512. {
  513. printf("\n");
  514. int choice,loop=1,active;
  515. while(loop)
  516. {
  517. printf("\n");
  518. system("cls");
  519. printf("\t \t \t<<<Account Settings>>>\n\n");
  520. printf("\t \t \tpress 1 for your profile\n");
  521. printf("\t \t \tpress 2 for Deleteing All your Tweets\n");
  522. printf("\t \t \tpress 3 for Deleteing your Account\n");
  523. printf("\t \t \tpress 4 for Back\n");
  524. printf("\t \t \tEnter your choice\n");
  525. printf("\t \t \t");
  526. scanf("%d",&choice);
  527. switch(choice)
  528. {
  529. case 1:
  530. profile(Acc);
  531. break;
  532. case 2:
  533. Deleting_your_Tweets(Acc);
  534. break;
  535. case 3:
  536. active=Deleting_your_Account(Users,Acc);
  537. loop=0;
  538. // return 1;
  539. break;
  540. case 4:
  541. loop=0;
  542. break;
  543. default:
  544. status();
  545. break;
  546. }
  547. }
  548. clear();
  549. system("cls");
  550. return active;
  551. }
  552. void profile(user_t *Acc)
  553. {
  554. printf("\t \t \t<<<Profile>>>\n\n");
  555. printf("\t \t \tName:%s\n",((char*)Acc->name));
  556. printf("\t \t \tId:%s\n",((char*)Acc->id));
  557. printf("\t \t \tPassword:%s\n",((char*)Acc->password));
  558. clear();
  559. fflush(stdout);
  560. system("cls");
  561. }
  562. void Deleting_your_Tweets(user_t *Acc)
  563. {
  564. printf("\t \t \t<<Deleting Tweets>>>\n\n");
  565. char var[]="NULL";
  566. Acc->pointer = NULL;
  567. printf("\n");
  568. printf("\t \t \t All Tweets have Been Deleted\n");
  569. clear();
  570. system("cls");
  571. }
  572. int Deleting_your_Account(list_t *Users,user_t *Acc)
  573. {
  574. printf("\t \t \t<<<Deleting Account>>>\n\n");
  575. node_t* li = NULL,*pos =Users->head;
  576. user_t *user = NULL,*cur;
  577. char *id =(user_t*)Acc->id;
  578. char *name =(user_t*)Acc->name;
  579. char *password = (user_t*)Acc->password;
  580. char *word;
  581. for (li = Users->head ; li != NULL ; li = li->next)
  582. {
  583. user = li->data;
  584. cur = li;
  585. if(compare_id(li,id) && compare_name(li,name) && compare_pass(li,password))
  586. {
  587. printf("\t \t \t<<<Profile>>>\n\n");
  588. printf("\t \t \tName:%s\n",((char*)Acc->name));
  589. printf("\t \t \tId:%s\n",((char*)Acc->id));
  590. printf("\t \t \tPassword:%s\n",((char*)Acc->password));
  591. if(cur==Users->head)
  592. {
  593. Users->head=li->next;
  594. Users->size--;
  595. break;
  596. }
  597. else if(li->next==NULL)
  598. {
  599. while(pos->next!=li)
  600. {
  601. pos=pos->next;
  602. }
  603. pos->next = NULL;
  604. free(li);
  605. Users->size--;
  606. break;
  607. }
  608. else
  609. {
  610. while(pos->next!=li)
  611. {
  612. pos=pos->next;
  613. }
  614. pos->next=li->next;
  615. free(li);
  616. Users->size--;
  617. break;
  618. }
  619. }
  620. }
  621. printf("\t \t \tYour Account Has Been Deleted\n");
  622. return 1;
  623. }
  624. void privacy_settings(user_t *Acc)
  625. {
  626. printf("\n");
  627. int choice,loop=1;
  628. while(loop)
  629. {
  630. system("cls");
  631. printf("\t \t \t<<<Privacy Settings>>>\n\n");
  632. printf("\t \t \tPress 1 for Changing Username\n");
  633. printf("\t \t \tpress 2 for Changing password\n");
  634. printf("\t \t \tpress 3 for Back\n");
  635. printf("\t \t \tEnter your choice\n");
  636. printf("\t \t \t");
  637. scanf("%d",&choice);
  638. switch(choice)
  639. {
  640. case 1:
  641. changing_username(Acc);
  642. break;
  643. case 2:
  644. changing_password(Acc);
  645. break;
  646. case 3:
  647. loop=0;
  648. break;
  649. default:
  650. status();
  651. break;
  652. }
  653. }
  654. clear();
  655. system("cls");
  656. }
  657. void changing_username(user_t *Acc)
  658. {
  659. char *New_name=(char*)malloc(512*sizeof(char));
  660. printf("\t \t \t<<<Username>>>\n\n");
  661. printf("\t \t \tEnter your new Username\n");
  662. printf("\t \t \t");
  663. fflush(stdin);
  664. gets(New_name);
  665. Acc->name=word(New_name);
  666. printf("\t \t \tSuccessfully Changed\n");
  667. printf("\n");
  668. clear();
  669. system("cls");
  670. }
  671. void changing_password(user_t *Acc)
  672. {
  673. printf("\t \t \t<<<Username>>>\n\n");
  674. printf("\t \t \tPlease Enter your current password\n");
  675. char cur_password[512];
  676. printf("\t \t \t");
  677. fflush(stdin);
  678. gets(cur_password);
  679. if(compare_password(Acc,cur_password))
  680. {
  681. printf("\t \t \tEnter your new password\n");
  682. char *New_password = (char*)malloc(512*sizeof(char));
  683. printf("\t \t \t");
  684. fflush(stdin);
  685. gets(New_password);
  686. Acc->password = word(New_password);
  687. printf("\t \t \tSuccessfully Changed\n");
  688. free(New_password);
  689. }
  690. else
  691. {
  692. printf("\t \t \tWrong Password\n");
  693. }
  694. printf("\n");
  695. clear();
  696. system("cls");
  697. }
  698. int compare_password(user_t *str,char *str2)
  699. {
  700. user_t *str1=NULL;
  701. str1=(user_t*)str;
  702. char *pass =(char*)str1->password;
  703. int i,str1_length=strlen(pass);
  704. int flag=0,str2_length=strlen(str2);
  705. if(str1_length==str2_length)
  706. {
  707. for(i=0; i<str1_length; i++)
  708. {
  709. if(pass[i]==str2[i])
  710. flag++;
  711. }
  712. }
  713. if(flag==str2_length)
  714. return 1;
  715. else
  716. return 0;
  717. }
  718. #endif
Add Comment
Please, Sign In to add comment