#include
#include
//#include //定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作
#include //调用malloc()函数
//#include //字符测试函数与字符映射函数
#define LEN sizeof(information)
struct information
{
char name[20]; //姓名
char num[10]; //档案号
char phonenum[12]; //电话
char place[20]; //籍贯
int age; //年龄
struct information * next;
};
typedef struct information;
void menu();
information *Creat(); //录入信息
void Insert(information *head); //添加学生信息
information *Dele(information *head); //删除学生信息
void check(information *head); //查询学生信息
void browse(information *head); //浏览信息
void main()
{
int p;
information *head=NULL;
char ch;
//进入系统首页
printf("\t 系统初始化成功 \n");
printf("\t\n\n\n\n\t ━〓━━━━━━━━━━━━━━━━━━━━━━━━━━〓━\n");
printf("\t \n");
printf("\t 〓 学生档案管理系统 〓 \n");
printf("\t \n");
printf("\t \n");
printf("\t 〓 制作人: XXX 〓 \n");
printf("\t \n");
printf("\t ━〓━━━━━━━━━━━━━━━━━━━━━━━━━━〓━\n\n\n\n");
printf("\t\t\t请选择,'y'录入信息,'n'退出系统:");
do
{
scanf("%c",&ch);
switch(ch)
{
case 'y':
head=Creat();
break;
case 'n':
printf("\t\t\t\t退出系统");
exit(0);
break;
default:
printf("输入有误,请重新输入。\n");
break;
}
}while(ch!='y' && ch!='n');
do
{
menu();
printf("请输入您要执行的操作");
scanf("%d",&p);
switch(p)
{
case 1:
Insert(head);
break;
case 2:
head=Dele(head);
break;
case 3:
check(head);
break;
case 4:
browse(head);
break;
case 0:
printf("\t\t\t\t退出系统");
exit(0);
break;
default:
printf("输入有误,请重新输入;\n");
break;
}
}while(p);
}
//菜单
void menu()
{
printf("\n\n★按任意键进入主菜单\n★press any key to enter the main menu");
getchar();
getchar();
system("cls");
printf(" \n\n\n\n\n\n\t\t ■------------学生档案管理系统------------■\n");
printf("\t
\n");
printf("\t\t 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");
printf("\t\t ** 1. 添加学生信息 **\n");
printf("\t\t ** 2. 删除学生信息 **\n");
printf("\t\t ** 3. 学生信息查询 **\n");
printf("\t\t ** 4. 学生信息浏览 **\n");
printf("\t\t ** 0. 退出管理系统 **\n");
printf("\t\t 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n\n\n");
}
//录入学生信息
information *Creat()
{
information *head=NULL,*end,*node;
int i,n;
system("cls");
printf("\n\n请输入人数:");
scanf("%d",&n);
system("cls");
while(n
{
printf("输入错误,请重新输入");
printf("\n\n请输入人数:");
scanf("%d",&n);
}
for(i=0;i
{
node=(information *)malloc(LEN); //Malloc 向系统申请分配指定size个字节的内存空间。
if(node==NULL)
{
printf("创建空间错误");
}
system("cls");
printf("\t\t\t\t录*入*学*生*基*本*信*息\n");
printf("\n姓名:");
scanf("%s",node->name);
printf("\n档案号:");
scanf("%s",node->num);
printf("\n电话号码:");
scanf("%s",node->phonenum);
printf("\n籍贯:");
scanf("%s",node->place);
printf("\n年龄:");
scanf("%d",&node->age);
node->next=NULL;
if(i==0)
head=end=node;
else
{
end->next=node;
end=node;
}
}
return head;
}
//添加学生信息
void Insert(information *head)
{
information *node;
if(head==NULL)
{
printf("该表为空");
return;
}
else
{ system("cls");
node=(information*)malloc(LEN);
printf("\n姓名:");
scanf("%s",node->name);
printf("\n档案号:");
scanf("%s",node->num);
printf("\n电话号码:");
scanf("%s",node->phonenum);
printf("\n籍贯:");
scanf("%s",node->place);
printf("\n年龄:");
scanf("%d",&node->age);
node->next=head->next;
head->next=node;
}
}
//删除学生信息
information *Dele(information *head)
{ system("cls");
information *temp,*front;
char n[20];
printf("\n删除的学生的档案号为:");
scanf("%s",n);
if(head==NULL)
{
printf("\n\n表格为空!\n");
return NULL;
}
else
{
if(strcmp(head->num,n)==0)
{
temp=head->next;
free (head);
return temp;
}
else
{
front=head;
temp=head->next;
while((temp!=NULL)&&strcmp(temp->num,n)!=0)
{
temp=temp->next; //把不需要删除的放在front中
front=front->next;
}
if(temp==NULL)
{
printf("\n\n无此学生!\n");
return head;
}
else
{
front->next=temp->next;
free( temp);
printf("已删除,请返回操作");
}
}
}
return head;
}
//查询学生信息
void check(information *head)
{ system("cls");
information *node=head;
int k;
char _name2[20];
char _num1[20];
char _place3[20];
int n=0;
printf("你可以按以下方式查询\n");
printf("********************************************************
**********************\n");
printf("1.按档案号\n");
printf("2.按姓名\n");
printf("3.按籍贯\n");
printf("******************************************************************************\n");
printf("输入你的选择1-3:");
scanf("%d",&k);
switch(k)
{
case 1:
printf("\n要查询的档案号为:");
scanf("%s",_num1);
while(node!=NULL)
{
while((node!=NULL) && (strcmp(node->num,_num1)!=0))
node=node->next;
if(node==NULL)
{
if(n!=0)
{
return;
}
else
{
printf("\n查无此人!\n");
return;
}
}
else
{
printf("******************************************************************************\n");
printf("| 姓名 | 档案号 | 电话号码 | 籍贯 | 年龄 |\n");
printf(" %-10s %-14s%-18s%-12s%-8d\n",node->name,node->num,node->phonenum,node->place,node->age);
printf("******************************************************************************\n");
node=node->next;
n++;
}continue;
}
break;
case 2:
n=0;
printf("\n要查询的学生姓名为:");
scanf("%s",_name2);
while(node!=NULL)
{
while((node!=NULL) && (strcmp(node->name,_name2)!=0))
node=node->next;
if(node==NULL)
{
if(n!=0)
{
return;
}
else
{
printf("\n查无此人\n");
return;
}
}
else
{
printf("******************************************************************************\n");
printf("| 姓名 | 档案号 | 电话号码 | 籍贯 | 年龄 |\n");
printf(" %-10s %-14s%-18s%-12s%-8d\n",node->name,node->num,node->phonenum,node->place,node->age);
printf("******************************************************************************\n");
node=node->next;
n++;
}continue;
}
break;
case 3:
n=0;
printf("\n要查询的学生籍贯为:");
scanf("%s",_place3);
while(node!=NULL)
{
while((node!=NULL) && (strcmp(node->place,_place3)!=0))
node=node->next;
if(node==NULL)
{
if(n!=0)
{
return;
}
else
{
printf("\n查无此人\n");
return;
}
}
else
{
printf("******************************************************************************\n");
printf("| 姓名 | 档案号 | 电话号码 | 籍贯 | 年龄 |\n");
printf(" %-10s %-14s%-18s%-12s%-8d\n",node->name,node->num,node->phonenum,node->place,node->age);
printf("******************************************************************************\n");
node=node->next;
n++;
}continue;
}
break;
}
}
//浏览学生信息
void browse(information *head)
{ system("cls");
information *node;
node=head;
while(node!=NULL)
{
printf("******************************************************************************\n");
printf("| 姓名 | 档案号 | 电话号码 | 籍贯 | 年龄 |\n");
printf(" %-10s %-14s%-18s%-12s%-8d\n",node->name,node->num,node->phonenum,node->place,node->age);
printf("******************************************************************************\n");
node=node->next;
}
}
#include
#include
//#include //定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作
#include //调用malloc()函数
//#include //字符测试函数与字符映射函数
#define LEN sizeof(information)
struct information
{
char name[20]; //姓名
char num[10]; //档案号
char phonenum[12]; //电话
char place[20]; //籍贯
int age; //年龄
struct information * next;
};
typedef struct information;
void menu();
information *Creat(); //录入信息
void Insert(information *head); //添加学生信息
information *Dele(information *head); //删除学生信息
void check(information *head); //查询学生信息
void browse(information *head); //浏览信息
void main()
{
int p;
information *head=NULL;
char ch;
//进入系统首页
printf("\t 系统初始化成功 \n");
printf("\t\n\n\n\n\t ━〓━━━━━━━━━━━━━━━━━━━━━━━━━━〓━\n");
printf("\t \n");
printf("\t 〓 学生档案管理系统 〓 \n");
printf("\t \n");
printf("\t \n");
printf("\t 〓 制作人: XXX 〓 \n");
printf("\t \n");
printf("\t ━〓━━━━━━━━━━━━━━━━━━━━━━━━━━〓━\n\n\n\n");
printf("\t\t\t请选择,'y'录入信息,'n'退出系统:");
do
{
scanf("%c",&ch);
switch(ch)
{
case 'y':
head=Creat();
break;
case 'n':
printf("\t\t\t\t退出系统");
exit(0);
break;
default:
printf("输入有误,请重新输入。\n");
break;
}
}while(ch!='y' && ch!='n');
do
{
menu();
printf("请输入您要执行的操作");
scanf("%d",&p);
switch(p)
{
case 1:
Insert(head);
break;
case 2:
head=Dele(head);
break;
case 3:
check(head);
break;
case 4:
browse(head);
break;
case 0:
printf("\t\t\t\t退出系统");
exit(0);
break;
default:
printf("输入有误,请重新输入;\n");
break;
}
}while(p);
}
//菜单
void menu()
{
printf("\n\n★按任意键进入主菜单\n★press any key to enter the main menu");
getchar();
getchar();
system("cls");
printf(" \n\n\n\n\n\n\t\t ■------------学生档案管理系统------------■\n");
printf("\t
\n");
printf("\t\t 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");
printf("\t\t ** 1. 添加学生信息 **\n");
printf("\t\t ** 2. 删除学生信息 **\n");
printf("\t\t ** 3. 学生信息查询 **\n");
printf("\t\t ** 4. 学生信息浏览 **\n");
printf("\t\t ** 0. 退出管理系统 **\n");
printf("\t\t 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n\n\n");
}
//录入学生信息
information *Creat()
{
information *head=NULL,*end,*node;
int i,n;
system("cls");
printf("\n\n请输入人数:");
scanf("%d",&n);
system("cls");
while(n
{
printf("输入错误,请重新输入");
printf("\n\n请输入人数:");
scanf("%d",&n);
}
for(i=0;i
{
node=(information *)malloc(LEN); //Malloc 向系统申请分配指定size个字节的内存空间。
if(node==NULL)
{
printf("创建空间错误");
}
system("cls");
printf("\t\t\t\t录*入*学*生*基*本*信*息\n");
printf("\n姓名:");
scanf("%s",node->name);
printf("\n档案号:");
scanf("%s",node->num);
printf("\n电话号码:");
scanf("%s",node->phonenum);
printf("\n籍贯:");
scanf("%s",node->place);
printf("\n年龄:");
scanf("%d",&node->age);
node->next=NULL;
if(i==0)
head=end=node;
else
{
end->next=node;
end=node;
}
}
return head;
}
//添加学生信息
void Insert(information *head)
{
information *node;
if(head==NULL)
{
printf("该表为空");
return;
}
else
{ system("cls");
node=(information*)malloc(LEN);
printf("\n姓名:");
scanf("%s",node->name);
printf("\n档案号:");
scanf("%s",node->num);
printf("\n电话号码:");
scanf("%s",node->phonenum);
printf("\n籍贯:");
scanf("%s",node->place);
printf("\n年龄:");
scanf("%d",&node->age);
node->next=head->next;
head->next=node;
}
}
//删除学生信息
information *Dele(information *head)
{ system("cls");
information *temp,*front;
char n[20];
printf("\n删除的学生的档案号为:");
scanf("%s",n);
if(head==NULL)
{
printf("\n\n表格为空!\n");
return NULL;
}
else
{
if(strcmp(head->num,n)==0)
{
temp=head->next;
free (head);
return temp;
}
else
{
front=head;
temp=head->next;
while((temp!=NULL)&&strcmp(temp->num,n)!=0)
{
temp=temp->next; //把不需要删除的放在front中
front=front->next;
}
if(temp==NULL)
{
printf("\n\n无此学生!\n");
return head;
}
else
{
front->next=temp->next;
free( temp);
printf("已删除,请返回操作");
}
}
}
return head;
}
//查询学生信息
void check(information *head)
{ system("cls");
information *node=head;
int k;
char _name2[20];
char _num1[20];
char _place3[20];
int n=0;
printf("你可以按以下方式查询\n");
printf("********************************************************
**********************\n");
printf("1.按档案号\n");
printf("2.按姓名\n");
printf("3.按籍贯\n");
printf("******************************************************************************\n");
printf("输入你的选择1-3:");
scanf("%d",&k);
switch(k)
{
case 1:
printf("\n要查询的档案号为:");
scanf("%s",_num1);
while(node!=NULL)
{
while((node!=NULL) && (strcmp(node->num,_num1)!=0))
node=node->next;
if(node==NULL)
{
if(n!=0)
{
return;
}
else
{
printf("\n查无此人!\n");
return;
}
}
else
{
printf("******************************************************************************\n");
printf("| 姓名 | 档案号 | 电话号码 | 籍贯 | 年龄 |\n");
printf(" %-10s %-14s%-18s%-12s%-8d\n",node->name,node->num,node->phonenum,node->place,node->age);
printf("******************************************************************************\n");
node=node->next;
n++;
}continue;
}
break;
case 2:
n=0;
printf("\n要查询的学生姓名为:");
scanf("%s",_name2);
while(node!=NULL)
{
while((node!=NULL) && (strcmp(node->name,_name2)!=0))
node=node->next;
if(node==NULL)
{
if(n!=0)
{
return;
}
else
{
printf("\n查无此人\n");
return;
}
}
else
{
printf("******************************************************************************\n");
printf("| 姓名 | 档案号 | 电话号码 | 籍贯 | 年龄 |\n");
printf(" %-10s %-14s%-18s%-12s%-8d\n",node->name,node->num,node->phonenum,node->place,node->age);
printf("******************************************************************************\n");
node=node->next;
n++;
}continue;
}
break;
case 3:
n=0;
printf("\n要查询的学生籍贯为:");
scanf("%s",_place3);
while(node!=NULL)
{
while((node!=NULL) && (strcmp(node->place,_place3)!=0))
node=node->next;
if(node==NULL)
{
if(n!=0)
{
return;
}
else
{
printf("\n查无此人\n");
return;
}
}
else
{
printf("******************************************************************************\n");
printf("| 姓名 | 档案号 | 电话号码 | 籍贯 | 年龄 |\n");
printf(" %-10s %-14s%-18s%-12s%-8d\n",node->name,node->num,node->phonenum,node->place,node->age);
printf("******************************************************************************\n");
node=node->next;
n++;
}continue;
}
break;
}
}
//浏览学生信息
void browse(information *head)
{ system("cls");
information *node;
node=head;
while(node!=NULL)
{
printf("******************************************************************************\n");
printf("| 姓名 | 档案号 | 电话号码 | 籍贯 | 年龄 |\n");
printf(" %-10s %-14s%-18s%-12s%-8d\n",node->name,node->num,node->phonenum,node->place,node->age);
printf("******************************************************************************\n");
node=node->next;
}
}