Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <malloc.h>
- // structure definition
- struct node {
- char name[50];
- int age;
- int student_no;
- char nationality[50];
- struct node *next;
- };
- typedef struct node *NODE_T;
- // function declarations
- void enter_new_data();
- void remove_existing_data();
- void display_all_data();
- void show_options();
- NODE_T getnode();
- void freenode(NODE_T p);
- void free_buffer();
- void continue_f(char message[100]);
- // global variables
- char ch;
- // create linked-list's main holder variable
- NODE_T students,conductor;
- int main(){
- // allocate memory for the node link-list holder
- students = NULL;
- //students->next = 0; // initialize next to 0 for first node of linked-list
- // show the options that user has
- show_options();
- return 1;
- }
- // this function will list options that user can apply
- void show_options(){
- system("cls"); // clear screen
- int opt,opt_bool=0;
- printf("%s\n\n%s\n%s\n%s\n%s\n\n","The Options You Have","1. Add New Student's Record","2. Delete An Existing Student's Record","3. Display The List Of Students","4. Exit");
- while(opt_bool != 1){
- printf("Operation: ");
- scanf("%d",&opt);
- if(opt == 1 || opt == 2 || opt == 3 || opt == 4){
- opt_bool = 1;
- }
- }
- // check the operation and go to the operation
- if(opt == 1){ // adding record
- enter_new_data();
- } else if(opt == 2){ // removing record
- } else if(opt == 3){ // displaying records
- display_all_data();
- } else if(opt == 4){ // exit the program
- exit(0);
- }
- }
- // enter new student data into linked-list
- void enter_new_data(){
- system("cls"); // clear screen
- // get a new node
- NODE_T p = getnode();
- printf("You are entering a new student's record\n");
- // take student's name
- printf("Student's Name: ");
- scanf("%s",p->name);
- free_buffer();
- // take student's age
- printf("Student's Age: ");
- scanf("%d",&p->age);
- free_buffer();
- // take student's number
- printf("Student's Number: ");
- scanf("%d",&p->student_no);
- free_buffer();
- // take student's nationality
- printf("Student's Nationality: ");
- scanf("%s",p->nationality);
- free_buffer();
- // set p->next next value of last node of linked-list, which is equal to 0
- p->next = 0;
- printf("%s, %d, %d, %s",p->name,p->age,p->student_no,p->nationality);
- // if there is no any node yet, add node p as first node
- if(students == NULL) {
- students = p;
- } else {
- conductor = students; // assign linked-list to the conductor to traverse
- // reach the last node
- while (conductor->next != 0)
- {
- conductor = conductor->next;
- }
- conductor->next = p; // append the node p to the linked list
- }
- freenode(p); // set free node p
- continue_f("Adding new record is done."); // ask press any key to continue
- show_options(); // show options
- }
- // to display all data of linked list
- void display_all_data(){
- system("cls"); // clear screen
- printf("The Student Records\n\n");
- printf("%s%7s%18s%15s","STUDENT'S NAME","AGE","STUDENT NUMBER","NATIONALITY"); // captions
- freenode(conductor);
- conductor = getnode();
- conductor = students; // assign linked-list to the conductor to traverse
- if (conductor != NULL ) { /* Makes sure there is a place to start */
- // traverse untill last node
- while ( conductor->next != 0)
- {
- printf("\n%s%7d%18d%15s",conductor->name,conductor->age,conductor->student_no,conductor->nationality); // record
- conductor = conductor->next;
- }
- } else {
- printf("\n\n There is not any record yet.");
- }
- continue_f("Listing records is done."); // ask press any key to continue
- show_options(); // show options
- }
- // create new node
- NODE_T getnode(void){
- NODE_T p;
- p = (struct node *) malloc(sizeof(struct node));
- return p;
- }
- // set free a node
- void freenode(NODE_T p){
- free(p);
- }
- // clear the buffer if there are any extra data in it
- void free_buffer(){
- while (getchar() != '\n') { }
- }
- void continue_f(char message[100]){
- printf("\n\n%s\nPress any key to continue...",message);
- getch(); // wait for pushing any key from user
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement