#include
#include
#include
//结构体类型名可以产生-》变量、指针=》访问结构体成员
//结构体是用来存储一堆不同数据类型的数据
typedef struct student//定义学生的资料
{
char name[10];
//姓名==数组是用来存储一堆相同数据类型的数据char 0-9
int number;//学号
char sex[2];//性别
int math;//数学
int english;//英语
int clanguge;//C语言
int average;//平均分
}student;
typedef struct unit//定义节点
{
student date;
struct unit* next;
}unit;
//函数是用来实现一些通用性的功能
//函数:函数声明:int add(); 你有一双手
//函数的实现int add(){...} //手可以数钱
//函数的调用 add(); //小王子的爸爸叫小王子帮忙数钱
unit* build()//新建系统
{//malloc 动态分配堆空间==有10本书,申请个书架,再把10本书放进去
unit* p;
if((p=(unit*)malloc(sizeof(unit)))==NULL)
{
printf('初始化失败!');
return 0;
}
else
{
p->next=NULL;
p->date.number=0;
printf('初始化成功!');
return p;
}
}
//指针:int* p;
//p 永远都是指针一块内存或区域:===第三行第四列看一下是什么书
//*p 永远都是内存或区域上值或目标:====C语言的书
void add(unit* head)//增加学生资料
{
unit *p,*q;
int m,n=0;
q=head->next;
p=(unit*)malloc(sizeof(unit));
printf('请输入学生姓名!\n');
gets(p->date.name);
fflush(stdin);//用来清空输入缓存,以便不影响后面输入的东西
printf('请输入学号!\n');
while(n==0)//循环:连续实现同一种功能 数绵羊123456....1000
{//246810.。。。1000 i+=2===i=i+2
scanf('%d',&m);
fflush(stdin);
if(q==NULL)n=1;
while(q!=NULL)
{
if(q->date.number==m)
{
printf('学号已存在,请重新输入!\n');
q=head->next;
break;
}
else
{
q=q->next;
if(q==NULL)n=1;
}
}
}
p->date.number=m;
printf('请输入性别!\n');
gets(p->date.sex);fflush(stdin);
printf('请输入数学成绩!\n');
scanf('%d',&m);fflush(stdin);
p->date.math=m;
printf('请输入英语成绩!\n');
scanf('%d',&m);fflush(stdin);
p->date.english=m;
printf('请输入C语言成绩!\n');
scanf('%d',&m);fflush(stdin);
p->date.clanguge=m;
p->date.average=(p->date.math+p->date.english+p->date.clanguge);
q=head->next;
head->next=p;
p->next=q;
head->date.number++;
}
int show(unit* head)
{
unit* p=head->next;
int m,n=0;
char N[10];
if(p=NULL)
{
printf('系统无学生资料!\n');
return 0;
}
while(n==0)
{
printf('请选择你要的操作!\n');
printf('\t\t\t1.显示所有\t2.按姓名查找\n');
printf('\t\t\t3.按学号查找\t4.返回主菜单\n');
scanf('%d',&m);
fflush(stdin);
switch(m)
{
case 1:
printf('本系统共有%d名学生\n\n',head->date.number);
p=head->next;
printf('\t姓名\t学号\t性别\t数学\t英语\tC语言\t综合\n\n');
while(p)
{
printf('\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n',
p->date.name,p->date.number,p->date.sex,
p->date.math,p->date.english,p->date.clanguge,
p->date.average);
p=p->next;
}
break;
case 2:
printf('请输入查找姓名!\n');
gets(N);
fflush(stdin);
p=head->next;
while(p)
{
if(strcmp(p->date.name,N)==0)
{
printf('\t姓名\t学号\t性别\t数学\t英语\tC语言\t综合\n\n');
printf('\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n',
p->date.name,p->date.number,p->date.sex,
p->date.math,p->date.english,p->date.clanguge,
p->date.average);
break;
}
else
{
p=p->next;
if(p==NULL)
printf('你要查找的学生不存在!');
}
}
break;
case 3:
printf('请输入查找学号!\n');
break;
}
}
}
int save(unit *head)//保存
{
FILE *fp;
unit *p;
p=head;
if((fp=fopen('F:\\学生.txt','wb+'))==NULL)
{
printf('保存失败!\n');
return 0;
}
while(p)
{
fwrite(&(p->date),sizeof(student),1,fp);
p=p->next;
}
printf('保存成功!\n');
fclose(fp);
return 1;
}
void menu()
{
printf('\t\t********系统主菜单***********\n');
printf('\t\t1.新建系统\t2.添加学生\n');
printf('\t\t3.删除学生\t4.查看信息\n');
printf('\t\t5.排列顺序\t6.读取信息\n');
printf('\t\t7.保存信息\t8.退出系统\n');
printf('请选择你的操作!\n');
}
int main()
{
int m=0,n;
unit* head;
while(m==0)
{
//system('cls');
menu();
scanf('%d',&n);
fflush(stdin);
switch(n)
{
case 1:head=build();break;
case 2:add(head);break;
//case 3:printf('实现新建系统的功能');break;
case 4:show(head);break;
/*case 5:printf('实现新建系统的功能');break;
case 6:printf('实现新建系统的功能');break;*/
case 7:save(head);break;
case 8:m=1;break;
}
}
system('pause');
return 0;
联系客服