要求:
1、学生信息结构体姓名,分数,年龄,电话。
2、其他功能函数自定义,分文件编译。
#include"link.h"
int main(int argc, const char *argv[])
{
/*
1.顺序表实现学生管理系统,写出菜单界面switch选择。
2.创建顺序表(堆区)
3.插入一ª学生信息
4.删除一个学生信息
5.按照位置修改一个学生信息
6.按照姓名顺序查找一个学生是否存在
7.对学生年龄直接插入排序*/
Pnode L=my_head();
int key==0;
while(1)
{
if(key==0)
{
printf("\n查看操作步骤请输入:0\n");
printf("\n输入学生信息请输入:1\n");
printf("\n插入学生信息请选择:2\n");
printf("\n删除学生信息请选择:3\n");
printf("\n按位置修改信息请选择:4\n");
printf("\n按姓名查找请选择:5\n");
printf("\n对年龄进行排序请选择:6\n");
printf("\n输出信息请选择:7\n");
printf("\n跳出操作请选择:8\n");
}
printf("选择要进行的操作:");
scanf("%d"&key);
switch(key)
{
case 1:input_student(L);break;
case 2:insert_student(L);break;
case 3:dele_student(L);break;
case 4:edit_student(L);break;
case 5:search_stuname(L);break;
case 6:sort_stuage(L);break;
case 7:output_student(L);break;
default:printf("无效,请重新输入:\n");break;
}
}
return 0;
}
#include "link.h"
Pnode my_head()
{
Pnode p=malloc(sizeof(Node));
if(p==NULL)
{
printf("创建失败\n");
return NULL;
}
p->len=0;
memset(p->students,0,sizeof(p->students));
return p;
}
void input_student(Pnode L,int n)
{
printf("请输入学生信息\n");
int i;
for(i=0;i<n;i++)
{
printf("请输入第%d个学生信息:",i+1);
scanf("%s%d%d%d",L->data[i].name,&L->data[i].score,
&L->data[i].age,&L->data[i].phone);
L->len++;
}
printf("\n");
}
void output_student(Plist L)
{
int i;
for(i=0;i<L->len;i++)
{
printf("姓名:%s\t成绩:%d\t年龄:%d\t电话:%d\n",L->data[i].name,L->data[i].score,L->data[i].age,L->data[i].phone);
}
printf("\n");
}
void insert_student(Pnode L)
{
int i,n;
student t;
printf("请输入插入学生位置:");
scanf("%d",&n);
printf("请输入要插入学生的信息:");
scanf("%s%d%d%d",t.name,&t.age,&t.score,&t.phone);
if(n<1 || n>L->len+1 || L->len==MAX || L==NULL)
{
printf("插入失败\n");
}
else
{
for(i=L->len-1;i>=n-1;i--)
{
L->data[i+1] = L->data[i];
}
L->data[n-1] = t;
L->len++;
printf("\n");
}
void dele_student(Pnode L)
{
int i,n;
printf("请选择删除入学生位置:");
scanf("%d",&n);
if(n<1 || n>L->len || L->len==0 || L==NULL)
{
printf("删除失败\n");
}
else
{
for(i=n;i<L->len;i++)
{
L->data[i-1] = L->data[i];
}
L->len--;
printf("\n");
}
}
void edit_student(Pnode L)
{
int i,n;
student t;
printf("请选择要修改学生位置:");
scanf("%d",&n);
printf("请输入要修改的信息:");
scanf("%s%d%d%d",t.name,&t.age,&t.score,&t.phone);
if(n<1 || n>L->len || L->len==0 || L==NULL)
{
printf("修改失败\n");
}
else
{
L->data[n-1] = t;
printf("\n");
}
}
void search_stuname(Pnode L)
{
int i,flag = 0;
char n[20];
printf("请选查找的学生姓名:");
scanf("%s",n);
for(i=0;i<L->len;i++)
{
if(strcmp(n,L->data[i].name)==0)
{
printf("查找成功该学生存在\n");
flag = 1;
}
}
if(flag == 0)
{
printf("查找失败,该学生不存在\n");
}
}
void sort_stuage(Pnode L)
{
int i,j;
student t;
for(i=1;i<L->len;i++)
{
t = L->data[i];
for(j=i-1;j>=0;j--)
{
if(L->data[j].age>t.age)
{
L->data[j+1] = L->data[j];
}
else
{
break;
}
}
L->data[j+1] = t;
}
printf("\n");
}
#ifndef _LINK_H_
#define _LINK_H_
#define MAX 20
#include<myhead.h>
typedef struct student
{
char name[MAX];
int age;
int score;
int phonenum[MAX];
}student;
typedef struct
{
int len;
student data[MAX];
}Node,*Pnode;
Pnode my_head();
void input_student(Pnode L);
void insert_student(Pnode L);
void dele_student(Pnode L);
void edit_student(Pnode L);
void search_stuname(Pnode L);
void sort_stuage(Pnode L);
void output_student(Pnode L);