【链表】学生信息管理系统
#include <iostream>
#include<iomanip>//定位小数点的头文件setprecision()
#include <string>
using namespace std;
struct List//定义数据结构存取文件里的数据
{
char name[20];
char id[20];
float score[2];
};
struct PList//定义链表结构体,如果在c语言中务必添加typedef struct来定义一个PList
{
struct PList *prior;//前一个节点
char name[20];
char id[20];
float score[2];
struct PList *next;//后一个节点
};
PList *head=NULL,*p,*p1,*p2;
char FileName[20],Judge;//文件名和判断字符
int i,n;//n学生人数
void Create()//创造链表
{
int j,k;
p1=new PList;
List *stu=new List[n];//new学生结构体
FILE *fp;
fp=fopen(FileName,"a+");//附加方式打开,若无则新建一个FileName的文件
if(fp!=NULL)
{
fseek(fp,0,0);//文件指针挪到起始位置
for(i=0;i<n;i++)//利用结构体读取数据后传给链表
{
j=fgetc(fp);//j判断是否到文件末尾
if(j==EOF)
break;//到文件末尾则跳出
k=i;
fseek(fp,k*sizeof(struct List),0);//按学生结构体字节移动文件指针
fread(&stu[i],sizeof(struct List),1,fp);//结构体开始读取文件内容
p=new PList;//给p分配地址 相当于c语言中的p=(struct PList*)malloc(sizeof(struct PList)); strcpy(p->name,stu[i].name);//值传递到链表中
strcpy(p->id,stu[i].id);//值传递到链表中
p->score[0]=stu[i].score[0];//值传递到链表中


