要求:
1、学生信息结构体姓名,分数,年龄,电话。
2、其他功能函数自定义,分文件编译。
stu.c
#include "stu.h"
void menu()
{
printf("****************** ");
printf("学生管理系统 ");
printf("******************\n");
printf("0 输出学生信息\n");
printf("1 创建顺序表(堆区)\n");
printf("2 录入学生信息\n");
printf("3 插入一个学生信息\n");
printf("4 删除一个学生信息\n");
printf("5 按照位置修改一个学生信息\n");
printf("6 按照姓名顺序查找一个学生是否存在\n");
printf("7 对学生年龄直接插入排序(从小到大)\n");
}
void select_system(Ptable L,int key)
{
switch(key)
{
case fun_cretable:
printf("创建顺序表成功\n");
break;
case fun_inputinfo:
input_info(L,4);
break;
case fun_inselt:
insert_info(L,2);
printf("\n插入后的学生信息\n");
out_info(L);
break;
case fun_del:
del_info(L,3);
printf("\n删除后的学生信息\n");
out_info(L);
break;
case fun_locchange:
change_info(L);
printf("\n修改后的学生信息\n");
out_info(L);
break;
case fun_find:
find_info(L);
break;
case fun_sort:
age_sort(L);
printf("\n年龄排序后的学生信息\n");
out_info(L);
break;
case fun_output:
out_info(L);
default:
break;
}
}
Ptable create_table()
{
Ptable p = malloc(sizeof(Table));
if(p==NULL)
{
printf("创建顺序表失败\n");
return NULL;
}
p->len = 0;
memset(p->data,0,sizeof(p->data));
printf("创建顺序表成功\n");
return p;
}
int input_info(Ptable p,int n)
{
if(p==NULL)
{
printf("学生系统不存在\n");
return -1;
}
printf("请输入学生信息:\n");
for(int i =0;i<n;i++)
{
printf("输入第%d个学生信息:\n",i+1);
printf("名字:\n");
scanf("%s",p->data[i].name);
printf("成绩:\n");
scanf("%d",&p->data[i].score);
printf("年龄:\n");
scanf("%d",&p->data[i].age);
printf("电话号:\n");
scanf("%s",p->data[i].number);
p->len++;
}
}
int out_info(Ptable p)
{
if(p==NULL||p->len==0)
{
printf("学生系统不存在\n");
return -1;
}
for(int i =0;i<p->len;i++)
{
printf("\n学生信息如下:\n");
printf("名字:%s,成绩:%d,年龄:%d电话号:%s",
p->data[i].name,
p->data[i].score,
p->data[i].age,
p->data[i].number);
}
}
int insert_info(Ptable p,int loc)
{
if(p==NULL||p->len==0||loc>p->len||loc<0)
{
printf("学生系统不存在\n");
return -1;
}
stu a= {"小a",100,20,"12345"};
for(int i =p->len-1;i>=loc-1;i--)
{
p->data[i+1]=p->data[i];
}
p->data[loc-1]=a;
p->len++;
}
int del_info(Ptable p,int loc)
{
if(p==NULL||p->len==0||loc>p->len||loc<0)
{
printf("学生系统不存在\n");
return -1;
}
for(int i =loc-1;i<p->len;i++)
{
p->data[i]=p->data[i+1];
}
p->len--;
}
int change_info(Ptable p)
{
int loc;
printf("输入你要修改的位置:\n");
scanf("%d",&loc);
if(p==NULL||p->len==0||loc>p->len||loc<0)
{
printf("学生系统不存在\n");
return -1;
}
stu b = {"小b",88,22,"7890"};
p->data[loc-1] = b;
}
int find_info(Ptable p)
{
if(p==NULL||p->len==0)
{
printf("学生系统不存在\n");
return -1;
}
// STR s = "小c";
STR name1;
int sub=-1;
printf("请输入你想查找学生的姓名:\n");
scanf("%s",name1);
for(int i =0;i<p->len;i++)
{
if(strcmp(name1,p->data[i].name)==0)
{
printf("成功找到\n");
sub = i;
}
}
if(sub==-1)
{
printf("未找到\n");
}
else{
printf("找到了,该学生在%d个位置\n",sub+1);
}
}
int age_sort(Ptable p)
{
if(p==NULL||p->len==0)
{
printf("学生系统不存在\n");
return -1;
}
int temp,i,j;
for(i=1;i<p->len;i++)
{
temp = p->data[i].age;
for(j=i-1;j>=0;j--)
{
if(temp<p->data[j].age)
{
p->data[j+1].age=p->data[j].age;
}
else{
break;
}
}
p->data[j+1].age=temp;
}
}
stu.h
#ifndef _STU_H
#define _STU_H
#include<myhead.h>
#define MAX 30
enum fun{
fun_output,
fun_cretable,
fun_inputinfo,
fun_inselt,
fun_del,
fun_locchange,
fun_find,
fun_sort
}fun_table;
typedef char STR[20];
typedef struct student
{
STR name;
int score;
int age;
STR number;
}stu;
typedef struct table
{
stu data[MAX];
int len;
}Table,*Ptable;
void select_system(Ptable L ,int key);
void menu();
Ptable create_table();
int input_info(Ptable p,int n);
int out_info(Ptable p);
int insert_info(Ptable p,int loc);
int del_info(Ptable p,int loc);
int change_info(Ptable p);
int find_info(Ptable p);
int age_sort(Ptable p);
#endif
my.c
#include "stu.h"
int main(int argc, const char *argv[])
{
int button;
menu();
Ptable p=create_table();
while(1){
select_system(p,button);
printf("\n请选择你的操作\n");
scanf("%d",&button);
if(button>7||button<0){
printf("你选择的操作有误\n");
break;
}
}
return 0;
}