用c语言编写的一个学生信息管理系统

  • 格式:docx
  • 大小:11.39 KB
  • 文档页数:7

路漫漫其修远兮,吾将.上F而求索・百度文库

用C语言实现线性表的基本操作,能创建一个基于学生信息管理的链表,至少包含数据输入、 数据输出、数据处理等操作。在主函数里能实现以下功能。

运行后出现一个选择提示。

可选择的功能有1)创建新的学生信息链表

2)增加一个新的学生信息

3)按学号删除某个学生信息

4)按学号查找某个学生信息

5)可以按照学生成绩对■链表排序

6)退出系统

#include "stdio.h"

#include "stdlib.h"

#include "string.hn

#include ,,conio.hH

jiemian();

struct student

(

char name[50];

char sex[5];

int age;

char num[50];

float scorel;

float score2;

float score3;

float sum;

float ave;

}stu[50],del;

void gnl()

(

int i=0;

char numl;

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); 11

目上下而求索•百度文库

printf(”请输入学生的三门成绩:'俏;

printf("语文门;

scanf(,,%f,,,&stu[i].scorel);

printf(“数学门;

scanf(,,%f,,,&stu[i].score2);

printf("英语巧;

scanf(,,%f,,,&stu[i].score3);

printf("是否继续添加:y/n\n“); scanf(,,%c,,,&numl);

scanf(,,%c,,,&numl);

if(numl==,N, 11 numl=="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)==O) (

stu[i].sum=stu[i].scorel+stu[i].score2+stu[i].score3;

stu[i].ave=stu[i].sum^;

printf(',%s\t%s\t%s\t%d\t%,2f\t%.2f\t%.2f\t%.2f\t%.2f:\n'l/stu[i].num/stu[i].name/stu[i].sex/stu[i] .age,stu[i].scorel/stu[i].score2/stu[i].score3/stu[i].sum/stu[i].ave);

break;

)

if(i==50)

printf("查找不到!请重新输入!\n");

22 路漫漫其修远兮,吾将上F而求索・百度文库

getch(); systemf'cls"); jiemian();

)

void gn3()

(

char numlJ=0;

printf("请输入要修改的学生学号:\n“);

scanf(,,%s,,/stu[i].num);

printf(,l%s\t%s\t%s\t%d\t%,2f\t%.2f\t%.2f\t%.2f\t%.2f:\n'l/stu[i].num/stu[i].name/stu[i].sex/stu[i] .age,stu[i].scorel/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].scorel);

printf(“数学门;

scanf(,,%f,,,&stu[i].score2);

printf("英语门;

scanf(,,%f,,,&stu[i].score3);

printf("是否继续修改:y/n?\n“);

scanf(,,%c"/&numl);

scanf(,,%c,\&numl);

if(numl==,N, 11 numl==,n,)

systemf'cls"); jiemian();

)

void gn4()

(

int i;

char num[50];

printf("请输入要删除的学生学号:\n“);

scanf(,,%s,,,num);

for(i=0;i<50;i++) 33

if(strcmp(num,stu[i].num)==O)

( 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].scorel/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].scorel+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==O)

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].scorel/stu[i].score2/stu[i].score3/stu[i].sum/stu[i].ave);

)

printf("按任意键返回.

getch();

system(,,clsn);

jiemian();

)

void gn6()

(

FILE *fp;

int i;

char filename[50];

printf(,,\nN); 44

路漫漫其修远兮,吾将上F而求索・百度文库

printf(,,\nM);

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),l,fp)!=l) printf("文件保存失败!\n”);

)

fclose(fp);

printf (“文件己保存!\n“);

printf。按任意键返回

getch();

system(l,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(O);

)

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

(

i++;

)

fclose(fp); 〃程序结束后,关闭流。printf("

信息已载入! \n");

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

getchar();

getchar();

system(l,cls,,);

jiemian();

)

55