学习了C语言结构体,链表和文件的知识之后,就可以做出一个学生信息管理系统了,下面的是我在刚学习完这块知识后写出来的,基本没什么界面,不过 能够实现 录入,添加,插入,遍历,删除,查询,并且保存到本地文件的功能。
首先,链表中每个学生节点的信息包括这些:姓名,学号,班内序号,手机号。所以定义这样的结构体类型:
struct student{
char iname[20];
int inumber;
char snum[10];
char iPhone[20];
struct student *next;
};
因为C语言是模块化的语言,所以把要实现的每个功能都做成一个函数,在主函数的选择语句中调用:
这些函数有:1.初始录入或添加学生信息函数:
struct student *Creat();
返回值为链表的头节点地址,功能是 录入学生信息并保存到D:\\stuifo.txt文件下。
2.插入学生信息函数:
void Insert();
功能:读出文件内的信息到链表,再将信息插入到其中,再保存到本地。
3.遍历文件中的学生信息
void print();
功能:读出文件内的信息到链表,再将其依次输出。
4.删除学生信息
void Delete();
功能:将指定的班内序号的学生从文件中删除。
5.查询学生信息
void seek();
功能:查询指定的班内序号的学生的信息,并显示。
以上就是学生信息管理系统的大致功能,但实现以上函数功能的过程中还需要调用几个更基本的函数:
int now1_student();
struct student *read();
void save(struct student *pHead);
它们的功能分别是:返回文件内学生数目;读文件内信息到链表;保存链表中信息到文件内。
具体代码如下:
#include#include#include#include#includestruct student{
char iname[20];
int inumber;
char snum[10];
char iPhone[20];
struct student *next;
};
int now1_student(){ //显示文件中现在已录入的学生数
int i=1;
char j[100000];
FILE *info;
info=fopen("d:\\stuifo.txt","rt");
rewind(info);
while(fgets(j,sizeof(struct student),info)!=NULL)
{
fseek(info,sizeof(struct student)*i,0);
i++;
}
fclose(info);
return i-1;
}
int icount=now1_student();
struct student *read(){ //读入文件内的信息,并返回链表头指针的地址
struct student *pHead,*pEnd,*pNew;
FILE *fp; //创建链表,并将文件内数据读入链表
fp=fopen("d:\\stuifo