c语言信息管理系统排序怎么编,用C语言编写的一个学生信息管理系统.doc

用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;

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)

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("\t\t*****************学生档案管理系统*************\n");

printf("\t\t1>添加学生信息");

printf("\t\t\t2>查找学生信息\n");

printf("\t\t3>修改学生信息");

printf("\t\t\t4>删除学生信息\n");

printf("\t\t5>显示学生信息");

printf("\t\t\t6>保存学生信息\n");

printf("\t\t7>载入学生信息");

printf("\t\t\t8>退出系统\n");

printf("\t\t**********************************************\n");

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

xuanze();

}

void main()

{

jiemian();

}

展开阅读全文

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值