In: Computer Science
Develop a simple MIS (Management Information System) for High School Student that consists of a simple database (a text file). The system manages to dynamically input record/data into the database. The data from the database can be sorted, searched and updated. User also should be able to add new records/data, remove any data and etc.
Example of the user interface for a Students Management System.
Main Menu
Welcome to A* High School Students Management System.
Please select your choice:
Your choice: 4
Menu view students record
Your choice: 2
| 
 No.  | 
 Name  | 
 ID  | 
 Address  | 
 Phone No.  | 
 D.O.B  | 
 Class  | 
| 
 1  | 
 Arron Adam  | 
 A00025  | 
 45, Star Garden, Tanjung Malim  | 
 0159992341  | 
 30/04/1997  | 
 5 B  | 
| 
 2  | 
 Chung Yee Maa  | 
 A01095  | 
 88, Taman Intan Berlian, Hulu Selangor  | 
 0174563210  | 
 07/09/2001  | 
 1 A  | 
| 
 3.  | 
 Dean Michael  | 
 A00910  | 
 10, Taman Cahaya, Tanjung Malim  | 
 0165643291  | 
 11/11/2001  | 
 1 C  | 
| 
 4  | 
 Saravanan Arumugan  | 
 A00083  | 
 Lot 15, Pinggiran Sungai, Tanjung Malim  | 
 0129878765  | 
 05/08/1997  | 
 4 A  | 
| 
 5.  | 
 Zarina Zainal  | 
 A00414  | 
 C2-4-12, Apartment Sky, Behrang  | 
 0146662233  | 
 12/12/1999  | 
 3 F  | 
Guildline:
#include <iostream>
#include<malloc.h>
#include<fstream>
#include<string.h>
using namespace std;
struct student
{
char name[30],id[10],addr[50],ph[15],dob[10],cls[5];
struct student *next;
};
void addlist(struct student **st,char name[],char id[],char
addr[],char ph[],char dob[],char cls[]);
struct student* search(struct student *st,char id[]);
void delete1(struct student **st,char id[]);
void viewstudents(struct student *st);
int main()
{
FILE *f;
int ch,chh,flag=1;
char name[30],id[10],addr[50],ph[15],dob[10],cls[5];
struct student *start,*sr;
start=NULL;
f=fopen("Student.txt","a+");
while(!fscanf(f,"%s\t%s\t%s\t%s\t%s\t%s\n",name,id,addr,ph,dob,cls))
  
{
addlist(&start,name,id,addr,ph,dob,cls);
}
cout<<"Welcome to A* High School Students Management
System.";
while(flag)
{
cout<<"\nPlease select your choice:\n1.Adding a new student
record";
cout<<"\n2.Updating an existing student record\n3.Search a
student record\n4.View students record\n5.Remove a student
record";
cout<<"\n6.Exit.";
cout<<"\nYour choice:";
cin>>ch;
switch(ch)
{
case 1:cout<<"Enter \tName:\tID\tAddress:\tPhone
No.:\tD.O.B:\tClass:";
cin>>name>>id>>addr>>ph>>dob>>cls;
addlist(&start,name,id,addr,ph,dob,cls);
break;
case 2: cout<<"Enter ID";
cin>>id;
sr=search(start,id);
if(sr!=NULL)
{
cout<<"Address:\tPhone No.:";
cin>>sr->addr>>sr->ph;
}
else
cout<<"\nID not exist";
break;
case 3: cout<<"Enter ID";
cin>>id;
sr=search(start,id);
if(sr!=NULL)
cout<<"\n"<<sr->name<<"\t"<<sr->id<<"\t"<<sr->addr<<"\t"<<sr->ph<<"\t"<<sr->dob<<"\t"<<sr->cls;
else
cout<<"\nID not exist";
break;
case 4:cout<<"1.View a student record\n2.View all students
record\n3.Your choice: ";
cin>>chh;
if(chh==1)
{
cout<<"Enter ID";
cin>>id;
sr=search(start,id);
if(sr==NULL)
cout<<"\nIDnot exist";
else
cout<<
sr->name,sr->id,id,sr->addr,sr->ph,sr->dob,sr->cls;
}
else if(chh==2)
viewstudents(start);
break;
case 5: cout<<"Enter ID";
cin>>id;
delete1(&start,id);
break;
case 6: f=fopen("Student.txt","w");
while(start!=NULL)
{
fprintf(f,"%s\t%s\t%s\t%s\t%s\t%s\n",start->name,start->id,start->addr,start->ph,start->dob,start->cls);
start=start->next;
}
flag=0;
break;
}
}
return 0;
}
void addlist(struct student **st,char name[],char id[],char
addr[],char ph[],char dob[],char cls[])
{
struct student *temp,*new_node;
if(*st==NULL)
{
temp=new struct student;
strcpy(temp->name,name);
strcpy(temp->id,id);
strcpy(temp->addr,addr);
strcpy(temp->ph,ph);
strcpy(temp->dob,dob);
strcpy(temp->cls,cls);
  
temp->next=NULL;
*st=temp;
}
else
{
temp=*st;
while(temp->next!=NULL)
temp=temp->next;
  
new_node=new struct student;
strcpy(new_node->name,name);
strcpy(new_node->id,id);
strcpy(new_node->addr,addr);
strcpy(new_node->ph,ph);
strcpy(new_node->dob,dob);
strcpy(new_node->cls,cls);
new_node->next=NULL;
temp->next= new_node;
}
}
struct student* search(struct student *st,char id[])
{
while(st!=NULL)
{
if(strcmp(st->id,id)==0)
return st;
st=st->next;
}
return NULL;
}
void delete1(struct student **st,char id[])
{
struct student *temp,*prev;
temp=*st;
while(temp!=NULL)
{
if(strcmp(temp->id,id)==0)
{
if(temp==*st)
*st=temp->next;
else
prev->next=temp->next;
free(temp);
return;
}
else
{
prev=temp;
temp=temp->next;
}
}
cout<<"\nID not exist";
}
void viewstudents(struct student *stt)
{
struct student *st=stt,*temp;
char n[10];
int i=1;
if(stt==NULL)
cout<<"\nNo data";
else
{
while(st!=NULL)//sorting
{
temp=st->next;
while(temp!=NULL)
{
if(strcmp(st->id,temp->id)>0)
{
strcpy(n,st->name);
strcpy(st->name,temp->name);
strcpy(temp->name,n);
strcpy(n,st->id);
strcpy(st->id,temp->id);
strcpy(temp->id,n);
strcpy(n,st->addr);
strcpy(st->addr,temp->addr);
strcpy(temp->addr,n);
strcpy(n,st->ph);
strcpy(st->ph,temp->ph);
strcpy(temp->ph,n);
strcpy(n,st->dob);
strcpy(st->dob,temp->dob);
strcpy(temp->dob,n);
strcpy(n,st->cls);
strcpy(st->cls,temp->cls);
strcpy(temp->cls,n);
  
}
temp=temp->next;
}
st=st->next;
  
}
st=stt;
cout<<"\nNo.\tName\tID\tAddress\tPhone
No.\tD.O.B\tClass";
while(st!=NULL)
{
cout<<"\n"<<i<<"\t"<<st->name<<"\t"<<st->id<<"\t"<<st->addr<<"\t"<<st->ph<<"\t"<<st->dob<<"\t"<<st->cls;
st=st->next;
i++;
}
}
}