#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>+
int n=0;
int r=0;
void minu()
{
printf("*------------欢迎进入本学生管理系统----------------*\n");
printf("*1.录入信息\n");
printf("*2.增加信息\n");
printf("*3.删除信息\n");
printf("*4.修改信息\n");
printf("*5.查询学生信息\n");
printf("*6.退出本系统\n");
}
struct student
{
printf("请输入要录入学生的人数:");
char name[20];
long int num;
long int tel ;
struct student *next;
};
struct student *luru(void)
{
int k;
struct student *head,*p1,*p2;
scanf("%d",&n);
printf("请输入 %d 个人的信息\n信息的格式:姓名 学号 电话\n",n);
k=0;
while(k<n)
{
if(k==0)
{
p1=p2=(struct student *)malloc(sizeof(struct student));
scanf("%s %ld %ld",p1->name,&p1->num,&p1->tel);
head=p1;
}
else
{
p1=(struct student *)malloc(sizeof(struct student));
scanf("%s %ld %ld",p1->name,&p1->num,&p1->tel);
p2->next=p1;
p2=p1;
}
k=k+1;
}
p2->next=NULL;
return (head);
}
void showall(struct student *head)
{
struct student *p;
printf("输出所有的%d条学生信息:\n",n);
printf("--姓名--学号--电话--\n");
p=head;
if(head!=NULL)
{
while(p!=NULL)
{
r++;
printf("%s %ld %ld\n",p->name,p->num,p->tel);
p=p->next;
}
}
}
void selec(struct student *head)
{
char sel_name[20];
struct student *p;
printf("请输入查找的学生名字:");
scanf("%s",sel_name);
p=head;
if(head!=NULL)
{
while(p!=NULL)
{
if((strcmp(p->name,sel_name))==0)
{
printf("--姓名--学号--电话--\n");
printf("%s %ld %ld",p->name,p->num,p->tel);
break;
}
else
{
printf("查无此人\n");
break;
}
p=p->next;
}
}
}
int xiugai(struct student *head)
{
int a,b;
struct student *p;
char xiu_name[20];
printf("请输入修改的学生名字:\n",n);
scanf("%s",xiu_name);
p=head;
if(head!=NULL)
{
while(p!=NULL)
{
a=strcmp(p->name,xiu_name);
if(a==0)
{
printf("请输入需要修改的项目\n");
printf("1.名字 2.学号 3.电话\n");
printf("请输入字母来选择对应的项目:");
scanf("%d",&b);
switch(b)
{
case 1:
printf("请输入要修改后的名字:");
scanf("%s",p->name);
printf("修改成功\n");
break;
case 2:
printf("请输入修改后的学号:");
scanf("%ld",&p->num);
printf("修改成功 %s 的学号已经修改为 %ld \n",p->name,p->num);
break;
case 3:
printf("请输入修改后的电话:");
scanf("%d",&p->tel);
printf("修改成功 %s 的电话已经修改为 %d \n",p->name,p->tel);
break;
default:
printf("error无此操作\n");
}
}
p=p->next;
}
}
return 0;
}
struct student *insert(struct student *head)
{
int k=n-1;
struct student *p,*q;
printf("请输入要增加的数据(一次只能插入一条数据)\n信息的格式:姓名 学号 电话\n");
p=(struct student *)malloc(sizeof(struct student));
scanf("%s %ld %ld",p->name,&p->num,&p->tel);
q=head;
while(k)
{
q=q->next;
k--;
}
if(q->next==NULL)
{
q->next=p;
n++;
p->next=NULL;
}
return (head);
}
struct student *delet(struct student *head)
{
int a;
char del_name[20];
struct student *p1;
struct student *pf;
struct student *p2;
p1=p2=head;
printf("请输入要删除的学生的名字:");
scanf("%s",del_name);
a=strcmp(head->name,del_name);
if(a==0)
{
printf("要删除的是第一个\n");
pf=head;
head=head->next;
free(pf);
n--;
printf("删除成功\n");
}
else
{
a=strcmp(p1->name,del_name);
while(a!=0)
{
p2=p1;
p1=p1->next;
a=strcmp(p1->name,del_name);
if((p1->next==NULL)&&(a!=0))
{
printf("此表中无要删除的学生\n");
}
else
{
a=strcmp(p1->name,del_name);
if((p1->next==NULL)&&(a==0))
{
printf("要删除的是最后一个\n");
p2->next=NULL;
n--;
printf("删除成功\n");
}
else
{
a=strcmp(p1->name,del_name);
if(a==0)
{
printf("要删除的是其中一个\n");
p1=p1->next;
p2->next=p1;
n--;
printf("删除成功\n");
}
}
}
}
}
return (head);
}
int main()
{
struct student *head;
int i=0;
system("color 3f");
while(1)
{
minu();
printf("请输入一个数字来选择对应的操作:");
scanf("%d",&i);
switch(i)
{
case 1:
head=luru();
system("pause");
system("cls");
break;
case 2:
head=insert(head);
system("pause");
system("cls");
break;
case 3:
head=delet(head);
system("pause");
system("cls");
break;
case 4:
xiugai(head);
system("pause");
system("cls");
break;
case 5:
selec(head);
system("pause");
system("cls");
break;
case 6:
return 0;
break;
default:
printf("error无此操作\n");
system("cls");
break;
}
}
return 0;
}
结构体学完再看吧。
这么6
错误太多了,你还是根据习题解析再看看
6666