该程序有录入学生成绩,查询学生成绩,排列学生成绩的功能。本程序采用了多文件格式
主程序
#include<stdio.h>
#include "teacher.h"
int main()
{
stu st[100];//定义结构体数组
int len;
int m;
welcome();
while (1)
{
showchoice();
scanf("%d", &m);
switch (m)
{
case 1:len = input(st); break;
case 2:show_message(st, len); break;
case 3:find(st,len); break;
case 4:sort(st,len); break;
}
}
return 0;
}
子程序头文件
#ifndef _TEACHER_H_
#define _TEACHER_H_
struct student
{
char name[20];
char sex[10];
long long int id;
int chinese;
int math;
};
typedef struct student stu;
void welcome();
void showchoice();
int input(stu *st);
void out(stu *st, int i);
void show_message(stu *st, int len);
void find(stu *st, int len);
void sort(stu *st, int len);
#endif
子程序
#include<stdio.h>
#include<string.h>
#include "teacher.h"
void welcome()
{
printf("****************************\n");
printf("欢迎来到教学系统\n");
printf("****************************\n");
}
void showchoice()
{
printf("****************************\n");
printf("1.输入信息 2.显示所有信息\n");
printf("3.查找信息 4.排列成绩\n");
printf("****************************\n");
printf("请输入你的选择:");
}
int input(stu *st)
{
int i;
printf("姓名, 学号, 性别, 语文成绩, 数学成绩\n");
for (i = 0; i < 100; i++)
{
scanf("%s", st[i].name);
if ((!strcmp(st[i].name, "end")))
{
return i;
}
scanf("%d", &st[i].id);
scanf("%s", st[i].sex);
scanf("%d", &st[i].chinese);
scanf("%d", &st[i].math);
}
return i;
}
void out(stu *st, int i)
{
printf("%10s", st[i].name);
printf("%12d", st[i].id);
printf("%4s", st[i].sex);
printf("%4d", st[i].chinese);
printf("%4d", st[i].math);
printf("\n");
}
void show_message(stu *st,int len)
{
int i;
printf("姓名, 学号, 性别, 语文成绩, 数学成绩\n");
for (i = 0; i < len; i++)
{
out(st, i);
}
}
void find(stu *st, int len)
{
char tmp[20];
int i;
printf("请输入查找的姓名:");
scanf("%s", tmp);
printf("姓名, 学号, 性别, 语文成绩, 数学成绩\n");
for (i = 0; i < len; i++)
{
if (!strcmp(st[i].name, tmp))
{
out(st, i);
}
}
}
void sort(stu *st, int len)
{
int tmp;
int i, j, k;
long long int id;
char name[20];
char sex[10];
int chinese, math;
int choice;
printf("\n");
printf("1.数学成绩排列 2.语文成绩排列\n");
printf("请输入你的选择:");
scanf("%d", &choice);
printf("姓名, 学号, 性别, 语文成绩, 数学成绩\n");
if (1 == choice)
{
for (i = 0; i < len - 1;i++)
{
for (j = 0; j < len - 1 - i; j++)
{
if (st[j].math > st[j + 1].math)
{
tmp = st[j].math;
st[j].math = st[j + 1].math;
st[j + 1].math = tmp;
strcpy(name, st[j].name);
strcpy(st[j].name, st[j + 1].name);
strcpy(st[j + 1].name, name);
id = st[j].id;
st[j].id=st[j + 1].id;
st[j + 1].id = id;
strcpy(sex, st[j].sex);
strcpy(st[j].sex, st[j + 1].sex);
strcpy(st[j + 1].sex,sex);
chinese = st[j].chinese;
st[j].chinese = st[j + 1].chinese;
st[j + 1].chinese = chinese;
}
}
}
printf("排列后的数学成绩\n");
for (k = 0; k < len; k++)
{
out(st, k);
}
}
else if (2 == choice)
{
for (i = 0; i < len - 1; i++)
{
for (j = 0; j < len - 1 - i; j++)
{
if (st[j].chinese > st[j + 1].chinese)
{
tmp = st[j].chinese;
st[j].chinese = st[j + 1].chinese;
st[j + 1].chinese = tmp;
strcpy(name, st[j].name);
strcpy(st[j].name, st[j + 1].name);
strcpy(st[j + 1].name, name);
id = st[j].id;
st[j].id = st[j + 1].id;
st[j + 1].id = id;
strcpy(sex, st[j].sex);
strcpy(st[j].sex, st[j + 1].sex);
strcpy(st[j + 1].sex, sex);
math= st[j].math;
st[j].math = st[j + 1].math;
st[j + 1].math = math;
}
}
}
printf("排列后的语文成绩\n");
for (k = 0; k < len; k++)
{
out(st, k);
}
}
}
成绩录入界面