*
*龙翱九天*
/* 应用指针和结构数组处理学生信息。 hstud_1.c */
/* */
/* 学号:20015101 姓名:李为民 日期:2001.2 */
#include <stdio.h>
#include <string.h>
#define N 35
struct date /* 日期结构 */
{
int year;
char month;
char day;
};
struct student /* 学生信息结构 */
{
char no[9];
char name[9];
char sex[3];
struct date birthday;
int score[4];
};
#include "stfun_1.c" /* 处理学生信息的函数 */
main ()
{
struct student stud[N]; /* 学生信息结构数组 */
struct student *pname[N]; /* 姓名指针数组 */
struct student *ptscore[N]; /* 总分指针数组 */
int code,i; /* 菜单代码 */
int n=0; /* 实际学生数 */
int flag_score=0; /* 已按学号排序 flag_score=1 */
int flag_name=0; /* 已按姓名排序 flag_name=1 */
clrscr(); /* 库函数, 清屏 */
readsi(stud,&n); /* 从正文文件 studf.txt读入数据, */
/* 建立学生信息结构数组 */
printf("\n 未排序学生信息:\n\n");
printsi(stud,n); /* 显示学生信息 */
sort_no(stud,n); /* 按学号排序 */
printf("\n\n 已排序学生信息:\n\n");
printsi(stud,n);
printf("\n 按 <Enter>,进入菜单:");
scanf("%*c");
while (1)
{
clrscr();
code=menu_1();
switch (code)
{
case 0:
exit(0);
case 1:
printsi(stud,n);
scanf("%*2c");break;
case 2:
for (i=0;i<n;i++)
pname[i]=&stud[i];
sort_name(pname,n);
printsi(stud,n);printf("\n\n");
printsi_name(pname,n);
flag_name=1;
scanf("%*2c");break;
case 3:
for (i=0;i<n;i++)
ptscore[i]=&stud[i];
sort_tscore(ptscore,n);
printsi(stud,n);printf("\n\n");
printsi_tscore(ptscore,n);
flag_score=1;
scanf("%*2c");break;
case 4:
srch_no(stud,n);
scanf("%*2c");break;
case 5:
if (flag_name==0)
{
for (i=0;i<n;i++)
pname[i]=&stud[i];
sort_name(pname,n);
flag_name=1;
}
srch_name(pname,n);
scanf("%*2c");break;
case 6:
if (flag_score==0)
{
for (i=0;i<n;i++)
ptscore[i]=&stud[i];
sort_tscore(ptscore,n);
flag_score=1;
}
srch_tscore(ptscore,n);
scanf("%*2c");break;
case 7:
find_ave(stud,n);
scanf("%*2c");break;
case 8:
find_age(stud,n);
scanf("%*2c");break;
case 9:
find_pnum(stud,n);
scanf("%*2c");break;
case 10:
printtable(stud,n);
scanf("%*2c");break;
}
}
}
/* */
/* 学号:20015101 姓名:李为民 日期:2001.2 */
#include <stdio.h>
#include <string.h>
#define N 35
struct date /* 日期结构 */
{
int year;
char month;
char day;
};
struct student /* 学生信息结构 */
{
char no[9];
char name[9];
char sex[3];
struct date birthday;
int score[4];
};
#include "stfun_1.c" /* 处理学生信息的函数 */
main ()
{
struct student stud[N]; /* 学生信息结构数组 */
struct student *pname[N]; /* 姓名指针数组 */
struct student *ptscore[N]; /* 总分指针数组 */
int code,i; /* 菜单代码 */
int n=0; /* 实际学生数 */
int flag_score=0; /* 已按学号排序 flag_score=1 */
int flag_name=0; /* 已按姓名排序 flag_name=1 */
clrscr(); /* 库函数, 清屏 */
readsi(stud,&n); /* 从正文文件 studf.txt读入数据, */
/* 建立学生信息结构数组 */
printf("\n 未排序学生信息:\n\n");
printsi(stud,n); /* 显示学生信息 */
sort_no(stud,n); /* 按学号排序 */
printf("\n\n 已排序学生信息:\n\n");
printsi(stud,n);
printf("\n 按 <Enter>,进入菜单:");
scanf("%*c");
while (1)
{
clrscr();
code=menu_1();
switch (code)
{
case 0:
exit(0);
case 1:
printsi(stud,n);
scanf("%*2c");break;
case 2:
for (i=0;i<n;i++)
pname[i]=&stud[i];
sort_name(pname,n);
printsi(stud,n);printf("\n\n");
printsi_name(pname,n);
flag_name=1;
scanf("%*2c");break;
case 3:
for (i=0;i<n;i++)
ptscore[i]=&stud[i];
sort_tscore(ptscore,n);
printsi(stud,n);printf("\n\n");
printsi_tscore(ptscore,n);
flag_score=1;
scanf("%*2c");break;
case 4:
srch_no(stud,n);
scanf("%*2c");break;
case 5:
if (flag_name==0)
{
for (i=0;i<n;i++)
pname[i]=&stud[i];
sort_name(pname,n);
flag_name=1;
}
srch_name(pname,n);
scanf("%*2c");break;
case 6:
if (flag_score==0)
{
for (i=0;i<n;i++)
ptscore[i]=&stud[i];
sort_tscore(ptscore,n);
flag_score=1;
}
srch_tscore(ptscore,n);
scanf("%*2c");break;
case 7:
find_ave(stud,n);
scanf("%*2c");break;
case 8:
find_age(stud,n);
scanf("%*2c");break;
case 9:
find_pnum(stud,n);
scanf("%*2c");break;
case 10:
printtable(stud,n);
scanf("%*2c");break;
}
}
}