栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

结构体链表学生信息管理系统_3

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

结构体链表学生信息管理系统_3

成绩删除 score_delete.c

#include 
typedef struct Student
{
    char classs[20];//班级
    int num;//学号
    char name[20];//名字
    double score[5];//五科成绩
    double average;//平均成绩
    struct Student *next;//下一个地址
}stu;

extern n;

stu *score_delete(stu *head)//成绩删除
{
    stu *p=head;
    stu *pdel;
    for(;;)
    {
    printf("n—————————————————————————————");
    printf("n按学号查找删除输入1:    按姓名查找删除输入2:n");
    printf("—————————————————————————————n");
    int chose_1;
    chose_1=fied_judje();//判断输入是否正确
    if(chose_1==1)
    {
 printf("n请输入需要查找删除的学生的学号:");
 int num;
 int lang=0;//判断是否存在所查学生
 scanf("%d",&num);
 int count=1;//要删除的链表中的第几个学生
 for(;p!=NULL;)
 {
     if(num==p->num)
     {

  lang=1;
  int i;
  pdel=head;

  if(count==1)
      {head=head->next;
      }
  else
  {   for(i=1;inext;
      }
      if(count==n)
   pdel->next=NULL;
      else
   pdel->next=pdel->next->next;
      break;
  }
     }
     count++;
     p=p->next;
 }
 if(lang==0)
  printf("<>");
    }else
    {
 printf("n请输入需要查找删除的学生的姓名:");
 char name[20];
 int lang=0;//判断是否存在所查学生
 scanf("%s",&name);
 int count=1;//要删除的链表中的第几个学生
 for(;p!=NULL;)
 {
     if(!strcmp(name,p->name))
     {
  lang=1;
  int i;
  pdel=head;

  if(count==1)
      {head=head->next;
      }
  else
  {   for(i=1;inext;
      }
      if(count==n)
   pdel->next=NULL;
      else
   pdel->next=pdel->next->next;
      break;
  }
     }
     count++;
     p=p->next;
 }
 if(lang==0)
  printf("n你所查学生不存在!n");
    }

    //删除完后的选择
    int chose_2;
    printf("n—————————————————————————————");
    printf("n退出查询删除请输入1:    继续查询删除请输入2n");
    printf("—————————————————————————————n");
    chose_2=fied_judje();//判断输入是否正确
    if(chose_2==1)return head;
    else continue;
    }
}
文件存储 file_conserve.c

#include 
typedef struct Student
{
    char classs[20];//班级
    int num;//学号
    char name[20];//名字
    double score[5];//五科成绩
    double average;//平均成绩
    struct Student *next;//下一个地址
}stu;
void file_conserve(stu *head)//文件存储
{
    stu *p=head;
    FILE *fp;
    fp = fopen ("save_stu.txt","w+");
    for(;p!=NULL;)
    {
  fprintf(fp,"%st%dt%st%6.2lft%6.2lft6.2lft6.2lft%6.2lfn",p->classs
  ,p->num,p->name,p->score[0],p->score[1],p->score[2]
  ,p->score[3],p->score[4]);
  p=p->next;
    }
    fclose(fp);
    printf("n学生信息保存完成!n");
}
文件输入  file_input.c

#include 
typedef struct Student
{
    char classs[20];//班级
    int num;//学号
    char name[20];//名字
    double score[5];//五科成绩
    double average;//平均成绩
    struct Student *next;//下一个地址
}stu;
void file_input(stu *head)//文件输入
{
    FILE *fp;
    stu out_txt;
    fp=fopen("student.txt","r");
    if(fp==NULL)
    {
 printf("文件打开失败");

    }

    else
    {
 printf("下面是学生的信息:n");
 printf("班级:   学号:   姓名:   五门成绩:n");
 while(fscanf(fp,"%s %d %s %lf %lf %lf %lf %lf",&out_txt.classs,&out_txt.num,
&out_txt.name,&out_txt.score[0],&out_txt.score[1],&out_txt.score[2]
,&out_txt.score[3],&out_txt.score[4])!=EOF)
 {
     printf("%s %d      %s  %6.2f %6.2f %6.2f %6.2f %6.2fn",out_txt.classs,out_txt.num,
      out_txt.name,out_txt.score[0],out_txt.score[1],out_txt.score[2],
      out_txt.score[3],out_txt.score[4]);
 }

    }
}
文件导入  file_import.c

#include 
typedef struct Student
{
    char classs[20];//班级
    int num;//学号
    char name[20];//名字
    double score[5];//五科成绩
    double average;//平均成绩
    struct Student *next;//下一个地址
}stu;

extern n,lang_ave;

stu *file_import(stu *head)//文件导入
{
    stu *head1=creatlist2(head);
    printf("n<<学生信息导入成功!>>n");
    lang_ave=0;
    return head1;
}
文件导入调用链表2 creatlist2.c

#include 
#include 
#define LEN sizeof(stu)

typedef struct Student
{
    char classs[20];//班级
    int num;//学号
    char name[20];//名字
    double score[5];//五科成绩
    double average;//平均成绩
    struct Student *next;//下一个地址
}stu;
extern n;
stu *creatlist2(stu *head)
{
    FILE *fp;
    stu *p1,*p2;//p1开辟 p2末尾
    stu *head1;//如果有数据,把新数据添加到上一次链表的末尾
    stu temp;//中间变量

    p2=p1=(stu *)malloc(LEN);
    fp = fopen ("student.txt", "r+");
    if(n==0)
    {
 head=NULL;
 while(fscanf(fp,"%s %d %s %lf %lf %lf %lf %lf",&temp.classs,&temp.num,
&temp.name,&temp.score[0],&temp.score[1],&temp.score[2]
,&temp.score[3],&temp.score[4])!=EOF)
 {
 n=n+1;
 if(n==1)head=p1;
 else p2->next=p1;
 p2=p1;
 strcpy(p1->classs,temp.classs);
 p1->num=temp.num;
 strcpy(p1->name,temp.name);
 p1->score[0]=temp.score[0];
 p1->score[1]=temp.score[1];
 p1->score[2]=temp.score[2];
 p1->score[3]=temp.score[3];
 p1->score[4]=temp.score[4];
 p1=(stu *)malloc(LEN);
 }
 p2->next=NULL;
 fclose(fp);
 return head;
    }
    else//已经存在录入的情况下可以继续导入
    {
 stu *p=head;
 int i;
 for(i=1;inext;
 }
// p->next=head1;
 int n1=0;
 while(fscanf(fp,"%s %d %s %lf %lf %lf %lf %lf",&temp.classs,&temp.num,
&temp.name,&temp.score[0],&temp.score[1],&temp.score[2]
,&temp.score[3],&temp.score[4])!=EOF)
 {
 n=n+1;
 n1=n1+1;
 if(n1==1)p->next=p1;
 else p2->next=p1;
 p2=p1;
 strcpy(p1->classs,temp.classs);
 p1->num=temp.num;
 strcpy(p1->name,temp.name);
 p1->score[0]=temp.score[0];
 p1->score[1]=temp.score[1];
 p1->score[2]=temp.score[2];
 p1->score[3]=temp.score[3];
 p1->score[4]=temp.score[4];
 printf("%s",p1->classs);
 p1=(stu *)malloc(LEN);
 }
 p2->next=NULL;
 fclose(fp);
 head->average=0;
 return head;
    }
仅供参考,不足的地方还望原谅!!!
  **by:郑轻大学生**
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/233619.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号