Simple Student Database using C Language
Implement a C Code to implement Student Database to some basic Student data . Data which we can store in Student database is as Given below :
- Create a Database
- Insert Inside a Database
- Display data
- Edit Database Data
- Search Database
- Delete Database
All options are Implemented with pointers as well as without pointers as Fundamentals of Data structure assignments under Pune University and Mumbai University .
Simple Student Database Code
1 2 3 |
#include <br/> #include <br/> #include "c:\tc\valid.c" <br/> #define MAX 25 <br/><br/> enum e{ co=1,dsgt,hss }; <br/><br/> struct add <br/> { <br/> char addr[50]; <br/> char city[25]; <br/> char state[25]; <br/> }; <br/><br/> struct stud <br/> { <br/> int roll,fds,dem; <br/> int a; <br/> char name[50]; <br/> struct add add1;<br/><br/> union elective <br/> { <br/> int co,dsgt,hss; <br/> }elec; <br/> }; <br/> int withp(struct stud [],int); <br/> struct stud* insertp(); <br/> int createp (struct stud *,int); <br/> int searchp(struct stud *,int); <br/> void editp(struct stud *,int); <br/> void deletp(struct stud *,int); <br/> void displayp(struct stud*); <br/> int withoutp(struct stud [],int); <br/> struct stud insert(); <br/> int create (struct stud [],int); <br/> int search(struct stud [],int); <br/> void edit(struct stud s1[],int n); <br/> void delet(struct stud s1[],int n); <br/> void display(struct stud s1); <br/> int check(struct stud[],int,int); <br/> void main() <br/> { <br/> int ch,n=0; <br/> struct stud st[25]; <br/> do <br/> { <br/> clrscr(); <br/> printf("\n\n\n\t\t>>>>---- MANAGING DATABASE ----<<<<\n"); <br/> printf("\n\t1\tWITH POINTERS\n"); <br/> printf("\t2\tWITHOUT POINTERS\n"); <br/> printf("\t3\tEXIT\n\n"); <br/> printf("\n\t\tENTER UR CHOICE\t"); <br/> ch=valid(); <br/> switch(ch) <br/> { <br/> case 1: n=withp(st,n); <br/> break; <br/> case 2: <br/> n=withoutp(st,n); <br/> break; <br/> case 3: <br/> break; <br/> default: <br/> printf("\n\n!!!! INVALID CHOICE !!!!"); <br/> getch(); <br/> } <br/> } <br/> while(ch!=3); <br/> }//end of main <br/> /********************************************************************* <br/> WITHP FUNCTION <br/> **********************************************************************/ <br/> int withp(struct stud s1[],int n) <br/> { <br/> int ch,i,m; <br/> struct stud *s; <br/> void (*p) (struct stud*); <br/> p=displayp; <br/> do <br/> { <br/> clrscr(); <br/> printf("\n\n\t\t>>>>---- WITHOUT POINTER MENU ----<<<<\n"); <br/> printf("\n\t1\tCREATE A NEW DATABASE"); <br/> printf("\n\t2\tINSERT"); <br/> printf("\n\t3\tDISPLAY"); <br/> printf("\n\t4\tEDIT"); <br/> printf("\n\t5\tSEARCH"); <br/> printf("\n\t6\tDELETE"); <br/> printf("\n\t7\tRETURN TO MAIN MENU \n"); <br/> printf("\n\t\tENTER UR CHOICE\t"); <br/> ch=valid(); <br/> switch(ch) <br/> { <br/> case 1: <br/> n=createp(s1,MAX); <br/> break; <br/> case 2: <br/> m=0; <br/> do <br/> { <br/> if(m!=0) <br/> { <br/> printf("\n\n\tENTER AGAIN!!!!"); <br/> getch(); <br/> } <br/> s=insertp(); <br/> s1[n]=*s; <br/> m++; <br/> }while(check(s1,s1[n].roll,n)==1); <br/> n++; <br/> break; <br/> case 3: <br/> if(n==0) <br/> { <br/> printf("\n\tFIRST CREATE DATABADE!!!"); <br/> getch(); <br/> break; <br/> } <br/> for(i=0;i<n;i++) <br=""> p(&s1[i]); <br/> break; <br/> case 4: <br/> if(n==0) <br/> { <br/> printf("\n\tFIRST CREATE DATABASE!!!"); <br/> getch(); <br/> break; <br/> } <br/> editp(s1,n); <br/> break; <br/> case 5: if(n==0) <br/> { <br/> printf("\n\tFIRST CREATE DATABASE!!!"); <br/> getch(); <br/> break; <br/> } <br/> i=searchp(s1,n); <br/> if(i>=0) <br/> { printf("\n\tTHE RECORD IS PRESENT"); <br/> getch(); <br/> p(&s1[i]); <br/> } <br/> else <br/> { printf("\n\t!! NOT FOUND !!"); <br/> getch(); <br/> } <br/> break; <br/> case 6: <br/> if(n==0) <br/> { <br/> printf("\n\tFIRST CREATE DATABASE!!!"); <br/> getch(); <br/> break; <br/> } <br/> deletp(s1,n); <br/> n--; <br/> break; <br/> case 7: <br/> break; <br/> default: <br/> printf("\n\n\t\t!!!! INVALID CHOICE !!!!"); <br/> getch(); <br/> }//end of switch <br/> }while(ch!=7); <br/> return n; <br/> } <br/> /********************************************************** <br/> DISPLAYP FUNCTION <br/> ***********************************************************/ <br/> void displayp(struct stud *s1) <br/> { <br/> clrscr(); <br/> printf("\n\n\tROLL NO : %d",s1->roll); <br/> printf("\n\tNAME : %s",s1->name); <br/> printf("\n\tADDRESS:\n\t\t%s ,\n\t\t%s ,\n\t\t%s",s1->add1.addr,s1->add1.city,s1->add1.state); <br/> printf("\n\tMARKS:-\n\tFDS\t%d\n\tDEM\t%d",s1->fds,s1->dem); <br/> if(s1->a==co) <br/> printf("\n\tCO\t%d",s1->elec.co); <br/> else if(s1->a==dsgt) <br/> printf("\n\tDSGT\t%d",s1->elec.dsgt); <br/> else <br/> printf("\n\tHSS\t%d",s1->elec.hss); <br/> printf("\n\n\t!!! PRESS ANY KEY TO CONTINUE !!!!"); <br/> getch(); <br/> } <br/> /********************************************************* <br/> INSERTP FUNCTION <br/> **********************************************************/ <br/> struct stud* insertp() <br/> { <br/> struct stud *s1; <br/> int m; <br/> clrscr(); <br/> printf("\n\t!!! --- !!!! \n\t ENTER DETAILS\n"); <br/> printf("\n>>> ROLL NO->\t"); <br/> do <br/> { <br/> m=valid(); <br/> }while(m==-1); <br/> s1->roll=m; <br/> printf("\n>>> NAME\t"); <br/> flushall(); <br/> scanf("%s",s1->name); <br/> printf("\n>>> ADDRESS \n\tSTREET NO-> / ROOM NO->\t"); <br/> flushall(); <br/> gets(s1->add1.addr); <br/> printf("\n\tCITY\t"); <br/> flushall(); <br/> gets(s1->add1.city); <br/> printf("\n\tSTATE\t"); <br/> flushall(); <br/> gets(s1->add1.state); <br/> printf("\n>>> MARKS IN "); <br/> printf("\n\tF D S\t"); <br/> m=0; <br/> do <br/> { <br/> if(m!=0 || m>100) <br/> printf("\n\t ENTER AGAIN !!!!!\n"); <br/> m=valid(); <br/> }while(m==-1 || m>100); <br/> s1->fds=m; <br/> printf("\n\tDEM\t"); <br/> m=0; <br/> do <br/> { <br/> if(m!=0 || m>100) <br/> printf("\n\t ENTER AGAIN !!!!!\n"); <br/> m=valid(); <br/> }while(m==-1|| m>100); <br/> s1->dem=m; <br/> printf("\n\tSELECT ELECTIVE SUBJECT\t"); <br/> printf("\n\t1\tCO"); <br/> printf("\n\t2\tDSGT"); <br/> printf("\n\t3\tHSS"); <br/> printf("\n\n\tENTER UR CHOICE\t"); <br/> m=0; <br/> do <br/> { <br/> if(m!=0 || m>3) <br/> printf("\n\t ENTER AGAIN !!!!!\n"); <br/> m=valid(); <br/> }while(m==-1|| m>3); <br/> s1->a=m; <br/> if(s1->a==co) <br/> { <br/> printf("\n\tENTER MARKS IN CO\t "); <br/> m=0; <br/> do <br/> { <br/> if(m!=0 || m>100) <br/> printf("\n\t ENTER AGAIN !!!!!\n"); <br/> m=valid(); <br/> }while(m==-1|| m>100); <br/> s1->elec.co=m; <br/> } <br/> else if(s1->a==dsgt) <br/> { <br/> printf("\n\tENTER MARKS IN DSGT\t "); <br/> m=0; <br/> do <br/> { <br/> if(m!=0 || m>100) <br/> printf("\n\t ENTER AGAIN !!!!!\n"); <br/> m=valid(); <br/> }while(m==-1|| m>100); <br/> s1->elec.dsgt=m; <br/> } <br/> else <br/> { <br/> printf("\n\tE NTER MARKS IN HSS\t"); <br/> m=0; <br/> do <br/> { <br/> if(m!=0 || m>100) <br/> printf("\n\t ENTER AGAIN !!!!!\n"); <br/> m=valid(); <br/> }while(m==-1 || m>100) ; <br/> s1->elec.hss=m; <br/> } <br/> return s1; <br/> } <br/> /***************************************************** <br/> CREATEP FUNCTION <br/> *******************************************************/ <br/> int createp(struct stud *s1,int n) <br/> { <br/> int i=0; <br/> do <br/> { <br/> *(s1+i)=insert(); <br/> i++; <br/> printf("\n\t!!! DO U WANT TO INSERT MORE RECORDS (y \ n) !!!"); <br/> }while(getche() =='y'&& i<=n); <br/> return i; <br/> } <br/> /********************************************************** <br/> SEARCHP FUNCTION <br/> ********************************************************/ <br/> int searchp(struct stud *s1,int n) <br/> { <br/> int i=0,rno; <br/> printf("\n\tENTER ROLL NUMBER\t"); <br/> scanf("%d",&rno); <br/> for(i=0;i<n;i++) <br=""> { <br/> if((s1+i)->roll==rno) <br/> return i; <br/> } <br/> return -1; <br/> } <br/> /******************************************************* <br/> EDITP FUNCTION <br/> ********************************************************/ <br/> void editp(struct stud s1[],int n) <br/> { <br/> int i; <br/> i=search(s1,n); <br/> if(i>=0) <br/> { <br/> int ch; <br/> do <br/> { <br/> printf("\n\t\t\t\tMODIFY\n"); <br/> printf("\n\t\t\t1.ROLL\n\t\t\t2.NAME\n\t\t\t3.ADDRESS\n\t\t\t4.MARKS\n\t\t\t5.RETURN"); <br/> printf("\nEnter your choice: "); <br/> scanf("%d",&ch); <br/> switch(ch) <br/> { <br/> case 1: <br/> printf("\nEnter new roll no: "); <br/> scanf("%d",&s1[i].roll); <br/> break; <br/> case 2: <br/> printf("\nEnter new name: "); <br/> scanf("%s",&s1[i].name); <br/> break; <br/> case 3: <br/> printf("\nEnter new address: "); <br/> printf("\nHouse no. : "); <br/> scanf("%d",&s1[i].add1.addr); <br/> printf("\nCity: "); <br/> scanf("%s",&s1[i].add1.city); <br/> printf("\nState: "); <br/> scanf("%s",&s1[i].add1.state); <br/> break; <br/> case 4: <br/> printf("\nEnter new marks:"); <br/> printf("\nFDS: %d",s1[i].fds); <br/> printf("\nDEM: %d",s1[i].dem); <br/> if(s1[i].a==dsgt) <br/> { <br/> printf("\nDSGT: "); <br/> scanf("%d",&s1[i].elec.dsgt); <br/> } <br/> if(s1[i].a==hss) <br/> { <br/> printf("\nHSS: "); <br/> scanf("%d",&s1[i].elec.hss); <br/> } <br/> if(s1[i].a==co) <br/> { <br/> printf("\nCO: "); <br/> scanf("%d",&s1[i].elec.co); <br/> } <br/> break; <br/> case 5: <br/> break; <br/> default:printf("\n\nInvalid choice!!\n"); <br/> break; <br/> } <br/> }while(ch!=5); <br/> printf("\n\n\tRECORD EDITED"); <br/> getch(); <br/> } <br/> else <br/> { <br/> printf("\n\t\tRECORD NOT FOUND"); <br/> getch(); <br/> } <br/> } <br/> /***************************************************** <br/> DELETP FUNCTION <br/> *******************************************************/ <br/> void deletp(struct stud *s1,int n) <br/> { <br/> int i,j; <br/> i=search(s1,n); <br/> printf("\n\tdo u wanna delete\y(y\n)"); <br/> if(i>=0&&getche()=='y') <br/> { <br/> for(j=i+1;j<n;j++) <br=""> *(s1+j-1)=*(s1+j); <br/> printf("\n\n\t!!! DELETED !!!"); <br/> getch(); <br/> } <br/> else <br/> { <br/> printf("\n\t\tnot deleted!!!!!!!!!"); <br/> getch(); <br/> } <br/> } <br/> /********************************************************************* <br/> WITHOUTP FUNCTION <br/> **********************************************************************/ <br/> int withoutp(struct stud s1[],int n) <br/> { <br/> int ch,i,m; <br/> void (*p) (struct stud); <br/> p=display; <br/> do <br/> { <br/> clrscr(); <br/> printf("\n\n\t\t>>>>---- WITHOUT POINTER MENU ----<<<<\n"); <br/> printf("\n\t1\tCREATE A NEW DATABASE"); <br/> printf("\n\t2\tINSERT"); <br/> printf("\n\t3\tDISPLAY"); <br/> printf("\n\t4\tEDIT"); <br/> printf("\n\t5\tSEARCH"); <br/> printf("\n\t6\tDELETE"); <br/> printf("\n\t7\tRETURN TO MAIN MENU \n"); <br/> printf("\n\t\tENTER UR CHOICE\t"); <br/> ch=valid();; <br/> switch(ch) <br/> { <br/> case 1: <br/> n=create(s1,MAX); <br/> break; <br/> case 2: <br/> m=0; <br/> do <br/> { <br/> if(m!=0) <br/> { <br/> printf("\n\n\tENTER AGAIN!!!!"); <br/> getch(); <br/> } <br/> s1[n]=insert(); <br/> m++; <br/> }while(check(s1,s1[n].roll,n)==1); <br/> n++; <br/> break; <br/> case 3: if(n==0) <br/> { <br/> printf("\n\tFIRST CREATE DATABADE!!!"); <br/> getch(); <br/> break; <br/> } <br/> for(i=0;i<n;i++) <br=""> p(s1[i]); <br/> break; <br/> case 4: <br/> if(n==0) <br/> { <br/> printf("\n\tFIRST CREATE DATABADE!!!"); <br/> getch(); <br/> break; <br/> } <br/> edit(s1,n); <br/> break; <br/> case 5: <br/> if(n==0) <br/> { <br/> printf("\n\tFIRST CREATE DATABADE!!!"); <br/> getch(); <br/> break; <br/> } <br/> i=search(s1,n); <br/> if(i>=0) <br/> { printf("\n\tTHE RECORD IS PRESENT"); <br/> getch(); <br/> p(s1[i]); <br/> } <br/> else <br/> { printf("\n\t!! NOT FOUND !!"); <br/> getch(); <br/> } <br/> break; <br/> case 6: if(n==0) <br/> { <br/> printf("\n\tFIRST CREATE DATABADE!!!"); <br/> getch(); <br/> break; <br/> } <br/> delet(s1,n); <br/> n--; <br/> break; <br/> case 7: <br/> break; <br/> default: <br/> printf("\n\n\t\t!!!! INVALID CHOICE !!!!"); <br/> getch(); <br/> }//end of switch <br/> }while(ch!=7); <br/> return n; <br/> } <br/> /********************************************************** <br/> DISPLAY FUNCTION <br/> ***********************************************************/ <br/> void display(struct stud s1) <br/> { <br/> clrscr(); <br/> printf("\n\n\tROLL NO : %d",s1.roll); <br/> printf("\n\tNAME : %s",s1.name); <br/> printf("\n\tADDRESS:\n\t\t%s ,\n\t\t%s ,\n\t\t%s",s1.add1.addr,s1.add1.city,s1.add1.state); <br/> printf("\n\tMARKS:-\n\tFDS\t%d\n\tDEM\t%d",s1.fds,s1.dem); <br/> if(s1.a==co) <br/> printf("\n\tCO\t%d",s1.elec.co); <br/> else if(s1.a==dsgt) <br/> printf("\n\tDSGT\t%d",s1.elec.dsgt); <br/> else <br/> printf("\n\tHSS\t%d",s1.elec.hss); <br/> printf("\n\n\t!!! PRESS ANY KEY TO CONTINUE !!!!"); <br/> getch(); <br/> } <br/> /********************************************************* <br/> INSERT FUNCTION <br/> **********************************************************/ <br/> struct stud insert() <br/> { <br/> struct stud s1; <br/> int m; <br/> clrscr(); <br/> printf("\n\t!!! --- !!!! \n\t ENTER DETAILS\n"); <br/> printf("\n>>> ROLL NO.\t"); <br/> m=0; <br/> do <br/> { <br/> if(m!=0) <br/> printf("\n\t ENTER AGAIN !!!!!\n"); <br/> m=valid(); <br/> }while(m==-1); <br/> s1.roll=m; <br/> printf("\n>>> NAME\t"); <br/> flushall(); <br/> scanf("%s",s1.name); <br/> printf("\n>>> ADDRESS \n\tSTREET NO. / ROOM NO.\t"); <br/> flushall(); <br/> gets(s1.add1.addr); <br/> printf("\n\tCITY\t"); <br/> flushall(); <br/> gets(s1.add1.city); <br/> printf("\n\tSTATE\t"); <br/> flushall(); <br/> gets(s1.add1.state); <br/> printf("\n>>> MARKS IN "); <br/> printf("\n\tF D S\t"); <br/> m=0; <br/> do <br/> { <br/> if(m!=0 || m>100) <br/> printf("\n\t ENTER AGAIN !!!!!\n"); <br/> m=valid(); <br/> }while(m==-1|| m>100); <br/> s1.fds=m; <br/> printf("\n\tDEM\t"); <br/> m=0; <br/> do <br/> { <br/> if(m!=0 || m>100) <br/> printf("\n\t ENTER AGAIN !!!!!\n"); <br/> m=valid(); <br/> }while(m==-1|| m>100); <br/> s1.dem=m; <br/> printf("\n\tSELECT ELECTIVE SUBJECT\t"); <br/> printf("\n\t1\tCO"); <br/> printf("\n\t2\tDSGT"); <br/> printf("\n\t3\tHSS"); <br/> printf("\n\n\tENTER UR CHOICE\t"); <br/> m=0; <br/> do <br/> { <br/> if(m!=0 || m>3) <br/> printf("\n\t ENTER AGAIN !!!!!\n"); <br/> m=valid(); <br/> }while(m==-1 || m>3); <br/> s1.a=m; <br/> if(s1.a==co) <br/> { <br/> printf("\n\tENTER MARKS IN CO\t "); <br/> m=0; <br/> do <br/> { <br/> if(m!=0 || m>100) <br/> printf("\n\t ENTER AGAIN !!!!!\n"); <br/> m=valid(); <br/> }while(m==-1 || m>100); <br/> s1.elec.co=m; <br/> } <br/> else if(s1.a==dsgt) <br/> { <br/> printf("\n\tENTER MARKS IN DSGT\t "); <br/> m=0; <br/> do <br/> { <br/> if(m!=0 || m>100) <br/> printf("\n\t ENTER AGAIN !!!!!\n"); <br/> m=valid(); <br/> }while(m==-1 || m> 100); <br/> s1.elec.dsgt=m; <br/> } <br/> else <br/> { <br/> printf("\n\tENTER MARKS IN HSS\t"); <br/> m=0; <br/> do <br/> { <br/> if(m!=0 || m>100) <br/> printf("\n\t ENTER AGAIN !!!!!\n"); <br/> m=valid(); <br/> }while(m==-1 || m>100); <br/> s1.elec.hss=m; <br/> } <br/> return s1; <br/> } <br/> /***************************************************** <br/> CREATE FUNCTION <br/> *******************************************************/ <br/> int create(struct stud s1[25],int n) <br/> { <br/> int i=0; <br/> do <br/> { <br/> s1[i]=insert(); <br/> i++; <br/> printf("\n\t!!! DO U WANT TO INSERT MORE RECORDS (y \ n) !!!"); <br/> }while(getche()=='y'&& i<=n); <br/> return i; <br/> } <br/> /********************************************************** <br/> SEARCH FUNCTION <br/> ********************************************************/ <br/> int search(struct stud s1[],int n) <br/> { <br/> int i,rno; <br/> printf("\n\tENTER ROLL NUMBER\t"); <br/> scanf("%d",&rno); <br/> for(i=0;i<n;i++) <br=""> { <br/> if(s1[i].roll==rno) <br/> return i; <br/> } <br/> return -1; <br/> } <br/> /******************************************************* <br/> EDIT FUNCTION <br/> ********************************************************/ <br/> void edit(struct stud s1[],int n) <br/> { <br/> int i; <br/> i=search(s1,n); <br/> if(i>=0) <br/> { <br/> int ch; <br/> do <br/> { <br/> printf("\n\t\t\t\tMODIFY\n"); <br/> printf("\n\t\t\t1.ROLL\n\t\t\t2.NAME\n\t\t\t3.ADDRESS\n\t\t\t4.MARKS\n\t\t\t5.RETURN"); <br/> printf("\nEnter your choice: "); <br/> scanf("%d",&ch); <br/> switch(ch) <br/> { <br/> case 1: <br/> printf("\nEnter new roll no: "); <br/> scanf("%d",&s1[i].roll); <br/> break; <br/> case 2: <br/> printf("\nEnter new name: "); <br/> scanf("%s",&s1[i].name); <br/> break; <br/> case 3: <br/> printf("\nEnter new address: "); <br/> printf("\nHouse no. : "); <br/> scanf("%d",&s1[i].add1.addr); <br/> printf("\nCity: "); <br/> scanf("%s",&s1[i].add1.city); <br/> printf("\nState: "); <br/> scanf("%s",&s1[i].add1.state); <br/> break; <br/> case 4: <br/> printf("\nEnter new marks:"); <br/> printf("\nFDS: %d",s1[i].fds); <br/> printf("\nDEM: %d",s1[i].dem); <br/> if(s1[i].a==dsgt) <br/> { <br/> printf("\nDSGT: "); <br/> scanf("%d",&s1[i].elec.dsgt); <br/> } <br/> if(s1[i].a==hss) <br/> { <br/> printf("\nHSS: "); <br/> scanf("%d",&s1[i].elec.hss); <br/> } <br/> if(s1[i].a==co) <br/> { <br/> printf("\nCO: "); <br/> scanf("%d",&s1[i].elec.co); <br/> } <br/> break; <br/> case 5: <br/> break; <br/> default:printf("\n\nInvalid choice!!\n"); <br/> break; <br/> } <br/> }while(ch!=5); <br/> printf("\n\n\tRECORD EDITED"); <br/> getch(); <br/> } <br/> else <br/> { <br/> printf("\n\t\tRECORD NOT FOUND"); <br/> getch(); <br/> } <br/> } <br/> /***************************************************** <br/> DELET FUNCTION <br/> *******************************************************/ <br/> void delet(struct stud s1[],int n) <br/> { <br/> int i,j; <br/> i=search(s1,n); <br/> printf("\n\tdo u wanna delete\y(y\n)"); <br/> if(i>=0&&getche()=='y') <br/> { <br/> for(j=i+1;j<n;j++) <br=""> s1[j-1]=s1[j]; <br/> printf("\n\n\t!!! DELETED !!!"); <br/> getch(); <br/> } <br/> else <br/> { <br/> printf("\n\t\tRECORD NOT Deleted"); <br/> getch(); <br/> } <br/> } <br/> int check(struct stud e[],int rno, int n) <br/> { <br/> int i; <br/> for(i=0;i<n;i++) <br=""> if(e[i].roll==rno) <br/> return 1; <br/> return 0; <br/> } |
Source projectgeek.com