C++

C language implementation of student information management system (single linked list)


The example of this paper is to share the specific code of C language to realize the student information management system for your reference. The specific content is as follows

/*copyright(c)2016. School of computer science, yantai university
 * All rights reserved,
 *  File name: text.Cpp
 *  Author: wu jingchao
 *  Completion date: 2016 years 7 month 1 day
 *  The version number: codeblock
 *
 *  Problem description :  Student information management system
 *  The input describing :
 *  Program output:   The output
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <time.h>
# define LEN sizeof(struct Student)
struct Student {
char num[100];   // Student id
char name[200];  // The name
char sex[100];  // gender
int age;   // age
char phone[120];  // The phone
char address[120]; // address
char birthday[200]; // birthday
char mail[200] ; // mail
struct Student *next;
};
void menu();
void start();
void welcome();
char filename[30];// Global variable to hold the name of the file you want to open
struct Student *Creat(int n);
// Generate the list
struct Student *Creat(int n)
{
 void menu_print_in(void);
 struct Student *head;
 struct Student *p1, *p2;

 system("cls");
 for(int i=1;i<n+1;i++) {
 p1 = (struct Student*)malloc(LEN);
 menu_print_in();
 scanf("%s%s%s%d%s%s%s%s",p1->num,p1->name,p1->sex,
 &p1->age,p1->phone,p1->address,p1->birthday,p1->mail);
 p1->next = NULL;
 if(i==1)
 {
  head = p2 = p1;
 }
 else {
  p2->next = p1;
  p2 = p1;
 }
 }
 return(head);
}

// Inventory data (wb Just write )
void WriteData_wb(struct Student *head) {
 FILE *fp;
 struct Student *p;
 if((fp = fopen(filename, "wb"))==NULL)
 printf("\a  File opening error ");
 p = head;
 while(p!=NULL) {
 if(fwrite(p,LEN,1,fp)!=1) {
  printf(" Error writing data \n");
  fclose(fp);
  return;
 }
 p=p->next;
 }
 fclose(fp);
}

// Inventory data (ab additional )
void WriteData_ab(struct Student *head)
{
 FILE *fp;
 struct Student *p;
 if((fp = fopen(filename, "ab"))==NULL)
 printf("\a  File opening error !");
 p = head;
 while(p!=NULL) {
 if(fwrite(p,LEN,1,fp)!=1) {
  printf(" Error writing data \n");
  fclose(fp);
  return;
 }
 p=p->next;
 }
 fclose(fp);
}


// The read data file is saved to the linked list   , returns a pointer to the header of the chain
struct Student *ReadData(void)
{
 struct Student *head = NULL;
 struct Student *p1, *p2;//s = p1;p = p2;

 FILE *fp;
 if((fp=fopen(filename,"rb+"))==NULL)
 {
 printf(" Error opening file \n");
 exit(0);
 }
 while(!feof(fp)) {
 if((p1=(struct Student*)malloc(LEN))==NULL){
  printf(" Memory request error \n");
  fclose(fp);
  exit(0);
 }
 if(fread(p1,LEN,1,fp)!=1){
  free(p1);
  break;
 }
 if(head==NULL)
 head=p2=p1;
 else{
  p2->next=p1;
  p2=p1;
 }
 }
 fclose(fp);
 return (head);
}

// All of the query
void display()
{
 system("cls");
 void menu_print_out(void);
 struct Student *p;
 p = ReadData();
 menu_print_out();
 do
 {
 printf("%-10s%6s%8s%4d%13s%11s %4s %4s",p->num,p->name,p->sex,
 p->age,p->phone,p->address,p->birthday,p->mail);
 p = p->next;
 printf("\n\n");
 }while(p!=NULL);
 printf("\n\n");
}

// Student number query
int query_num()
{
 system("cls");
 void menu_print_out();
 struct Student *p;
 char str_num[10];
 printf(" Please enter the student number you want to query :");
 scanf("%s", str_num);
 p = ReadData();
 menu_print_out();
 do {
 if(strcmp(p->num,str_num)==0) {
  printf("%-10s%6s%8s%4d%13s%11s %4s %4s",p->num,p->name,p->sex,
 p->age,p->phone,p->address,p->birthday,p->mail);
  printf("\n\n");
  return 0;
 }
 p = p->next;
 }while(p!=NULL);
 printf(" The database does not store the data you want to query! \n");
 printf("\n\n");
 return 0;
}

// Name query
int query_name()
{
 system("cls");
 void menu_print_out(void);
 struct Student *p;
 char str_name[20];
 printf(" Please enter the name you want to query :");
 scanf("%s", str_name);
 p = ReadData();
 menu_print_out();
 do {
 if(strcmp(p->name,str_name)==0)
 {
  printf("%-8s%6s%8s%4d%13s%11s %4s %4s",p->num,p->name,p->sex,
 p->age,p->phone,p->address,p->birthday,p->mail);
  printf("\n\n");
  return 0;
 }
 p = p->next;
 }while(p!=NULL);
 printf(" The database does not store the data you want to query! \n");
 printf("\n\n");
 return 0;
}

// 【 1 Modify data deletion record
int delStudent()
{
 struct Student *p1, *p2, *head;
 char str_num[20];
 printf("\n Please enter the student number you want to delete :");
 scanf("%s", str_num);
 p1 = ReadData();
 p2 = p1->next;
 head = p1;
 while(p2!=NULL)
 {
 if(strcmp(p1->num,str_num)==0) {
  WriteData_wb(p2);
 }
 else if(strcmp(p2->num,str_num)==0) {
  p1->next = p2->next;
  WriteData_wb(head);
 }
 p2 = p2->next;
 p1 = p1->next;
 }
 if(p2!=NULL)
 printf(" The data you want to delete is not stored in the database! \n");
 printf("\n\n");
 return 0;
}

// 【 2 Modification record of modified data
int change1()
{
 void menu_print_in(void);
 struct Student *p1, *p2, *head;
 char str_num[20];
 printf(" Please enter the student number you want to modify :");
 scanf("%s", str_num);
 p1 = ReadData();
 p2 = p1->next;
 head = p1;
 while(p2!=NULL)
 {
 if(strcmp(p1->num,str_num)==0) {
  menu_print_in();
  scanf("%s%s%s%d%s%s%s%s",p1->num,p1->name,p1->sex,
 &p1->age,p1->phone,p1->address,p1->birthday,p1->mail);
  WriteData_wb(head);
 }
 else if(strcmp(p2->num,str_num)==0)
 {
  menu_print_in();
  scanf("%s%s%s%d%s%s%s%s",p2->num,p2->name,p2->sex,
 &p2->age,p2->phone,p2->address,p2->birthday,p2->mail);
  WriteData_wb(head);
 }
 p2 = p2->next;
 p1 = p1->next;
 }
 if(p2!=NULL)
 printf(" The data you want to delete is not stored in the database! \n");
 return 0;
}
void start() // The welcome screen
{
 system("color 1E");
 printf("\n\n\n\n\n\n\n\n\n\t\t\t It even though it's you you you you you you you you you you you you you you you \n");
 printf("\t\t\t Even though      Even though \n");
 printf("\t\t\t Even though   Welcome to the student information management system   Even though \n");
 printf("\t\t\t Even though      Even though \n");
 printf("\t\t\t It even though it's you you you you you you you you you you you you you you you \n");
 printf("\n\t\t\t\t System start up .........\n");
 printf("===============================================================================\r");
 for(int i=1;i<80;i++)
 {
  Sleep(40);
  printf(">");
 }
 system("CLS");
 welcome();
}
void welcome()// Login screen
{
 system("CLS");
 system("color 2");
 printf("\n\n\n\n\n\n\t\t\t U u u u u u u u u u u u u u u u \n");
 printf("\t\t\t u      u \n");
 printf("\t\t\t u   Welcome to the student information management system   u \n");
 printf("\t\t\t u      u \n");
 printf("\t\t\t u   Designer: wu jingchao   u \n");
 printf("\t\t\t u      u \n");
 printf("\t\t\t u   Date: 2016.7.1  u \n");
 printf("\t\t\t u      u \n");
 printf("\t\t\t U u u u u u u u u u u u u u u u \n");

 printf("\n\t\t\t Press any key to continue ...");
 getchar();
 system("CLS");
 menu();
}
// The main menu
void menu()
{
 void addStudent();
 void query();
 int File_name();
 void change();
 system("CLS");
 system("color D");
 printf("\t\t\t Main menu * * * * * * * * * * * * * * * * * * \n");
 printf("\n\n\n\n\n\t\t\t Does does does does does does does does does does does does does does \n");
 printf("\t\t\t does     does \n");
 printf("\t\t\t does  1. Input student information   does \n");
 printf("\t\t\t does ------------------------ does \n");
 printf("\t\t\t does  2. Search for student information   does \n");
 printf("\t\t\t does ------------------------ does \n");
 printf("\t\t\t does  3. Modify student information   does \n");
 printf("\t\t\t does ------------------------ does \n");
 printf("\t\t\t does  4.  Log out   does \n");
 printf("\t\t\t does ------------------------ does \n");
 printf("\t\t\t Does does does does does does does does does does does does does does \n");
 printf("\n\t\t Please enter the sequence number before the function to select the service item :");

 int a = 0;
 a = getchar();

 while(a!='1'&&a!='2'&&a!='3'&&a!='4') {
 printf(" Error, please enter the correct number !\n");
 putchar('\a');
 getchar();
 printf("\n\t\t Please enter the sequence number before the function to select the service item :");
 a = getchar();
 }
 switch(a) {
 case '1': File_name();addStudent();
 break;
 case '2': File_name();query();
 break;
 case '3': File_name();change();
 break;
 case '4': exit(0);
 break;
 }
 getchar();
}

int File_name()
{
 printf("\n\t\t Please enter the file you want to open :");
 if(scanf("%s", filename)!=1)
 printf("\a error!");
 return 0;
}
//2 Add data to level menu
void addStudent()
{
 int Creat_num();
 system("cls");
 getchar();
 system("CLS");
 system("color B");
 printf("\t\t\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n");
 printf("\n\n\n\n\n\t\t\t Does does does does does does does does does does does does does \n");
 printf("\t\t\t does     does \n");
 printf("\t\t\t does  1.  The new file   does \n");
 printf("\t\t\t does ---------------------- does \n");
 printf("\t\t\t does  2.  Add data   does \n");
 printf("\t\t\t does ---------------------- does \n");
 printf("\t\t\t does  3.  Return to the menu   does \n");
 printf("\t\t\t does ---------------------- does \n");
 printf("\t\t\t Does does does does does does does does does does does does does \n");
 printf("\n\t\t Please enter the sequence number before the function to select the service item :");

 int a = 0;
 a = getchar();

 while(a!='1'&&a!='2'&&a!='3')
 {
 printf(" Error, please enter the correct number !\n");
 putchar('\a');
 getchar();
 printf("\n\t\t Please enter the sequence number before the function to select the service item :");
 a = getchar();
 }
 switch(a) {
 case '1': WriteData_wb(Creat(Creat_num()));
  printf("\n The new file was created successfully and the data was saved successfully \n");
  system("pause");
  system("cls");
  addStudent();
 break;
 case '2': WriteData_ab(Creat(Creat_num()));
  printf("\n The data was added successfully \n");
  system("pause");
  system("cls");
  addStudent();
 break;
 case '3': system("cls");
  getchar();
  menu();
 break;
 }
}

//2 Level menu query data
void query()
{
 system("cls");
 getchar();
 while(1)
 {
 system("CLS");
 system("color C");
 printf("\t\t\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n");
 printf("\n\n\n\n\n\t\t\t Does does does does does does does does does does does does does does \n");
 printf("\t\t\t does     does \n");
 printf("\t\t\t does  1. All of the query   does \n");
 printf("\t\t\t does ------------------------ does \n");
 printf("\t\t\t does  2. Student number query   does \n");
 printf("\t\t\t does ------------------------ does \n");
 printf("\t\t\t does  3. Name query   does \n");
 printf("\t\t\t does ------------------------ does \n");
 printf("\t\t\t does  4. Return to the menu   does \n");
 printf("\t\t\t does ------------------------ does \n");
 printf("\t\t\t Does does does does does does does does does does does does does does \n");
 printf("\n\t\t Please enter the sequence number before the function to select the service item :");
 int a = 0;
 a = getchar();

 while(a!='1'&&a!='2'&&a!='3'&&a!='4')
 {
  printf(" Error, please enter the correct number !\n");
  putchar('\a');
  getchar();
  printf("\n\t\t Please enter the sequence number before the function to select the service item :");
  a = getchar();
 }
 switch(a) {
  case '1': display();system("pause");getchar();
  break;
  case '2': query_num();system("pause");getchar();
  break;
  case '3': query_name();system("pause");getchar();
  break;
  case '4': system("cls");getchar();menu();
  break;
 }
 }
}
int Creat_num() {
 printf("\n\t\t Please enter the number of data you want to add :");
 int n;
 if(scanf("%d", &n)!=1) {
 printf("\a error!");
 }
 return n;
}
//2 Level menu modification data /
void change()
{
 system("cls");
 getchar();
 while(1)
 {
 system("CLS");
 system("color A");
 printf("\t\t\t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n");
 printf("\n\n\n\n\n\t\t\t Does does does does does does does does does does does does does does \n");
 printf("\t\t\t does     does \n");
 printf("\t\t\t does  1. Delete records   does \n");
 printf("\t\t\t does ------------------------ does \n");
 printf("\t\t\t does  2. Modify the record   does \n");
 printf("\t\t\t does ------------------------ does \n");
 printf("\t\t\t does  3. Return to the menu   does \n");
 printf("\t\t\t does ------------------------ does \n");
 printf("\t\t\t Does does does does does does does does does does does does does does \n");
 printf("\n\t\t Please enter the sequence number before the function to select the service item :");

 int a = 0;
 a = getchar();

 while(a!='1'&&a!='2'&&a!='3')
 {
 printf(" Error, please enter the correct number !\n");
 putchar('\a');
 getchar();
 printf("\n\t\t Please enter the sequence number before the function to select the service item :");
 a = getchar();
 }
 switch(a) {
  case '1': delStudent();
  printf("\n\n The specified data was successfully deleted \n");
  system("pause");
  getchar();
  break;
  case '2': change1();
   printf("\n\n The specified data was successfully modified \n");
  system("pause");
   getchar();
  break;
  case '3': system("cls");
  getchar();
  menu();
  break;
 }
 }
}

// I/o prompt bar
void menu_print_in() {
 printf("------------------------------------------------------------------------\n");
 printf(" Student id   The name   gender   age   The phone    address   birthday   mail  \n");
 printf("------------------------------------------------------------------------\n");
}
void menu_print_out(void) {
 printf("--------------------------------------------------------------------------\n");
 printf(" Student id   The name   gender   age   The phone    address   birthday   mail  \n");
 printf("--------------------------------------------------------------------------\n");
}

// The main function
int main()
{
 start();
 return 0;
}

For more information, please refer to the topic “management system development”.