/* 2017.10.15第一次编译
2017.10.17 修改 添加姓名搜索功能
2017.10.18 修改 修改new函数外观
*/
#include
#include
#include
#include
typedef struct
{
char num[20];
char name[20];
int score;
}Node;
typedef struct
{
Node *Elem;
int max;
}List;
int a=-1;
void new()
{
puts(" ***************************************** ");
puts(" * 欢迎进入学生信息统计 * ");
puts(" * 1.输入学生的人数 * ");
puts(" * 2.显示学生信息 * ");
puts(" * 3.根据姓名检索学生信息 * ");
puts(" * 4.显示指定学生信息 * ");
puts(" * 5.在指定位置插入学生信息 * ");
puts(" * 6.删除指定位置学生信息 * ");
puts(" * 7.统计学生个数信息 * ");
puts(" * 8.输入ctrl+Z 或者 exit退出程序 * ");
puts(" ***************************************** ");
}
void ListInsert(List L,int ad,Node p) //在指定位置之后插入
{
int i;
for(i=a;i>ad;i--)
{
L.Elem[i+1]=L.Elem[i];
L.Elem[ad+1] = p;
}
}
void ListDelete(int n,List L) //删除指定位置的信息
{
int i;
for(i=a;i<=a;i++)
L.Elem[i]=L.Elem[i+1];
}
void InitList(int n,List L) //录入信息
{
int i;
for (i = 1;i<=n;i++)
{
printf("plz input number:");
scanf("%s",L.Elem[i].num);
printf("plz input name:");
scanf("%s",L.Elem[i].name);
printf("plz input score:");
scanf("%s",L.Elem[i].score);
put("Input complete");
}
Node polling(int ad,List L) //学号查询
{
return L.Elem[ad];
}
int SearchName(char nam,List L,Node p) //姓名查询
{
int i;
for(i=1;i<=a;i++)
{
if(strcmp(L.Elem[i].name,nam)==0)
{
p = L.Elem[i];
}
else return 0;
}
int main()
{ int SearchName();
void InitList();
char cmp[20];
new();
int a1,a2;
int ad;
List L;
L.max = 999;
Node p;
L.Elem = (Node *)malloc(sizeof (Node)*L.max);
while(1)
{
printf("请输入菜单号:");
scanf("%d",a1);
if(a1<1||a1>7)
{
puts("error\n");
continue;
}
if((a1!=1&&a1!=1)&&a == -1)
{
puts("您还未录入学生信息!ERROR!");
continue;
}
switch(a2)
{
case 1:
if(a !=-1)
{
printf("您已经输入过学生信息");
break;
}
printf("请输入学生人数(0~999):");
scanf("%d",&a);
if(a<=0||a>999)
{
printf("输入非法,请重新输入\n");
continue;
}
InitList(a,L);
puts("");
break;
case 2:
printf("学号\t 姓名\t 成绩\n");
for(i = 1;i <= a;i++)
{
p=polling(i,L);
printf("%s\t\t %s\t\t%d\t\t",p.num,p.name,p.score);
}
printf("OK\n");
break;
case 3:
scanf("%s",cmp);
if(SearchName(cmp,L,p))
{
puts("查找成功!");
puts("输出为:");
printf("学号:%s,\t 姓名:%s\t 成绩:%s\t",p.num,p.name,p.score);
}
else puts("查无此人\n");
printf("OK\n");
break;
case 4:
printf("请输入要查询的人的序号:");
scanf("%d",&i);
if(i>a||i<=0)
{
puts("ERROR");
puts("");
break;
}
puts("查找成功");
puts("学生信息马上输出");
p=polling(i,L);
printf("%s\t\t %s\t\t,&d\t\t",p.num,p.name,p.score);
printf("OK!");
puts("");
break;
case 5 :
if(a == 999)
{
puts("对不起,顺序表已满,无法进行任何操作,请先删除无关数据");
puts("");
continue;
}
printf("请输入要插入的位置,数值(0~学生最大数");
while(scanf("%d",&ad))
{
if(ad >999 && ad < 0)
printf("输入非法,请重新输入:");
else
break;
}
printf("请输入学号:");
scanf("%s",p.num);
printf("请输入姓名:");
scanf("%s",p.name);
printf("请输入成绩:");
scanf("%d",p.score);
ListInsert(L,ad,p);
a++;
printf("OK");
printf("\n");
break;
case 7:
printf("学生总数为:%d",a);
printf("OK!");
printf("\n");
break;
}
}
printf("程序结束 按CTRL+z退出");
return 0;
}
源代码如下
为什么总是出现两个错误,求大哥帮忙解决!