Student Record System - Doc Project 2nd Sem

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 7

/*This project is used for files as a database to perform file handling operations

such as
add, search, modify, and delete records to manage students� records.
Using this project, you can also generate a mark-sheet for students.*/
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
//Structure of student//
struct student{
char ID[15];
char name[20];
char add[20];
char parname[20];
int Class;
long unsigned int phone_no;
};
//creation of student object//
struct student stu;

///This will set the forground color for printing in a console window.
void SetColor(int ForgC)
{
WORD wColor;
///We will need this handle to get the current background attribute
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO csbi;

///We use csbi for the wAttributes word.


if(GetConsoleScreenBufferInfo(hStdOut, &csbi))
{
///Mask out all but the background attribute, and add in the forgournd
color
wColor = (csbi.wAttributes & 0xF0) + (ForgC & 0x0F);
SetConsoleTextAttribute(hStdOut, wColor);
}
return;
}

void ClearConsoleToColors(int ForgC, int BackC)


{
WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
///Get the handle to the current output buffer...
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
///This is used to reset the carat/cursor to the top left.
COORD coord = {0, 0};
///A return value... indicating how many chars were written
/// not used but we need to capture this since it will be
/// written anyway (passing NULL causes an access violation).
DWORD count;
///This is a structure containing all of the console info
/// it is used here to find the size of the console.
CONSOLE_SCREEN_BUFFER_INFO csbi;
///Here we will set the current color
SetConsoleTextAttribute(hStdOut, wColor);
if(GetConsoleScreenBufferInfo(hStdOut, &csbi))
{
///This fills the buffer with a given character (in this case 32=space).
FillConsoleOutputCharacter(hStdOut, (TCHAR) 32, csbi.dwSize.X *
csbi.dwSize.Y, coord, &count);
FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, csbi.dwSize.X *
csbi.dwSize.Y, coord, &count );
///This will set our cursor position for the next print statement.
SetConsoleCursorPosition(hStdOut, coord);
}
return;
}

void SetColorAndBackground(int ForgC, int BackC)


{
WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
return;
}

COORD coord = {0,0}; ///set the cordinate to 0, 0 (top-left corner of window);


void gotoxy(int x, int y){//This function allows you to print text in any place of
screen.//
coord.X = x; coord.Y = y; /// X and Y coordinates
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
//This function is used to draw a rectangle//
void drawRectangle(){
int i, j;
gotoxy(0,0);
printf("%c",201);
for(i = 1; i < 78; i++){
gotoxy(i, 0);
printf("%c",205);
}
gotoxy(78,0);
printf("%c",187);
for(i = 1; i < 25; i++){
gotoxy(78, i);
if(i == 6){
printf("%c",185);
}else{
printf("%c",186);
}
}
gotoxy(78, 25);
printf("%c",188);
for(i = 77; i > 0; i--){
gotoxy(i,25);
if(i == 35){
printf("%c",202);
}else{
printf("%c",205);
}
}
gotoxy(0,25);
printf("%c",200);
for(i = 24; i > 0; i--){
gotoxy(0,i);
if(i == 6){
printf("%c",204);
}else{
printf("%c",186);
}
}

for(i = 1; i < 78; i++){


gotoxy(i,6);
if(i == 35){
printf("%c",203);
}else{
printf("%c",205);
}
}

for(i = 7; i < 25; i++){


gotoxy(35,i);
printf("%c",186);
}

}
//This funtion is used to clear the window//
void clearWindow(){
int i,j;
for(i = 37; i < 78; i++){
for(j = 7; j < 25; j++){
gotoxy(i,j);printf(" ");
}
}
return;
}
//This function is used to creat a window in the header of the student record//
void window(){
drawRectangle();
gotoxy(32,1);
SetColor(35);
printf("Knowledge 360");
gotoxy(28,2);
SetColor(35);
printf("STUDENT RECORD SYSTEM");
gotoxy(20,3);
printf("College of IT and Management Education, BBSR");
gotoxy(31,4);
printf("Estd: 2000");
gotoxy(25,24);
SetColor(17);

void get_password(char* pass)


{
char temp_passP[25];
int i=0;
while(1)
{
temp_passP[i]=getch();
if(temp_passP[i]==13){break;}
else if(temp_passP[i]==8)
{
if(i!=0) {
printf("\b \b");
i--;
} else {printf("\a");}
}
else
{
printf("*");
*(pass+i) = temp_passP[i];
i++;
}
*(pass+i)='\0';
}
}

void use_pass_field(){
int x = 15, y = 16;
int use;
char pass[10];
SetColor(10);
gotoxy(15,12);printf("The database is password protected.");
gotoxy(15,13);printf("Enter Valid username and password");
SetColor(17);
gotoxy(20,x);printf("USERNAME:- ");
gotoxy(20,y);printf("PASSWORD:- ");
gotoxy(34,x);scanf("%d",use);
gotoxy(34,y);get_password(pass);
}
////This function is used to Heading of the student record//
void print_heading(const char st[]){
SetColorAndBackground(31,28);
gotoxy(45,8);printf("SRS : %s",st);
SetColorAndBackground(17,15);
}

int conf_record(char id[]){


// left for you
//it checks whether the entered id for
//new record is already in the database.
}
//This function is used to add the student record//
void add_student(){
clearWindow();
print_heading("Add Record");
int print = 37;
FILE *fp;
fp = fopen("record.txt","ab+");
SetColor(45);
if(fp == NULL){
MessageBox(0,"Error in Opening file\nMake Sure Your File is Not Write
Protected","Warning",0);

}else{
fflush(stdin);
gotoxy(print,10);printf("ID: ");gets(stu.ID);
//here you can confirms the ID
gotoxy(print,12);printf("Name: ");gets(stu.name);
gotoxy(print,14);printf("Address: ");gets(stu.add);
gotoxy(print,16);printf("Father's Name: ");gets(stu.parname);
gotoxy(print,18);printf("Class: ");scanf("%d",&stu.Class);
gotoxy(print,20);printf("Phone Number: ");scanf("%ld",&stu.phone_no);
fwrite(&stu, sizeof(stu), 1, fp);
gotoxy(40,22); printf("The Record is Added Successfully !!");
}
SetColor(28);
fclose(fp);
return;
}
//This function is used to search the student record//
void search_student(){
clearWindow();
print_heading("Search Record");
SetColor(45);
char s_id[15];
int isFound = 0;
gotoxy(37,10);printf("Enter ID to Search: ");fflush(stdin);
gets(s_id);
FILE *fp;
fp = fopen("record.txt","rb");
while(fread(&stu,sizeof(stu),1,fp) == 1){
if(strcmp(s_id,stu.ID) == 0){
isFound = 1;
break;
}
}
if(isFound == 1){
gotoxy(37,12);printf("The Record is Found");
gotoxy(37,14);printf("ID: %s",stu.ID);
gotoxy(37,15);printf("Name: %s",stu.name);
gotoxy(37,16);printf("Address: %s",stu.add);
gotoxy(37,17);printf("Father's Name: %s",stu.parname);
gotoxy(37,18);printf("Class: %d",stu.Class);
gotoxy(37,19);printf("Phone Number: %ld",stu.phone_no);
}else{
gotoxy(37,12);printf("Sory, No Record Found in the Database");
}
SetColor(28);
fclose(fp);
return;
}
//This function is used to modify the student record//
void mod_student(){
clearWindow();
print_heading("Modify Record");
SetColor(45);
char s_id[15];
int isFound = 0, print = 37;
gotoxy(37,10);printf("Enter ID to Modify: ");fflush(stdin);
gets(s_id);
FILE *fp;
fp = fopen("record.txt","rb+");
while(fread(&stu, sizeof(stu),1,fp) == 1){
if(strcmp(s_id, stu.ID) == 0){
fflush(stdin);
gotoxy(print,12);printf("ID: ");gets(stu.ID);
gotoxy(print,13);printf("Name: ");gets(stu.name);
gotoxy(print,14);printf("Address: ");gets(stu.add);
gotoxy(print,15);printf("Father's name: ");gets(stu.parname);
gotoxy(print,16);printf("Class: ");scanf("%d",&stu.Class);
gotoxy(print,17);printf("Phone Number: ");scanf("%ld",&stu.phone_no);
fseek(fp,-sizeof(stu), SEEK_CUR);
fwrite(&stu,sizeof(stu), 1, fp);
isFound = 1;
break;
}
}
if(!isFound){
gotoxy(print, 12);printf("404 !! No Record Found");
}
fclose(fp);
SetColor(28);
return;
}

void gen_marksheet(){
//left for further enhancement
}
//This function is used to delete the student record//
void delete_student(){
clearWindow();
print_heading("Delete Record");
SetColor(45);
char s_id[15];
int isFound = 0, print = 37;
gotoxy(37,10);printf("Enter ID to Delete: ");fflush(stdin);
gets(s_id);
FILE *fp, *temp;
fp = fopen("record.txt","rb");
temp = fopen("temp.txt", "wb");
while(fread(&stu, sizeof(stu),1,fp) == 1){
if(strcmp(s_id, stu.ID) == 0){
fwrite(&stu,sizeof(stu),1,temp);
}
}
fclose(fp);
fclose(temp);
remove("record.txt");
rename("temp.txt","record.txt");
gotoxy(37,12);printf("The record is sucessfully deleted");
SetColor(28);
return;
}
//In this function we can choose an option to interact with the student record//
void main_window(){
int choice;
SetColor(28);
int x = 2;
while(1){
gotoxy(x,8);printf("1. Add Student");
gotoxy(x,10);printf("2. Search Student");
gotoxy(x,12);printf("3. Modify Student Record");
gotoxy(x,14);printf("4. Generate Marksheet // Left");
gotoxy(x,16);printf("5. Delete Student Record");
gotoxy(x,18);printf("6. Change Password // Left");
gotoxy(x,20);printf("7. Exit");
gotoxy(x,22);printf("Enter Your Choice: ");
scanf("%d",&choice);
switch(choice){
case 1:
add_student();
break;
case 2:
search_student();
break;
case 3:
mod_student();
break;
case 4:
break;
case 5:
delete_student();
break;
case 6:
break;
case 7:
exit(0);
break;
default:
break;
}

}
//Main function started//
int main(){
ClearConsoleToColors(17,15);
SetConsoleTitle("Knowledge 360 - Student Record System");
window();
//use_pass_field();
main_window();
return 0;
}//End of Main//

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy