c语言制作的学生成绩管理系统 加链表

原文地址为: c语言制作的学生成绩管理系统 加链表

 /*--------------------data.txt文件是存储学生成绩信息的文件---------------------------*/
/*--------------------time.txt文件是存储备份时间的文件-------------------------------*/
/*--------------------备份文件的文件名字需要自己输入---------------------------------*/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h> 
#include<string.h>
#include<time.h>  //  必须的时间函数头文件
#define BACKSPACE 8
#define N 3
#define LEN (linklist *)malloc(sizeof(linklist))
#define PRINTF printf("学号            系院           班级       姓名        数学   语文   英语   总分\n")
#define PRINTF1 printf("学号            系院           班级       姓名        数学\n")
#define PRINTF2 printf("学号            系院           班级       姓名        语文\n")
#define PRINTF3 printf("学号            系院           班级       姓名        英语\n")
typedef struct node
{
char snum[18];  //  学号
char xueyuan[21];  // 系院
char classr[15];
char sname[15];  //姓名
float score[N];  // 分数
float sum;  //总分
struct node *next;  
}linklist;
int main()
{
int n; 
void menu();   // 主菜单
void login();   //  登录界面
void zi_menu();  // 前台查询学生成绩下的菜单
menu();    // 主菜单函数
scanf("%d",&n);
switch(n)
{
case 1:
zi_menu();  //显示所以学生信息
break;
    case 2:
login();   //  登录界面
        break;
   default:break;
}
return 0;
}
/*----------------主菜单界面函数----------------------------*/
void menu()  
{
  system("cls");
  printf("\n\n\n\n");
  printf("\t\t|---------------------主菜单------------------|\n");
  printf("\t\t|---------------按下面数字选择操作------------|\n");
  printf("\t\t|\t1. 查看学生成绩                       |\n");
  printf("\t\t|\t2. 后台登录                           |\n");
  printf("\t\t|\t0. 退出                               |\n");
  printf("\t\t|---------------------------------------------|\n");
  printf("请输入所选操作:");
}
/*---------------登录后的菜单页面---------------------*/
void login_menu()  
{
int n,m;
  linklist *creat();   // 创建链表  数据添加
  void view(int);    //  查找所有数据函数
  void delete_student();  //  删除某一条学生信息
  void update();   //  修改某一条学生信息
  void search();   // 查询某一条学生的信息
  void beifen();  // 备份函数
  void show_beifen();   // 查看备份信息
  void sort_score();    //  
  system("cls");   //  清屏
  printf("\n\n\n\n");
  printf("\t\t|---------------------主菜单------------------|\n");
  printf("\t\t|---------------按下面数字选择操作------------|\n");
  printf("\t\t|\t1. 添加学生成绩                       |\n");
  printf("\t\t|\t2. 查看学生成绩                       |\n");
  printf("\t\t|\t3. 删除学生成绩                       |\n");
  printf("\t\t|\t4. 修改学生成绩                       |\n");
  printf("\t\t|\t5. 查找某一条学生信息                 |\n");
  printf("\t\t|\t6. 备份文件                           |\n");
  printf("\t\t|\t7. 查看备份文件的学生信息             |\n");
  printf("\t\t|\t0. 退出                               |\n");
  printf("\t\t|---------------------------------------------|\n");


  printf("请输入所选操作:");
   scanf("%d",&n);
  switch(n)
   {
   case 1: 
  creat();   // 创建链表  数据添加
  break;
   case 2:
  printf("1.查看学生的全部成绩信息\n");
  printf("2.查看所有的数学成绩信息\n");
       printf("3.查看所有生的语文成绩信息\n");
  printf("4.查看所有生的英语成绩信息\n");
       printf("0.退出\n");
  printf("请输入你的选项:");
  scanf("%d",&m);
  view(m);    //  查找所有数据函数
  break;
   case 0:
  return;
  break;
   case 3:
  delete_student(); //  删除某一条学生信息
  break;
   case 4:
  update();   // 修改某一条学生的信息
  break;
   case 5:
  search();   // 查询某一条学生的信息
  break;
   case 6:
  beifen();   // 备份
  break;
   case 7:
  show_beifen();
  break;
  default:break;
   }
  printf("按任意键返回主菜单");
  getch();
  login_menu();
}
/*-------------------前台子菜单----------------------*/
void zi_menu()
{
int n,m;
void view(int);
void search();
printf("1.查看学生的成绩信息\n");
printf("2.按条件查询学生信息\n");
printf("请输入你要查询的数字:");
scanf("%d",&n);
switch(n)
{
case 1:
  printf("1.查看学生的全部成绩信息\n");
  printf("2.查看所有的数学成绩信息\n");
       printf("3.查看所有生的语文成绩信息\n");
  printf("4.查看所有生的英语成绩信息\n");
       printf("0.退出\n");
  printf("请输入你的选项:");
  scanf("%d",&m);
  view(m);    //  查找所有数据函数
  break;
case 2:
search();
break;
   default:break;
}
printf("按任意键返回主菜单");
getch();
main();
}
/*----------- 登录验证--------------------------*/
void login()   
{
  char username[25],password[20],ch;
  int i;
do{
  i=0;
  system("cls");
  printf("\n\n\n\n");
  printf("\t\t|---------------------主菜单------------------|\n");
  printf("\t\t\t 用户名:");
  scanf("%s",username);
  printf("\t\t\t 密  码:");
  /*---------------把输入密码框变成*---------------*/
  while((ch=getch())!='\r')
  {
    if (ch == BACKSPACE)
{
     if (i > 0)
{
      password[--i] = NULL;
      printf("\b ");
      printf("%c%c%c", BACKSPACE, ' ', BACKSPACE);
}
     else
      putchar(7); 
}else{
        printf("*");
        password[i++]=ch; 
}
  }
  /*------------------------------------------*/
  password[i]='\0';
  printf("\n");
  printf("\t\t|---------------------------------------------|\n");
  if(strcmp(username,"huangjianxiang")!=0 || strcmp(password,"huangjianxiang")!=0)
  {
 printf("用户名或者密码错误,按任意键重新输入\n");
 getch();
  }else{
    login_menu();
  }
}while(strcmp(username,"huangjianxiang")!=0 || strcmp(password,"huangjianxiang")!=0);


}
/*-------------------创建链表,添加数据---------------------*/
linklist *creat()
{
    system("cls");
FILE *fp;
int i;
char ch[2];
void view(int);
    linklist *r,*s,*head;
head=LEN;
r=head;
view(1);
printf("是否添加学生成绩信息(Y/N):");
    scanf("%s",ch);
while(strcmp(ch,"Y")==0 || strcmp(ch,"y")==0)
{
        system("cls");
   view(1);
if((fp=fopen("data.txt","a+"))==NULL)
{
    printf("打开失败\n");
    return 0;
}
s=LEN;
s->sum=0;
printf("请输入学号:");
scanf("%s",s->snum);
fscanf(fp,"%s%s%s%s",head->snum,head->xueyuan,head->classr,head->sname);
        for(i=0;i<N;i++)
    fscanf(fp,"%f",&head->score[i]);
   fscanf(fp,"%f",&head->sum);
while(feof(fp)==0)
{
       if(strcmp(head->snum,s->snum)==0)
{
printf("该学号已经存在\n");
fclose(fp);
return 0;
}
fscanf(fp,"%s%s%s%s",head->snum,head->sname,head->classr,head->xueyuan);
for(i=0;i<N;i++)
fscanf(fp,"%f",&head->score[i]);
   fscanf(fp,"%f",&head->sum);
}
        printf("请输入学院:");
scanf("%s",s->xueyuan);
printf("请输入班级:");
scanf("%s",s->classr);
        printf("请输入姓名:");
scanf("%s",s->sname);
fprintf(fp,"%s %s %s %s ",s->snum,s->xueyuan,s->classr,s->sname);
   printf("请输入数学成绩:");
scanf("%f",&s->score[0]);
   printf("请输入语文成绩:");
scanf("%f",&s->score[1]);
   printf("请输入英语成绩:");
scanf("%f",&s->score[2]);
        for(i=0;i<N;i++)
{
s->sum+=(s->score[i]);
            fprintf(fp,"%f ",s->score[i]);
}
        fprintf(fp,"%f ",s->sum);
printf("保存成功\n");
fclose(fp);
printf("是否继续添加(Y/N):");
        r->next=s;
r=s;
        scanf("%s",ch);
}
r->next=NULL;
return head;
}
/*---------------------显示所有成绩信息----------------------*/
void view(int n)
{
FILE *fp;
    int i,m=0,j=0,jige=0,youxiu=0,z,y;
linklist *head,*r,*p,*q;
float sum=0;
if(n==0)
return;
system("cls");
if((fp=fopen("data.txt","r"))==NULL)
{
printf("打开文件失败,可能是此文件不存在\n");
return;
}
head=LEN;
r=head;
p=LEN;
fscanf(fp,"%s%s%s%s",p->snum,p->xueyuan,p->classr,p->sname);
    for(i=0;i<N;i++)
fscanf(fp,"%f",&p->score[i]);
fscanf(fp,"%f",&p->sum);
while(!feof(fp))
{
r->next=p;
        r=p;
p=LEN;
  fscanf(fp,"%s%s%s%s",p->snum,p->xueyuan,p->classr,p->sname);
    for(i=0;i<N;i++)
fscanf(fp,"%f",&p->score[i]);
fscanf(fp,"%f",&p->sum);
       m++;
}
r->next=NULL;
fclose(fp);
printf("一共有%d条记录\n",m);
if(m==0)
{
       printf("目前尚未添加记录\n");
  return;
}
if(n==1)  PRINTF;
if(n==2)  PRINTF1;
if(n==3)  PRINTF2;
if(n==4)  PRINTF3;
for(z=1;z<=m-1;z++)
{
r=head;
        q=r->next;
        p=q->next;
        for(y=1;y<=m-z;y++)
{
 if(n==1)
 {
            if(q->sum < p->sum)
{
 r->next=p;
              q->next=p->next;
              p->next=q;
              r=p;
              p=q->next;
}
            else
{
  r=q;
               q=p;
               p=p->next;
}
 }
 if(n==2)
 {
 if(q->score[0] < p->score[0])
 {
    r->next=p;
                 q->next=p->next;
                 p->next=q;
                 r=p;
                 p=q->next;
 }
              else
 {
   r=q;
                q=p;
                p=p->next;
 }
 }
 if(n==3)
 {
 if(q->score[1] < p->score[1])
 {
    r->next=p;
                 q->next=p->next;
                 p->next=q;
                 r=p;
                 p=q->next;
 }
              else
 {
   r=q;
                q=p;
                p=p->next;
 }
 }
 if(n==4)
 {
 if(q->score[2] < p->score[2])
 {
    r->next=p;
                 q->next=p->next;
                 p->next=q;
                 r=p;
                 p=q->next;
 }
              else
 {
   r=q;
                q=p;
                p=p->next;
 }
 }
}
}
    p=head->next;
while(p)
{
if(n==1)
{
   printf("%-14s%-14s%-12s%-13s",p->snum,p->xueyuan,p->classr,p->sname);
        for(i=0;i<N;i++)
    printf("%-7.1f",p->score[i]);
   printf("%-7.1f",p->sum);
}
if(n==2)
{
printf("%-14s%-14s%-12s%-13s",p->snum,p->xueyuan,p->classr,p->sname);
printf("%-7.1f",p->score[0]);
sum+=p->score[0];
j++;
if(p->score[0]>=80)
youxiu++;
if(p->score[0]>=60)
jige++;
}
if(n==3)
{
printf("%-14s%-14s%-12s%-13s",p->snum,p->xueyuan,p->classr,p->sname);
printf("%-7.1f",p->score[1]);
sum+=p->score[1];
j++;
if(p->score[1]>=80)
youxiu++;
if(p->score[1]>=60)
jige++;
}
if(n==4)
{
printf("%-14s%-14s%-12s%-13s",p->snum,p->xueyuan,p->classr,p->sname);
printf("%-7.1f",p->score[2]);
sum+=p->score[2];
j++;
if(p->score[2]>=80)
youxiu++;
if(p->score[2]>=60)
jige++;
}
printf("\n");
p=p->next;
}
if(n==2 || n==3 || n==4)
{
  printf("平均分是%-7.2f\n",sum/j);
  printf("优秀:%d\n",youxiu);
       printf("及格:%d\n",jige);
  printf("优秀率:%-4.2f%%\n",(youxiu/float(j))*100);
       printf("及格率:%-4.2f%%\n",(jige/float(j))*100);
}
fclose(fp);
}
/*--------------------删x除某一条记录,按学号或者姓名删除--------------------*/
void delete_student()
{
FILE *fp;
int i,n,m,c;
char number[20],ch[2],name[20];
linklist *head,*p,*r,*q;
system("cls");
loop: printf("1.按学生学号删除\n");
printf("2.按学生姓名删除\n");
printf("请输入你的选项:");
scanf("%d",&n);
    if(n!=1 && n!=2)   
{
printf("输入的选项不存在,请重新操作\n");
goto loop;
}
view(1);
head=LEN;
    printf("是否删除学生信息(Y/N):");
scanf("%s",ch);
while(strcmp(ch,"Y")==0 || strcmp(ch,"y")==0)
{
m=0;
c=0;
       if((fp=fopen("data.txt","r"))==NULL)
  {
    printf("打开文件失败\n");
    return;
  }
    r=head;
p=LEN;
fscanf(fp,"%s%s%s%s",p->snum,p->xueyuan,p->classr,p->sname);
        for(i=0;i<N;i++)
    fscanf(fp,"%f",&p->score[i]);
   fscanf(fp,"%f",&p->sum);
while(feof(fp)==0)
{
m++;
       r->next=p;
r=p;
p=LEN;
       fscanf(fp,"%s%s%s%s",p->snum,p->xueyuan,p->classr,p->sname);
        for(i=0;i<N;i++)
    fscanf(fp,"%f",&p->score[i]);
   fscanf(fp,"%f",&p->sum);
}
r->next=NULL;
fclose(fp);
   p=head;
q=head->next;
if(n==1)
{
printf("请输入要删除的学号:");
scanf("%s",number);
}
if(n==2)
{
printf("请输入要删除的学生姓名:");
scanf("%s",name);
}
while(q)
{
if((strcmp(q->snum,number)!=0 && n==1) || (strcmp(q->sname,name)!=0 && n==2))  // 如果n=1是按学号删除  如果n=2 是按姓名删除
{
q=q->next;
p=p->next;
c++;
}
else{
p->next=q->next;
free(q);
break;
}
}
if(c==m && n==1)
{
printf("此学号不存在,请重新输入\n");
}else if(c==m && n==2){
printf("此姓名不存在,请重新输入\n");
}else{
       if((fp=fopen("data.txt","w"))==NULL)
{
        printf("打开文件失败!");
        return;
}
    q=head->next;
   while(q)
{
        fprintf(fp,"%s %s %s %s ",q->snum,q->xueyuan,q->classr,q->sname);
       for(i=0;i<N;i++)
        fprintf(fp,"%f ",q->score[i]);
   fprintf(fp,"%f ",q->sum);
       q=q->next;
}  
       fclose(fp);
   printf("信息删除成功\n");
   view(1);
}
   printf("是否继续删除学生信息(Y/N):");
   scanf("%s",ch);
}
}
/*-----------------------------修改学生信息-------------------------------*/
void update()
{
FILE *fp;
int i,n,c,m;
float totalscore;
char ch[2],number[20],name[20];
linklist *head,*p,*r,*q;
system("cls");
loop: printf("1.按学生学号修改\n");
printf("2.按学生姓名修改\n");
printf("请输入你的选项:");
scanf("%d",&n);
    if(n!=1 && n!=2)   
{
printf("输入的选项不存在,请重新操作\n");
goto loop;
}
view(1);
head=LEN;
    printf("是否修改学生信息(Y/N):");
scanf("%s",ch);
while(strcmp(ch,"Y")==0 || strcmp(ch,"y")==0)
{
c=0;
m=0;
        if((fp=fopen("data.txt","r"))==NULL)
{
printf("打开文件失败\n");
return;
}
r=head;
p=LEN;
   fscanf(fp,"%s%s%s%s",p->snum,p->xueyuan,p->classr,p->sname);
        for(i=0;i<N;i++)
    fscanf(fp,"%f",&p->score[i]);
   fscanf(fp,"%f",&p->sum);
while(feof(fp)==0)
{
m++;
r->next=p;
r=p;
p=LEN;
   fscanf(fp,"%s%s%s%s",p->snum,p->xueyuan,p->classr,p->sname);
        for(i=0;i<N;i++)
    fscanf(fp,"%f",&p->score[i]);
fscanf(fp,"%f",&p->sum);
}
r->next=NULL;
fclose(fp);
q=head->next;
   if(n==1)
{
    printf("请输入要修改的学号:");
    scanf("%s",number);
}
    if(n==2)
{
    printf("请输入要修改的学生姓名:");
    scanf("%s",name);
}
while(q)
{
if((strcmp(q->snum,number)!=0 && n==1) || (strcmp(q->sname,name)!=0 && n==2))  // 如果n=1是按学号修改  如果n=2 是按姓名修改
{
q=q->next;
           c++;
}else{
printf("请输入新的学号:");
scanf("%s",q->snum);
                printf("请输入学院:");
       scanf("%s",q->xueyuan);
                printf("请输入班级:");
                scanf("%s",q->classr);
                printf("请输入姓名:");
       scanf("%s",q->sname);
           printf("请输入数学成绩:");
        scanf("%f",&q->score[0]);
           printf("请输入语文成绩:");
        scanf("%f",&q->score[1]);
           printf("请输入英语成绩:");
        scanf("%f",&q->score[2]);
break;
}
}
   if(c==m && n==1)
{
printf("此学号不存在,请重新输入\n");
}else if(c==m && n==2){
printf("此姓名不存在,请重新输入\n");
}else{
          if((fp=fopen("data.txt","w"))==NULL)
 {
    printf("打开文件失败\n");
   return;
 }
 q=head->next;
 while(q)
 {
              totalscore=0;
        fprintf(fp,"%s %s %s %s ",q->snum,q->xueyuan,q->classr,q->sname);
       for(i=0;i<N;i++)
{
                   totalscore+=q->score[i];
      fprintf(fp,"%f ",q->score[i]);

      fprintf(fp,"%f ",totalscore);
       q=q->next;
 }
 fclose(fp);
 printf("信息修改成功\n");
 view(1);
}
printf("是否继续修改学生信息(Y/N):");
scanf("%s",ch);
}
}
/*---------------------查看某一条成绩的信息-----------------------*/
void search()
{
FILE *fp;
linklist *head;
int i,c,m,n;
char number[18],ch[2],name[20],xiyuan[21],banji[15];
system("cls");
    head=LEN;
loop: printf("1.按学生学号查找\n");
printf("2.按学生姓名查找\n");
    printf("3.按学生系院查找\n");
printf("4.按学生班级查找\n");
printf("请输入你的选项:");
scanf("%d",&n);
    if(n!=1 && n!=2 && n!=3 && n!=4)   
{
printf("输入的选项不存在,请重新操作\n");
goto loop;
}
    printf("是否查找学生信息(Y/N):");
scanf("%s",ch);
 while(strcmp(ch,"Y")==0 || strcmp(ch,"y")==0)
 {
c=0;
m=0;
     if(n==1)
{
    printf("请输入学号:");
    scanf("%s",number);
}
if(n==2)
{
    printf("请输入要查找的学生姓名:");
    scanf("%s",name);
}
if(n==3)
{
    printf("请输入要查找的系院:");
    scanf("%s",xiyuan);
}
if(n==4)
{
    printf("请输入要查找的班级:");
    scanf("%s",banji);
}
system("cls");
    if((fp=fopen("data.txt","r"))==NULL)
{
  printf("打开文件失败\n");
   return;
}
    fscanf(fp,"%s%s%s%s",head->snum,head->xueyuan,head->classr,head->sname);
    for(i=0;i<N;i++)
  fscanf(fp,"%f",&head->score[i]);
    fscanf(fp,"%f",&head->sum);
    while(feof(fp)==0)
{
m++;
   fscanf(fp,"%s%s%s%s",head->snum,head->xueyuan,head->classr,head->sname);
        for(i=0;i<N;i++)
  fscanf(fp,"%f",&head->score[i]);
fscanf(fp,"%f",&head->sum);
}
    fclose(fp);
if(m==0)
{
printf("目前没有信息\n");
return;
}
    if((fp=fopen("data.txt","r"))==NULL)
{
  printf("打开文件失败\n");
   return;
}
PRINTF;
      fscanf(fp,"%s%s%s%s",head->snum,head->xueyuan,head->classr,head->sname);
       for(i=0;i<N;i++)
  fscanf(fp,"%f",&head->score[i]);
  fscanf(fp,"%f",&head->sum);
       while(feof(fp)==0)
  {
 if((strcmp(head->snum,number)==0 && n==1))  // 如果n=1是按学号查找  
 {
   printf("%-14s%-14s%-12s%-13s",head->snum,head->xueyuan,head->classr,head->sname);
          for(i=0;i<N;i++)
    printf("%-7.1f",head->score[i]);
printf("%-7.1f",head->sum);
printf("\n");
break;
}
if((strcmp(head->sname,name)==0 && n==2) || (strcmp(head->xueyuan,xiyuan)==0 && n==3) || (strcmp(head->classr,banji)==0 && n==4))  // 如果n=2 是按姓名查找  n=3是按系院查找  n=4是按班级  
{
   printf("%-14s%-14s%-12s%-13s",head->snum,head->xueyuan,head->classr,head->sname);
          for(i=0;i<N;i++)
    printf("%-7.1f",head->score[i]);
printf("%-7.1f",head->sum);
printf("\n");
}
 else{
c++;
}
         fscanf(fp,"%s%s%s%s",head->snum,head->xueyuan,head->classr,head->sname);
         for(i=0;i<N;i++)
  fscanf(fp,"%f",&head->score[i]);
    fscanf(fp,"%f",&head->sum);
  }
  if(c==m && n==1)
  printf("此学号不存在\n");
  if(c==m && n==2)
  printf("此姓名不存在\n");
  printf("是否继续查询学生成绩(Y/N):");
  scanf("%s",ch);
 }
}
/*-----------------备份文件------------------*/
void beifen()
{
FILE *fp,*fp1;
    linklist *head;
int i;
char filename[20];
void now_time(char filename[]);
system("cls");
head=LEN;
if((fp=fopen("data.txt","r"))==NULL)
{
printf("打开文件失败\n");
return;
}
getchar();
printf("请输入你要备份文件的文件名:");
gets(filename);
    now_time(filename);
if((fp1=fopen(filename,"w"))==NULL)
{
printf("打开文件失败\n");
return;
}
    fscanf(fp,"%s%s%s%s",head->snum,head->xueyuan,head->classr,head->sname);
for(i=0;i<N;i++)
fscanf(fp,"%f",&head->score[i]);
fscanf(fp,"%f",&head->sum);
while(feof(fp)==0)
{
         fprintf(fp1,"%s %s %s %s ",head->snum,head->xueyuan,head->classr,head->sname);
       for(i=0;i<N;i++)
{
      fprintf(fp1,"%f ",head->score[i]);

      fprintf(fp1,"%f ",head->sum);
       fscanf(fp,"%s%s%s%s",head->snum,head->xueyuan,head->classr,head->sname);
  for(i=0;i<N;i++)
    fscanf(fp,"%f",&head->score[i]);
  fscanf(fp,"%f",&head->sum);
}
printf("备份成功\n");
fclose(fp);
fclose(fp1);
}
/*------------------获取当前时间,并且存入文件time.txt中------------------*/
void now_time(char filename[])
{
FILE *fp;
    time_t rawtime;  // 时间类型(time.h 定义)
    struct tm *timeinfo;   // 时间结构,time.h 定义如下:
    if((fp=fopen("time.txt","a+"))==NULL)
{
 printf("打开文件失败\n");
 return;
}
    time(&rawtime);   //获取时间,以秒计,从1970年1月一日起算,存于rawtime
    timeinfo = localtime(&rawtime);  //  转为当地时间,tm 时间结构
printf("%s",filename);
    fprintf(fp,"%s ",filename);
    fprintf(fp,"%4d %02d %02d %02d %02d %02d\n",
            1900+timeinfo->tm_year,  // 获取当前的年份
            1+timeinfo->tm_mon,   // 获取当前的月份
            timeinfo->tm_mday,    // 获取当前的天数
            timeinfo->tm_hour,    // 获取当前当前是小时
            timeinfo->tm_min,   // 获取当前时间的分钟
            timeinfo->tm_sec);   //  获取当前时间的秒数
fclose(fp);
}
/*-----------------------查看备份信息----------------------------*/
void show_beifen()
{
FILE *fp;
char filename[20],ch[2];
int year,month,day,hour,minutes,se,m=0;
void beifen_view();  // 查看备份文件里面的学生信息
system("cls");
    if((fp=fopen("time.txt","r"))==NULL)
{
printf("打开文件失败\n");
return;
}
printf("备份文件记录如下:\n");
printf("备份文件                  备份时间\n");
    fscanf(fp,"%s",filename);
fscanf(fp,"%4d%02d%02d%02d%02d%02d",&year,&month,&day,&hour,&minutes,&se);
while(feof(fp)==0)
{
m++;
printf("%-20s",filename);
printf("%-4d-%02d-%02d %02d:%02d:%02d",year,month,day,hour,minutes,se);
printf("\n");
fscanf(fp,"%s",filename);
        fscanf(fp,"%4d%02d%02d%02d%02d%02d",&year,&month,&day,&hour,&minutes,&se);
}
printf("一共有%d条记录\n",m);
fclose(fp);
printf("是否要查询备份文件的学生成绩记录:");
    scanf("%s",ch);
if(strcmp(ch,"Y")==0 || strcmp(ch,"y")==0)
{
      beifen_view();
}
}
/*----------------------查看备份文件里面的学生信息----------------------*/
void beifen_view()
{
FILE *fp;
    int i,m=0;
char filename[20];
linklist *head;
getchar();
printf("输入你要查看的备份文件:");
gets(filename);
if((fp=fopen(filename,"r"))==NULL)
{
printf("打开文件失败,可能是此文件不存在\n");
return;
}
head=LEN;
fscanf(fp,"%s%s%s%s",head->snum,head->xueyuan,head->classr,head->sname);
    for(i=0;i<N;i++)
fscanf(fp,"%f",&head->score[i]);
fscanf(fp,"%f",&head->sum);
while(!feof(fp))
{
  fscanf(fp,"%s%s%s%s",head->snum,head->xueyuan,head->classr,head->sname);
    for(i=0;i<N;i++)
fscanf(fp,"%f",&head->score[i]);
   fscanf(fp,"%f",&head->sum);
       m++;
}
fclose(fp);
printf("一共有%d条记录\n",m);
if(m==0)
{
       printf("目前尚未添加记录\n");
  return;
}
PRINTF;
    if((fp=fopen(filename,"r"))==NULL)
{
printf("打开文件失败\n");
return;
}
fscanf(fp,"%s%s%s%s",head->snum,head->xueyuan,head->classr,head->sname);
    for(i=0;i<N;i++)
fscanf(fp,"%f",&head->score[i]);
fscanf(fp,"%f",&head->sum);
while(feof(fp)==0)
{
 printf("%-18s%-21s%-13s%-15s",head->snum,head->xueyuan,head->classr,head->sname);
    for(i=0;i<N;i++)
printf("%-7.1f",head->score[i]);
   printf("%-7.1f",head->sum);
  fscanf(fp,"%s%s%s%s",head->snum,head->xueyuan,head->classr,head->sname);     
    for(i=0;i<N;i++)
fscanf(fp,"%f",&head->score[i]);
   fscanf(fp,"%f",&head->sum);
printf("\n");
}
fclose(fp);
}

转载请注明本文地址: c语言制作的学生成绩管理系统 加链表

猜你喜欢

转载自blog.csdn.net/dearbaba_1666/article/details/80910390