admin 管理员组

文章数量: 887053


2024年2月7日发(作者:视频闭眼特效)

用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/nn");

scanf("%c",&num1);

scanf("%c",&num1);

if(num1=='N' || num1=='n')

{

system("cls");

jiemian();

}

}

}

void gn2()

{

int i;

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("%st%st%st%dt%.2ft%.2ft%.2ft%.2ft%.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("%st%st%st%dt%.2ft%.2ft%.2ft%.2ft%.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("%st%st%st%dt%.2ft%.2ft%.2ft%.2ft%.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("%st%st%st%dt%.2ft%.2ft%.2ft%.2ft%.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)

printf("文件保存失败!n");

}

fclose(fp);

printf("文件已保存!n");

printf("按任意键返回...n");

getch();

system("cls");

jiemian();

}

void gn7()

{

FILE *fp;

int i=0; //打开文件流

char filename[50];

printf("请输入文件名:");

scanf("%s",filename); //输入要载入的文件名

if((fp=fopen(filename,"rb"))==0) //如果当前目录下不存在相对应的文件,输出文件不存在,退出系统。

{

printf("文件不存在!n");

exit(0);

}

while(fread(&stu[i],sizeof(struct student),1,fp)!=0)//若存在,读取系统

{

i++;

}

fclose(fp); //程序结束后,关闭流。

printf("信息已载入!n");

printf("按回车键返回 ");

getchar();

getchar();

system("cls");

jiemian();

}

void gn8()

{

printf("按任意键退出...");

exit(0);

}

void xuanze()

{

int num;

scanf("%d",&num);

switch(num)

{

case 1:system("cls");gn1();break;

case 2:system("cls");gn2();break;

case 3:system("cls");gn3();break;

case 4:system("cls");gn4();break;

case 5:system("cls");gn5();break;

case 6:system("cls");gn6();break;

case 7:system("cls");gn7();break;

case 8:system("cls");gn8();break;

default:printf(" ");break;

}

}

jiemian()

{

printf("tt*****************学生档案管理系统*************n");

printf("tt1>添加学生信息");

printf("ttt2>查找学生信息n");

printf("tt3>修改学生信息");

printf("ttt4>删除学生信息n");

printf("tt5>显示学生信息");

printf("ttt6>保存学生信息n");

printf("tt7>载入学生信息");

printf("ttt8>退出系统n");

printf("tt**********************************************n");

printf("请从1-8中选择您的操作:n");

xuanze();

}

void main()

{

jiemian();

}


本文标签: 学生 信息 输入 文件