#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//定义一个商品结构体
typedef struct gr
{
char xh[12]; //学号
char name[40]; //姓名
int tell; //电话
struct gr *next; //指向下一节点的指针
} gr;
//函数声明放在这里
void ListCreate(gr *L, int n);
void LIstSearch(gr *L); //查找个人通迅信息
void ListModify(gr *L); //修改个人通迅信息
void ListInsert(gr *L); //插入个人通迅信息
void ListDelete(gr *L); //删除个人通迅信息
void Input(gr *p, int i); //输入个人通迅信息
void Sort(gr *L); //对每类商品的库存量进行排名
void Menu(); //菜单
//个人通迅信息理系统的主函数入口
int main()
{
int item, n; //item用于接收输入的命令,n用于接收输入的商品人数
gr *L = NULL; //初始化一个头节点
L = (gr *)malloc(sizeof(gr)); //为头节点开辟内存空间
L->next = NULL; //将头节点的指针域置空
do
{
Menu(); //菜单
printf("请输入相应的数字,进行相应的操作:\n");
scanf("%d", &item);
system("cls");
switch (item)
{
case 1:
printf("请输入您要录入的学生个人通迅数目:");
scanf("%d", &n);
ListCreate(L, n);
getchar();
printf("\n请按任意键返回主菜单\n");
getchar();
system("cls");
break;
case 2:
LIstSearch(L); //查找个人通迅信息
getchar();
printf("\n请按任意键返回主菜单\n");
getchar();
system("cls");
break;
case 3:
ListModify(L); //修改个人通迅信息
getchar();
printf("\n请按任意键返回主菜单\n");
getchar();
system("cls");
break;
case 4:
ListDelete(L); //删除个人通迅信息
getchar();
printf("\n请按任意键返回主菜单\n");
getchar();
system("cls");
break;
case 5:
ListInsert(L); //插入个人通迅信息
getchar();
printf("\n请按任意键返回主菜单\n");
getchar();
system("cls");
break;
case 6:
Sort(L);
getchar();
printf("\n请按任意键返回主菜单\n");
getchar();
system("cls");
break;
case 0: //退出个人通迅信息管理系统
printf("即将退出个人通迅信息管理系统.....");
exit(0);
default:
printf("您输入的指令不正确,请重新输入");
}
printf("\n\n");
} while (item);
return 0;
}
void ListCreate(gr *L, int n)
{
int i;
for (i = 0; i < n; i++)
{
gr *p;
p = NULL;
p = (gr *)malloc(sizeof(gr));
Input(p, i);
p->next = L->next;
L->next = p;
}
printf("录入成功!");
}
//查找个人通迅信息
void LIstSearch(gr *L)
{
char n[40];
gr *p = L->next;
if (p == NULL)
printf("数据为空,无法查找!");
else
{
printf("请输入您要查找的学生姓名:");
scanf("%s", n);
while (strcmp(p->name, n) != 0)
{
p = p->next;
if (p == NULL)
{
printf("没有找到相关信息\n");
return;
}
}
printf("%s的电话为%d\n",p->name,p->tell);
}
}
//修改个人通迅信息
void ListModify(gr *L)
{
int a;
char nam[40];
gr *p = L->next;
if (p == NULL)
printf("数据为空,无法修改!");
else
{
printf("请输入您修改的学生姓名:");
scanf("%s",nam);
while(strcmp(p->name, nam) != 0)
{
p = p->next;
if (p == NULL)
{
printf("没有找到相关信息\n");
return;
}
}
printf("请输入您修改后的电话:");
scanf("%d",&p->tell);
printf("修改成功");
}
}
//删除个人通迅信息
void ListDelete(gr *L)
{
char n[40];
gr *p = L->next, *pre = L; //定义p指针指向头节点的指向,定义pre指向头节点,pre始终指向p的前驱节点
if (p == NULL)
printf("数据为空,无法删除!");
else
{
printf("请输入您要删除的学生姓名:");
scanf("%s", n);
while (strcmp(p->name, n) != 0)
{
pre = p;
p = pre->next;
if (p == NULL)
{
printf("没有找到相关信息,无法删除\n");
return;
}
}
pre->next = p->next;
free(p);
printf("删除成功");
}
}
//插入个人通迅信息
void ListInsert(gr *L)
{
gr *s = NULL; //生成一个新节点s
s = (gr *)malloc(sizeof(gr));
printf("请输入学生的学号:");
scanf("%s", s->xh);
printf("请输入学生的姓名:");
scanf("%s", s->name);
printf("请输入学生的电话:");
scanf("%d", &s->tell);
s->next = L->next;
L->next = s;
printf("插入成功!");
}
//对学生学号进行排名
void Sort(gr *L)
{
gr *p,*q,*tail,*l;
tail=NULL;
while((L->next->next) != tail)
{
p = L;
q = L->next;
while(q->next != tail)
{
if((q->xh) > (q->next->xh))
{
p->next = q->next;
q->next = q->next->next;
p->next->next = q;
q = p->next;
}
q = q->next;
p = p->next;
}
tail = q;
}
printf("学号从小到大结果如下:\n");
l=L->next;
while(l!=NULL)
{
if(l->next!=NULL)
{
printf("%s(%d)->",l->name,l->xh);
l=l->next;
}
else
{
printf("%s(%d)",l->name,l->xh);
l=l->next;
}
}
}
//输入个人通迅信息
void Input(gr *p, int i)
{
printf("请输入第%d个学生的学号:", i + 1);
scanf("%s", p->xh);
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", p->name);
printf("请输入第%d个学生的电话:", i + 1);
scanf("%d", &p->tell);
}
//个人通迅信息管理系统的菜单
void Menu()
{
printf("\n\n");
printf("\t\t\t===================个人通迅信息管理系统======================\n");
printf("\t\t\t* 作者 王路锋 班级:2020071 学号:2020027132 \n");
printf("\t\t\t* \n");
printf("\t\t\t* 1>. 录入学生个人通迅信息 \n");
printf("\t\t\t* 2>. 查找某个学生的电话 \n");
printf("\t\t\t* 3>. 修改某个学生的电话 \n");
printf("\t\t\t* 4>. 删除某个学生的个人通迅信息 \n");
printf("\t\t\t* 5>. 插入某个学生的个人通迅信息 \n");
printf("\t\t\t* 6>. 对每个学生的学号排序 \n");
printf("\t\t\t* 0>. 退出管理系统 \n");
printf("\t\t\t* 欢迎使用本系统! \n");
printf("\t\t\t=============================================================\n");
printf("\t\t\t输入选项,按回车进入选项: \n");
}