用C语言实现线性表的基本操作,能创建一个基于学生信息管理的链表,至少包含数据输入、数据输出、数据处理等操作。在主函数里能实现以下功能。
运行后出现一个选择提示。
可选择的功能有1)创建新的学生信息链表
              2)增加一个新的学生信息
              3)按学号删除某个学生信息
              4)按学号查某个学生信息
              5)可以按照学生成绩对链表排序
              6)退出系统
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "conio.h"
jiemian();
struct student
{
char name[50];
char sex[5];
int age;
char num[50];
float score1;
float score2;
    float score3;
float sum;
float ave;
}stu[50],del;
void gn1()
{
int i=0;
char num1;
for(i=0;i<50;i++)
{
printf("请输入要添加的:\n");
printf("学号:");
scanf("%s",stu[i].num);
printf("姓名:");
scanf("%s",stu[i].name);
printf("性别:");
scanf("%s",&stu[i].sex);
printf("年龄:");
scanf("%d",&stu[i].age);
printf("请输入学生的三门成绩:\n");
printf("语文:");
scanf("%f",&stu[i].score1);
printf("数学:");
scanf("%f",&stu[i].score2);
printf("英语:");
scanf("%f",&stu[i].score3);
printf("是否继续添加:y/n\n");
scanf("%c",&num1);
scanf("%c",&num1);
  if(num1=='N' || num1=='n')
  {
    system("cls");
    jiemian();
 
 
  }
   
 
}
}
void gn2()
{
int i;
sizeof是什么char num[50];
printf("请输入要查的学生学号:\n");
scanf("%s",num);
    for(i=0;i<50;i++) 
if(strcmp(stu[i].num,num)==0)
{
      stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
  stu[i].ave=stu[i].sum/3;
    printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);
break;
}
 
    if(i==50)
  printf("查不到!请重新输入!\n");
            getch();
    system("cls");
    jiemian();
 
 
 
}
void gn3()
{
        char num1,i=0;
  printf("请输入要修改的学生学号:\n");
  scanf("%s",stu[i].num);
  printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);
      printf("姓名:");
      scanf("%s",stu[i].name);
      printf("性别:");
      scanf("%s",stu[i].sex);
      printf("年龄:");
      scanf("%d",&stu[i].age);
      printf("请输入学生的三门成绩:\n");
      printf("语文:");
      scanf("%f",&stu[i].score1);
      printf("数学:");
      scanf("%f",&stu[i].score2);
      printf("英语:");
      scanf("%f",&stu[i].score3);
      printf("是否继续修改:y/n?\n");
  scanf("%c",&num1);
  scanf("%c",&num1);
    if(num1=='N' || num1=='n')
    system("cls");
    jiemian();
 
}
void gn4()
{
      int i;
  char num[50];
  printf("请输入要删除的学生学号:\n");
  scanf("%s",num);
 
  for(i=0;i<50;i++)
    if(strcmp(num,stu[i].num)==0)
    {
    printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);
 
    stu[i]=del;
    printf("信息已删除,按任意键返回..\n");
    break;
    }
 
    if(i==50)
    printf("您输入的信息不存在!\n");
    getch();
    system("cls");
    jiemian();
}
void gn5()
{
int i=0;
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
printf("学号 \t姓名 \t性别 \t年龄 \t语文 \t数学 \t英语 \t总成绩 \t 平均成绩 \n");
for(i=0;i<50;i++)
{
  if(stu[i].age==0)
    break;
  printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);
}
      printf("按任意键返回...");
  getch();
  system("cls");
  jiemian();
}
void gn6()
{
FILE *fp;
int i;
char filename[50];
printf("\n");
printf("\n");
printf("请输入要保存的文件名:");
scanf("%s",filename);
if((fp=fopen(filename,"wb"))==NULL)
  printf("文件名为空,不能保存!\n");
for(i=0;i<50;i++)
{
  if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。