用链表实现学生信息存储系统(10页).doc
《用链表实现学生信息存储系统(10页).doc》由会员分享,可在线阅读,更多相关《用链表实现学生信息存储系统(10页).doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-用链表实现学生信息存储系统-第 10 页#include #include #include #define PF printf#define LEN sizeof(struct student)/定义结构体struct student char NO20; char name20; int age; char sex3; /*F表示性别男,M表示性别女*/ char birthday10; char address30; char phone20; char e_mail20; struct student *next; /下个结点typedef struct student STU;ST
2、U *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(); /保
3、存信息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;
4、/找到但前位置 while(!feof(fp) p1=(STU *)malloc(sizeof(STU); fscanf(fp,%s %s %d %s %s %s %s %sn,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_m
5、enu(); 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
6、(n); PF(n菜单n); PF(tt1.输 入 学 生 信 息 n); PF(tt2.浏 览 学 生 信 息 n); PF(tt3.以学号方式查询信息n); PF(tt4.以姓名方式查询信息n); PF(tt5.删 除 学 生 信 息 n); PF(tt6.修 改 学 生 信 息 n); PF(tt7 排 序 n); PF(tt0. 退 出 n); PF(n); PF(n请选择n);/学生信息录入void insert_stu() /学生信息录入 n=0; STU *p1=NULL,*p2=NULL; p1=(STU *)malloc(sizeof(STU); PF(n录入学生信息n);
7、/录入学生信息 PF(tt输入学生学号:t); scanf(%s,p1-NO); /学号 PF(tt输入学生姓名:t); scanf(%s,p1-name); /姓名 PF(tt输入学生年龄:t); scanf(%d,&p1-age); /年龄 PF(tt输入学生性别:t); scanf(%s,p1-sex); /性别 PF(tt输入学生出生年月:t); scanf(%s,p1-birthday); /出生年月 PF(tt输入学生地址:t); scanf(%s,p1-address); /地址 PF(tt输入学生电话:t); scanf(%s,p1-phone); /电话 PF(tt输入学生E
8、-mail:t); scanf(%s,p1-e_mail); /E-mail n+; if(head-next=NULL) head=(STU *)malloc(LEN); head-next=p1; else for(p2=head;p2-next!=NULL;p2=p2-next); /*找到最后的结点,然后 将增加的结点挂在它上面*/ p2-next=p1; p1-next=NULL; save();/保存到文件 /学生信息浏览void print_stu() /学生信浏览 STU *p=NULL; if(head=NULL) /判断链表是否为空 PF(文档中无记录!n); return
9、; for(p=head-next;p!=NULL;p=p-next) /读出信息 PF(学生信息浏览n); PF(tt学生学号:t%sn,p-NO); PF(tt学生姓名:t%sn,p-name); PF(tt学生年龄:t%dn,p-age); PF(tt学生性别:t%sn,p-sex); PF(tt学生出生年月:t%sn,p-birthday); PF(tt学生地址:t%sn,p-address); PF(tt学生电话:t%sn,p-phone); PF(tt学生E-mail:t%sn,p-e_mail); PF(n); /输出信息 /学生姓名信息查找void search_name()
10、/学生姓名信息查找 STU *p=NULL; char name20; if(head=NULL) /判断链表是否为空 PF(文档中无记录!n); return; PF(输入学生姓名:); scanf(%s,name); for(p=head-next;p!=NULL;p=p-next) /读出信息 if(!strcmp(p-name,name) PF(您查找的学生是n); PF(tt学生学号:t%sn,p-NO); PF(tt学生姓名:t%sn,p-name); PF(tt学生年龄:t%dn,p-age); PF(tt学生性别:t%sn,p-sex); PF(tt学生出生年月:t%sn,p-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 用链表 实现 学生 信息 存储系统 10
限制150内