作业1、顺序表实现学生管理系统(参照顺序表技能)写出菜单界面switch选择,功能1创建顺序表(堆区),2录入学生信息,3插入一个学生信息,4删除一个学生信息,5按照位置修改一个学生信息,6、按照姓名顺序查找一个学生是否存在7、对学生年龄直接插入排序(从小到大)。
(1)、学生信息结构体姓名,分数,年龄,电话。
(2)、其他功能函数自定义,分文件编译。
主函数:
#include "fun.h"
int main(int argc, const char *argv[])
{
Plist L=creat_node();//申请顺序表空间
input_node(L);//(输入)录入信息
int a;
while(1)
{
printf("请输入你要执行的操作>>>\n输入1为插入学生信息\n输入2为删除某个学生信息\n输入3为按照位置修改某个学生信息\n输入4为按照姓名顺序查找某个学生是否存在\n输入5为按照年龄对学生进行直插排序\n输入6为查看学生信息表\n输入7为退出系统\n");
scanf("%d",&a);
switch(a)
{
case 1:insert_node(L);break;//插入某个学生信息
case 2:dele_node(L);break;//删除某个学生信息
case 3:change_node(L);break;//修改某个学生信息
case 4:find_node(L);break;//按姓名查找某个学生是否存在
case 5:insort_node(L);break;//对学生年龄进行直接插入排序
case 6:output_node(L);break;//查看学生信息表
case 7:return 0;break;
default:printf("输入错误,请重新输入\n");
}
}
return 0;
}
功能函数:
#include "fun.h"
Plist creat_node()
{
Plist p=malloc(sizeof(List));
if(p==NULL)
{
printf("申请失败\n");
return NULL;
}
memset(p->data,0,sizeof(p->data));//数据置0
p->len=0;//长度置0
return p;
}
void input_node(Plist L)
{
int n;
printf("请输入你现在要录入几个学生的信息\n");
scanf("%d",&n);
printf("请录入学生信息\n");
for(int i=0;i<n;i++)
{
printf("请输入第%d个学生的姓名\n",i+1);
scanf("%s",L->data[i].name);
printf("请输入第%d个学生的年龄\n",i+1);
scanf("%d",&L->data[i].age);
printf("请输入第%d个学生的成绩\n",i+1);
scanf("%d",&L->data[i].score);
printf("请输入第%d个学生的电话\n",i+1);
scanf("%s",L->data[i].num);
L->len++;
}
}
void output_node(Plist L)
{
for(int i=0;i<L->len;i++)
{
printf("%s\t%d\t%d\t%s\n",L->data[i].name
,L->data[i].age,L->data[i].score,L->data[i].num);
}
}
void insert_node(Plist L)
{
int pos;
stru e;
printf("请输入要插入学生信息的位置\n");
scanf("%d",&pos);
printf("请输入要插入学生的姓名\n");
scanf("%s",e.name);
printf("请输入要插入学生的年龄\n");
scanf("%d",&e.age);
printf("请输入要插入学生的成绩\n");
scanf("%d",&e.score);
printf("请输入要插入学生的电话\n");
scanf("%s",e.num);
for(int i=L->len-1;i>=pos-1;i--)
{
L->data[i+1]=L->data[i];
}
L->data[pos-1]=e;
L->len++;
}
void dele_node(Plist L)
{
int pos;
printf("请输入要删除学生的位置\n");
scanf("%d",&pos);
for(int i=pos-1;i<L->len;i++)
{
L->data[i]=L->data[i+1];
}
L->len--;
}
void change_node(Plist L)
{
int pos;
stru e;
printf("请输入要修改学生信息的位置\n");
scanf("%d",&pos);
printf("请输入要修改学生的姓名\n");
scanf("%s",e.name);
printf("请输入要修改学生的年龄\n");
scanf("%d",&e.age);
printf("请输入要修改学生的成绩\n");
scanf("%d",&e.score);
printf("请输入要修改学生的电话\n");
scanf("%s",e.num);
L->data[pos-1]=e;
}
void find_node(Plist L)
{
printf("请输入你要查找学生的名字\n");
char n[20];
int f=0;
scanf("%s",n);
for(int i=0;i<L->len;i++)
{
if(strcmp(L->data[i].name,n)==0)
{
f=1;
}
}
if(f==1)
{
printf("这个名字的学生存在\n");
}
else
{
printf("这个名字的学生不存在\n");
}
}
void insort_node(Plist L)
{
int i,j,t;
for(i=1;i<L->len;i++)
{
t=L->data[i].age;
for(j=i-1;j>=0;j--)
{
if(t<L->data[j].age)
{
L->data[j+1]=L->data[j];
}
else
{
break;
}
}
L->data[j+1].age=t;
}
printf("排序成功\n");
}
函数声明 头文件:
#ifndef _FUN_H_
#define _FUN_H_
#include <myhead.h>
#define MAX 10
typedef struct
{
char name[10];
int age;
int score;
char num[20];
}stru;
typedef struct
{
stru data[MAX];//结构体数组
int len;//计数器
}List,*Plist;
Plist creat_node();
void input_node(Plist L);
void output_node(Plist L);
void insert_node(Plist L);
void dele_node(Plist L);
void change_node(Plist L);
void find_node(Plist L);
void insort_node(Plist L);
#endif
作业 2、单链表实现学生管理系统(参照顺序表技能)写出菜单界面switch选择,功能1创建单链表,2录入学生信息,3删除一个学生信息,4按照成绩修改一个学生的年龄,5、按照姓名顺序查找一个学生是否存在。
要求:
(1)、学生信息结构体姓名,分数,年龄,电话。
(2)、其他功能函数自定义,分文件编译。
主函数:
#include "fun.h"
int main(int argc, const char *argv[])
{
Plink L=creat_node();
printf("请输入你要录入几位学生的信息\n");
int n;
scanf("%d",&n);
stru e;
for(int i=0;i<n;i++)
{
printf("请输入第%d个学生的姓名\n",i+1);
scanf("%s",e.name);
printf("请输入第%d个学生的年龄\n",i+1);
scanf("%d",&e.age);
printf("请输入第%d个学生的成绩\n",i+1);
scanf("%d",&e.score);
printf("请输入第%d个学生的电话\n",i+1);
scanf("%s",e.num);
tail_input(L,e);
}
printf("%d",L->len);
int a;
while(1)
{
printf("请选择你要进行的操作\n输入1为按位置删除某个学生\n输入2为按照成绩修改某个学生年龄\n输入3为按照名字查找某个学生是否存在\n输入4为查看学生信息\n输入5为退出系统\n");
scanf("%d",&a);
switch(a)
{
case 1:dele_pos(L);break;
case 2:change_age(L);break;
case 3:find_name(L);break;
case 4:output_node(L);break;
case 5:return 0;break;
default:printf("输入错误\n");
}
}
return 0;
}
功能函数:
#include "fun.h"
Plink creat_node()
{
Plink p=malloc(sizeof(Link));
if(p==NULL)
{
printf("申请空间失败\n");
return NULL;
}
p->len=0;
p->next=NULL;
return p;
}
void tail_input(Plink L,stru e)
{
if(L==NULL)
{
printf("插入失败\n");
}
Plink t=L;
for(int i=0;i<L->len;i++)
{
t=t->next;
}
Plink p=malloc(sizeof(Link));
t->next=p;
p->next=NULL;
p->data=e;
L->len++;
printf("插入成功\n");
}
void output_node(Plink L)
{
if(L==NULL||L->len==0)
{
printf("链表为空或不存在\n");
}
Plink t=L;
for(int i=0;i<L->len;i++)
{
t=t->next;
printf("%s\t%d\t%d\t%s\n",
t->data.name,t->data.age,
t->data.score,t->data.num);
}
}
void dele_pos(Plink L)
{
if(L==NULL||L->len==0)
{
printf("链表为空或不存在\n");
}
printf("请输入要删除学生的位置:\n");
int pos;
scanf("%d",&pos);
Plink t=L;
for(int i=0;i<pos-1;i++)//循环到要删除节点的前驱
{
t=t->next;
}
Plink Q=t->next;//保存要删除的节点
t->next=t->next->next;
free(Q);
Q=NULL;
}
void change_age(Plink L)
{
if(L==NULL||L->len==0)
{
printf("链表为空或不存在\n");
}
printf("请输入你要修改年龄学生的成绩\n");
int aage;
scanf("%d",&aage);
printf("请输入你要将其成绩修改为:\n");
int sscore;
scanf("%d",&sscore);
Plink t=L;
Plink Q;
for(int i=0;i<L->len;i++)
{
t=t->next;
if(t->data.age==aage)
{
Q=t;break;
}
}
Q->data.age=aage;
printf("修改成功\n");
}
void find_name(Plink L)
{
if(L==NULL||L->len==0)
{
printf("链表为空或不存在\n");
}
printf("请输入你要查找学生的名字\n");
char nname[20];
scanf("%s",nname);
Plink t=L;
int f=0;
for(int i=0;i<L->len;i++)
{
t=t->next;
if(strcmp(t->data.name,nname)==0)
{
f=1;
}
}
if(f=1)
{
printf("该学生存在\n");
}
else
{
printf("该学生不存在\n");
}
}
函数声明 头文件:
#ifndef _FUN_H_
#define _FUN_H_
#include <myhead.h>
#define MAX 20
typedef struct
{
char name[20];
int age;
int score;
char num[20];
}stru,*Pstru;
typedef struct node
{
union
{
stru data;
int len;
};
struct node *next;
}Link,*Plink;
Plink creat_node();
void tail_input(Plink L,stru e);
void output_node(Plink L);
void dele_pos(Plink L);
void change_age(Plink L);
void find_name(Plink L);
#endif