这周五交
需要一个保存的代码#include<stdio.h>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
#include<conio.h>
#define NULL 0
struct student
{
long num;
char name[20];
int banji;
char tel[11];
char Email[20];
int sushe;
struct student *next;
};
struct student *stu;
int n;
void menu(void)
{ /*主菜单函数*/
system("cls");
puts("**********************************************************************");
puts("* 学生通讯录管理系统-----蒋贤维版 *");
puts("**********************************************************************");
puts("* *");
puts("* 1=录入学生通讯录信息 *");
puts("* 2=列出所有学生通讯录 *");
puts("* 3=按姓名查询信息 *");
puts("* 4=按学号查询信息 *");
puts("* 5=删除学生信息 *");
puts("* 6=按学号将通讯录排序 *");
puts("* 7=修改学生信息 *");
puts("* 8=保存信息 *");
puts("* 0=退出 *");
puts("* *");
puts("* *");
puts("* *");
puts("**********************************************************************");
}
struct student *shuru(void) //输入函数
{
system("cls");
struct student *s1,*s2;
n=1;
int num;
puts("请输入学生个数:");
scanf("%d",&num);
s1=s2=(struct student *)malloc(sizeof(struct student));
puts("*************************************************");
puts("请输入学号:");
scanf("%ld",&s1->num);
puts("请输入学生姓名:");
scanf("%s",s1->name);
puts("请输入班级:");
scanf("%d",&s1->banji);
puts("请输入电话号码:");
scanf("%s",s1->tel);
puts("请输入电子邮件:");
scanf("%s",s1->Email);
puts("请输入学生宿舍号:");
scanf("%d",&s1->sushe);
stu=s1;
while(n<num)
{
s2->next=s1;
s2=s1;
s1=(struct student *)malloc(sizeof(struct student));
puts("*************************************************");
puts("请输入学号:");
scanf("%ld",&s1->num);
puts("请输入学生姓名:");
scanf("%s",s1->name);
puts("请输入班级:");
scanf("%d",&s1->banji);
puts("请输入电话号码:");
scanf("%s",s1->tel);
puts("请输入电子邮件:");
scanf("%s",s1->Email);
puts("请输入学生宿舍号:");
scanf("%d",&s1->sushe);
n=n+1;
}
puts("*************************************************");
s2->next=s1;
s2=s1;
s2->next=NULL;
return(stu);
//system("cls");
}
void shuchu(struct student *s){ /*输出单个学生信息*/
printf("* %-8ld",s->num);
printf("%-15s",s->name);
printf("%-8d",s->banji);
printf("%-15s",s->tel);
printf("%-15s",s->Email);
printf("%-5d *\n",s->sushe);
}
void findall() /*输出所有学生信息*/
{
system("cls");
struct student *s;
printf("\n现在有%d个学生信息,分别是:\n",n);
puts("________________________________________________________________________");
puts("* 学号 姓名 班级 电话 电子邮件 宿舍 *");
s=stu;
while(s!=NULL)
{
shuchu(s);
s=s->next;
}
puts("________________________________________________________________________");
puts("返回主菜单请按【9】");
if(getche()=='9') menu();
}
void findname() /*按姓名查找函数*/
{
system("cls");
struct student *s;
char name[20];
printf("\n请输入你要查询的学生姓名:\n");
scanf("%s",name);
s=stu;
while(strcmp(s->name,name)!=0)
{
s=s->next;
}
if(s==NULL)
{
puts("查无此学生姓名!");
goto end;
}
else
{
puts("该学生的信息为:");
puts("* 学号 姓名 班级 电话 电子邮件 宿舍 *");
shuchu(s);
}
end:;
puts("返回主菜单请按【9】");
if(getche()=='9') menu();
}
void findnum() /*按学号查找函数*/
{
system("cls");
struct student *s;
puts("请输入你要查询的学生学号:");
long i;
scanf("%ld",&i);
s=stu;
while(s->num!=i)
{
s=s->next;
}
if(s==NULL)
{
puts("查无此学生学号!");goto end;
}
else
{
puts("该学生的信息为:");
puts("* 学号 姓名 班级 电话 电子邮件 宿舍 *");
shuchu(s);
}
end:;
puts("返回主菜单请按【9】");
if(getche()=='9') menu();
}
struct student *shanchu(struct student*stu) /*删除函数*/
{
system("cls");
long num;
char s;
struct student *s1,*s2;
if(stu==NULL)
{
puts("没有任何学生信息。");
goto end;
}
puts("请输入你要删除的学生学号:");
scanf("%ld",&num);
s1=stu;
puts("警告:你确定要删除这个学生的信息吗(Y/N)?");
scanf("%s",&s);
if((s=='Y')||(s=='y'))
{
while((num!=s1->num)&&(s1->next!=NULL))
{
s2=s1;s1=s1->next;
}
if(num==s1->num)
{
puts("该学生的信息为:");
puts("* 学号 姓名 班级 电话 电子邮件 宿舍 *");
shuchu(s1);
if(s1==stu)
stu=s1->next;
else
s2->next=s1->next;
puts("注意哟,该学生的信息已经删除了!剩下的学生通讯录信息如下:");
n=n-1;
}
}
findall();
return(stu);
end:;
puts("返回主菜单请按【9】");
if(getche()=='9') menu();
}
void paixu(){ /*排序函数*/
struct student *p, *p1,*p2;
int i,j;
int temp;
char b[20];
if(stu==NULL)
{
printf("\n学生信息不存在\n");
goto end;
}
for(i=0;i<n-1;i++)
{
p1=stu;
for(j=0;j<n-1;j++)
{
p2=p1->next;
if(p1->num>p2->num)
{
temp=p1->num;p1->num=p2->num;
p2->num=temp;
strcpy(b,p1->name);
strcpy(p1->name,p2->name);
strcpy(p2->name,b);
temp=p1->banji;
p1->banji=p2->banji;
p2->banji=temp;
strcpy(b,p1->tel);
strcpy(p1->tel,p2->tel);
strcpy(p2->tel,b);
strcpy(b,p1->Email);
strcpy(p1->Email,p2->Email);
strcpy(p2->Email,b);
temp=p1->sushe;
p1->sushe=p2->sushe;
p2->sushe=temp;
}
p1=p1->next;
}
}
p=stu;
puts("已按学生学号顺序排序完毕!重新排序如下:");
puts("****************************************************************************");
puts("* 学号 姓名 班级 电话 电子邮件 宿舍 *");
while(p!=NULL)
{
printf("* %-8ld",p->num);
printf("%-15s",p->name);
printf("%-8d",p->banji);
printf("%-15s",p->tel);
printf("%-15s",p->Email);
printf("%-5d *\n",p->sushe);
p=p->next;
}
end:;
puts("返回主菜单请按【9】");
if(getche()=='9')
menu();
}
void main() /*主函数*/
{
char a;
menu();
puts("\n请按1开始录入学生信息,");
a=getche();
while(a){
puts("");
switch(a)
{
case'0':goto end;break;
case '1':
puts("\n请录入学生通讯录信息:");
stu=shuru();
system("cls");
menu();
puts("\n学生信息录入完毕,请输入你的选择(0~8):\n") ; break;
case '2':findall(); puts("\n请输入你的选择(0~8):") ; break;
case '3':findname(); puts("\n请输入你的选择(0~8):") ; break;
case '4':findnum(); puts("\n请输入你的选择(0~8):") ; break;
case '5':stu=shanchu(stu); puts("\n请输入你的选择(0~8):") ; break;
case '6':paixu(); puts("\n请输入你的选择(0~8):") ; break;
default: puts("输错了!按数字1键可重录学生信息!") ; break;
}
a=getche();
}
end:;
puts("谢谢您的使用!");
}