编写小型的学生信息管理系统
实现以下功能:
(1)学生信息的初始化(建表)
(2)按条件查找某个学生
线索:新建一顺序表变量(此时,顺序表中无数据),将书中的查找代码作为函数来调用,此外,可将数据的输入单独编写为一个函数模块,在main()函数中调用输入、查找的函数,仔细思考函数如何调用,实参如何设置。
#include <stdio.h>
#include <string.h>
#define MAXSIZE 100 //最大长度
#define OK 1
#define ERROR -1
struct STU
{
char id[10];
char name[10];
};
typedef struct {
struct STU elem[MAXSIZE]; //线性表占用的数组空间
int last; //最后一个元素在数组中的位置,空表为-1
}SeqList;
int Locate(SeqList L,char key[])
{ int i=0 ; /*i为扫描计数器,初值为0,即从第一个元素开始比较*/
while ((i<=L.last)&&(strcmp(L.elem[i].name,key)!=0 ) ) i++;
/*顺序扫描表,直到找到值为e的元素,或扫描到表尾而没找到*/
if (i<=L.last)
return(i+1); /*若找到值为e的元素,则返回其序号*/
else
return(-1); /*若没找到,则返回空序号*/
}
void Create(SeqList *L)
{
int i;
printf("请输入学生总数:");
scanf("%d",&L->last);
L->last--;
for(i=0;i<=L->last;i++)
{
printf("\n请输入第%d个学生的学号:",i+1);
scanf("%s",L->elem[i].id);
printf("\n请输入第%d个学生的姓名:",i+1);
scanf("%s",L->elem[i].name);
}
printf("建表完毕!");
}
int main()
{
SeqList L;
char key[10];
int pos;
Create(&L);
printf("请输入要查找的学生姓名:");
scanf("%s",key);
pos=Locate(L,key);
if(pos==-1) printf("无该学生!");
else printf("找到该生,其学号为%s",L.elem[pos-1].id);
return 0;
}