用链表实现学生信息存储系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#include
#define PF printf
#define LEN sizeof(struct student)
//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆定义结构体◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
struct student
{
char NO[20];
char name[20];
int age;
char sex[3]; /*'F'表示性别男,'M'表示性别女*/
char birthday[10];
char address[30];
char phone[20];
char e_mail[20];
struct student *next; //下个结点
};
typedef struct student STU;
STU *head=NULL; //全局指针
int n,i=0; //全局变量
//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆自定义函数◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
void show_menu(); //显示菜单
void menu(); //执行菜单
void creat_stu(); //建立链表
void insert_stu(); //学生信息录入
void print_stu(); //学生信浏览
void search_NO(); //以学号方式查询信息
void search_name(); //以姓名方式查询信息
void arrage_stu(); //排序
void del_stu(); //删除学生信息
void revise_stu(); //修改学生信息
void save(); //保存信息
void main()
{
creat_stu();
menu();
}
//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆创建链表◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
void creat_stu(){
FILE *fp;
long size;
STU *p1,*p2;
head=(STU *)malloc(sizeof(STU));
head->next=NULL;
if((fp=fopen("fname.txt","r"))==NULL)
{
printf("这是新表\n");
return;
}
fseek(fp,0L,2);
size=ftell(fp);
if(!size)
{
printf("这是空表\n");
return;
} //开始创建链表
rewind(fp); //移动到文件首
p2=head->next; //找到但前位置
while(!feof(fp))
{
p1=(STU *)malloc(sizeof(STU));
fscanf(fp,"%s %s %d %s %s %s %s %s\n",p1->NO,p1->name,&p1->age,\
p1->sex,p1->birthday,p1->address,p1->phone,p1->e_mail);
p1->next=NULL;
//创建节点完
if(head->next==NULL)
head->next=p1;
else
p2->next=p1;
p2=p1;
n++;
}
p2->next=NULL;
fclose(fp);
//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆执行菜单◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
void menu()
{
int c;
show_menu();
while(1)
{
scanf("%d",&c);
switch(c)
{
getchar();
case 1:insert_stu();break;
case 2:print_stu();break;
case 3:search_NO(); break;
case 4:search_name(); break;
case 5:del_stu(); break;
case 6:revise_stu(); break;
case 7:arrage_stu();break;
case 0:exit(0);
} //执行菜单选项
show_menu();
}
}
//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆显示菜单◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
void show_menu()
{
PF("\n");
PF("\n※※※※※※※※※※※※※※※※※※菜单※※※※※※※※※※※※※※※※※※\n");
PF("\t\t◆1.输入学生信息◆\n");
PF("\t\t★2.浏览学生信息★\n");
PF("\t\t◆3.以学号方式查询信息◆\n");
PF("\t\t★4.以姓名方式查询信息★\n");
PF("\t\t◆5.删除学生信息◆\n");
PF("\t\t★6.修改学生信息★\n");
PF("\t\t◆7 排序◆\n");