⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ѧ

📁 本程序是用C语言编写的实现了学生的管理与查询功能,其基本功能是管理员可以通过密码进入管理员系统,管理员可以对学生信息进行创建
💻
字号:
#include<stdio.h>            /*头文件*/
#include<string.h>
#include<conio.h>
#definde MAXI 100
struct person
{
 char name[13];              /*定义名字为字符数组*/
 char number[8];             /*定义电话号码为字符数组*/
 struct socer
  {
    char math[3];
    char english[3];
    char java[3];
   }socer;              /*定义地址为字符数组*/
}person[MAXI];                /*定义用户信息结构体数组(个数可随便定)*/
void new()                               /*新建函数*/
{
 int i;FILE *fp;int j;
 printf("You want to build how many:");
 scanf("%d",&j);                               /*输入要新建的个数*/
 printf("enter student's name ,number, and socer:\n");
 for(i=0;i<j;i++)
 {
  printf("enter name:");
  scanf("%s",person[i].name);
  printf("enter number:");
  scanf("%s",person[i].number);
  printf("enter math socer:");
  scanf("%s",person[i].socer.math);
  printf("enter english socer:");
  scanf("%s",person[i].socer.english);
  printf("enter java socer:");
  scanf("%s",person[i].socer.java);   
 }
 fp=fopen("file1.c","w");                              

 for(i=0;i<j;i++)
 if(fwrite(&person[i],sizeof(struct person),1,fp)!=1) /*把信息写入文件*/  
                                                       
 printf("File write error!!!\n");
 fclose(fp);                                            /*关闭文件*/
}
void change()                                   /*修改函数*/
{
 int i;FILE *fp;int k;
 printf("Please enter you want to change's number:");
 scanf("%d",&i);                                          
/*输入要修改第几个*/
 i=i-1;                                               
/*把位子与输入的相对应*/
 printf("\nenter person's name number and socer:\n");
 fp=fopen("file1.c","r+");                             
/*以读写的方式打开文件*/
 k=i*40;                                              
 fseek(fp,k,0);                                       
/*找到在文件中的位置*/
 
scanf("%s%s%s%s%s",persons[i].name,person[i].number,person[i].socer.math,person[i].socer.english,person[i].socer.java);/*输入修改信息*/
 if(fwrite(&person[i],sizeof(struct person),1,fp)!=1)          
/*写入文件中*/
 printf("File write error!!\n");
 fclose(fp);                                             /*关闭文件*/
}
void list()
{
 int i,r;FILE *fp;
 fp=fopen("file1.c","r");                               
/*以读的方式打开文件*/
 for(r=0;r<=30;r++) printf("* ");                       
/*打印星号为了好看*/
 printf("\n");
 printf("     Name     Number      Math       English       Java\n");         /*打印*/
 i=0;
 while(!feof(fp))                                          /*读文件*/
 {
  fread(&person[i],sizeof(struct person),1,fp);           
/*一个一个地读文件*/
  
printf("%-10s%s%s%s%s\n",person[i].name,person[i].number,person[i].socer.math,person[i].socer.english,person[i].socer.java);/*打印*/
  i++;
 }
 for(r=0;r<=30;r++) printf("* ");
 printf("\n");
 fclose(fp);                               /* 关闭文件*/
}
void delete()                              /*栓出函数*/
{
 int i;FILE *fp;
 printf("Enter you want to delete number i:");
 scanf("%d",&i);                           /*输入栓出那一个*/
 i=i-1;
 fp=fopen("file1.c","r+");
 fseek(fp,40*i,0);                         /*在文件中定位*/
 strcpy(person[i].name,"             ");      
 strcpy(person[i].numbber,"            ");         /*用空格覆盖信息*/
 strcpy(person[i].socer.math,"               ");
 strcpy(person[i].socer.english,"               ");
 strcpy(person[i].socer.java,"               ");
 if(fwrite(&person[i],sizeof(struct person),1,fp)!=1)  /*写入文件*/
 printf("File write error!!\n");
 fclose(fp);                                            /*关闭文件*/
}
void add()                                        /*增加函数*/
{
 int i,j;FILE *fp;
 printf("Please enter you want to add how many:");
 scanf("%d",&i);                                  /*输入增加个数*/
 printf("Enter person's name number socer:\n");
 for(j=0;j<i;j++)                                /*用循环结构输入信息*/
 scanf("%s%s%s%s%s",person[j].name,person[j].number,person[j].socer.math,person[i].socer.english,person[i].socer.java);
 fp=fopen("file1.c","a");                        
/*以增加的方式打开文件*/
 for(j=0;j<i;j++)
 if(fwrite(&person[j],sizeof(struct person),1,fp)!=1)   
/*再写入文件中*/
 printf("File write error!!\n");
 fclose(fp);                           /*关闭文件*/
}
void fromename()                       /*根据名字查询函数*/
{
 int i,n=0,r,m;FILE *fp;char name1[10];
 printf("Enter a name to find your information:");
 scanf("%s",name1);                             /*输入你要查询的名字*/
 if((fp=fopen("file1.c","r"))==NULL)             /*以读的方式打开文件*/
 {printf("Can't open the file!\n");exit(0);}
 i=0;
 while(!feof(fp))                               
/*用循环结构读文件到末尾*/
 {
  fread(&person[i].name,sizeof(struct person),1,fp); 
/*一个一个地读取文件的内容*/
  if(strcmp(person[i].name,name1)==0)       
/*把输入的名字以文件中的相比较*/
  {m=i;n++;break;}
 }
 if(n==0) printf("This file haven't the name!!\n");  
/*若没找到打印提示信息*/
 else
 {
  for(r=0;r<=30;r++) printf("* ");
     printf("\n");
 printf("     Name     Number      Math       English       Java\n");
 
printf("%-10s%s%s%s%s\n",person[i].name,person[i].number,person[i].socer.math,person[i].socer.english,person[i].socer.java);
 for(r=0;r<=30;r++) printf("* ");
     printf("\n");
 }
 fclose(fp);                               /*关闭文件*/
}
void fromnumber()                          /*根据电话号码查询信息函数*/
{
 int i,m,r,n=0;FILE *fp;
 char n1[12];
 int k;
 printf("Enter you want to find number to get your information:");
 scanf("%s",n1);                         /*输入你要查询的电话号码*/
 fp=fopen("file1.c","r");                     /*以读的方式打开文件*/
 i=0;
 while(!feof(fp))                          
./*用循环结构读文件直到末尾*/
 {
  k=13+40*i;                                
/*确定电话号码在文件中的位置*/
  fseek(fp,k,0);
  fread(&person[i].phone,sizeof(struct person),1,fp);  
/*读取文件中的电话号码*/
  if(strcmp(person[i].number,n1)==0) 
/*把输入的电话号码与在文件中读出的比较*/ 
  {m=i;n++;break;}
  i++;
 }
 if(n==0) printf("This file haven't the phone!!\n");   
/*如没找到打印提示信息*/
 else
 {
  for(r=0;r<=30;r++) printf("* ");
     printf("\n");
 printf("     Name     Number      Math       English       Java\n");
 
printf("%-10s%s%s%s%s\n",person[i].name,person[i].number,person[i].socer.math,person[i].socer.english,person[i].socer.java);
 for(r=0;r<=30;r++) printf("* ");
     printf("\n");
 }
 fclose(fp);                                         /*关闭文件*/
}
void fromsocer()                                     
/*根据地址查询函数*/
{
 int i,m,r,n=0;FILE *fp;char s[8];
 printf("Enter a addr to find your information:");
 scanf("%s",addr1);                                 
/*输入要查询的地址*/
 if((fp=fopen("file1.c","r"))==NULL)                
/*以读的方式打开文件*/
 {printf("Can't open the file!\n");exit(0);}
 i=0;
 while(!feof(fp))                            
/*用循环结构读文件直到末尾*/
 {
  fseek(fp,25+40*i,0);                       /*确定地址在文件中的位置*/
  fread(&person[i].addr,sizeof(struct person),1,fp); 
/*读取文件中的地址*/
  if(strcmp(person[i].socer.math,s1)==0)             
/*把输入的地址与文件中的比较*/ 
  {m=i;n++;break;}
  i++;
 }
 if(n==0) printf("This file haven't the socer!!\n");   
/*如没找到打印提示信息*/
 else
 {
  for(r=0;r<=30;r++) printf(". ");
     printf("\n");
 printf("     Name     Number      Math       English       Java\n");
 
printf("%-10s%s%s%s%s\n",person[i].name,person[i].number,person[i].socer.math,person[i].socer.english,person[i].socer.java);
 for(r=0;r<=30;r++) printf(". ");
     printf("\n");
 }
 fclose(fp);                               /*关闭文件*/
}
void managerlogin()                    /*管理员密码函数*/
{
   FILE *fp;
   int i,n=0,m=1;
   char pw1[10],pw2[10];
   while(m==1)
   {
      printf("please input a code:");
      if((fp=fopen("f2.c","r"))==NULL)            
/*以读的方式打开密码文件*/
      {
  printf("Can't open output file:\n");
  exit(0);
      }
      fgets(pw1,9,fp);            /*把文件中的八位书密码读出放在pw1中*/
      for(i=0;i<8;i++)            /*用循环结构输入密码*/
      {
   pw2[i]=getch();              /*输入密码*/
   putchar('*');                /*用星号把输入的数字覆盖*/
      }
      pw2[8]='\0';                 
      if(strcmp(pw1,pw2)==0)            
/*把输入的密码与文件读出的比较*/
      {
   m=0;printf("\n");
       manager();                     
/*如输入密码正确则执行管理员函数*/
       fclose(fp);                  /*关闭密码文件*/
      }
      else                          /*如输入密码不正确则执行*/
      {
     n++;                     /*n加一*/
       clrscr();                   /*清屏*/
      }
      if(n==3) exit();         /*如输入密码三次不正确则退出*/
   }
}
 manager()                     /*管理员函数*/
{
     int choice,r;
     while(1)                     /*循环执行直到退出*/
     {
       for(r=0;r<=30;r++) printf(". ");
       printf("\n");
       printf("\nThis is MANAGAER'S system:\n");    /*打印菜单选项*/
       printf("\t1.  Add inforamtion.\n");
       printf("\t2.  List information.\n");
       printf("\t3.  Delete information.\n");
       printf("\t4.  Look-up information.\n");
       printf("\t5.  New information.\n");
       printf("\t6.  Change information.\n");
       printf("\t0.  Exit the system.\n");
       for(r=0;r<=30;r++) printf(". ");
       printf("\n");
       printf("Please enter a number:");
       scanf("%d",&choice);                /*输入你要执行的选择*/
       switch(choice)                     /*执行你要执行的函数*/
       {
   case 1:add();break;
   case 2:list();break;
   case 3:delete();break;
   case 4:from();break;
   case 5:new();break;
   case 6:change();break;
   case 0:clrscr();exit();break;
       }
    }
}
 from(void)                            /*查询函数*/
{ int k,r;
  for(r=0;r<=30;r++) printf(". ");
     printf("\n");
  printf("\nThis is FIND style:\n");        /*打印提示信息*/
  printf("\t1.  Find information from socer.\n");
  printf("\t2.  Find information from number.\n");
  printf("\t3.  Find information from name.\n");
  for(r=0;r<=30;r++) printf(". ");
     printf("\n");
  printf("Please a number:");
  scanf("%d",&k);                             /*输入你的选择*/
  if(k>3||k<1)
    printf("This is wrong:\n");
  else
    switch(k)                                  /*执行所选择的函数*/
     {
  case 1:fromsocer();break;
  case 2:fromenumber();break;
  case 3:fromename();break;
     }
}
void user()                                /*用户查询函数*/
{
   int k,r;
   for(r=0;r<=30;r++) printf(". ");
     printf("\n");
   printf("\nThis is USER'S STYLE:\n");            /*打印提示信息*/
   printf("\t1.  Find information from socer.\n");
   printf("\t2.  Find information from number.\n");
   printf("\t3.  Find information from name.\n");
   for(r=0;r<=30;r++) printf(". ");
     printf("\n");
   printf("Please a number:");
   scanf("%d",&k);                  /*输入你的选择*/
   if(k>3||k<1)
      printf("this is wrong:\n");
   else
      switch(k)                   /*执行所选择的函数*/
      {
 case 1:fromsocer();break;
 case 2:fromnumber();break;
 case 3:fromname();break;
      }
  printf("Put any key to back to menu!!!\n");       /*打印提示信息*/
}
main()                                           /*主函数部分*/
{
   int m,r;
   while(1)                          /*用循环结构执行命令*/
   {
     for(r=0;r<=30;r++) printf(". ");
     printf("\n");
     printf("This is tong xun lu:\n");        /*打印主菜单*/
     printf("\n\t1. Manager system:\n");
     printf("\n\t2. User system:\n");
     printf("\n\t3. Exit system:\n");
     for(r=0;r<=30;r++) printf(". ");
     printf("\n");
     printf("Please enter a munber:");
     scanf("%d",&m);                      /*输入要执行函数的数字*/
     if(m>3||m<1)                       /*如输入错误打印提示信息*/
     {printf("This is wrong!\n");printf("Put any key to back to 
meun!!\n");}
     else                              /*如输入正确执行*/
       switch(m)
       {
   case 1:managerlogin();break;           /*执行管理员函数*/
   case 2:user();break;                   /*执行用户函数*/
   case 3:clrscr();exit();break;          /*退出系统*/
       }while(!kbhit()) fflush(stdin);        /*这是老师给的不用说明*/
    }
}_
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -