#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct record{ //学生信息 结构体
char No[10];
char name[12];
unsigned int age;
char sex[4];
char birth[10];
char qq[12];
char grade[20];
char phone[11];
struct record *next;
}STU;
int menu(); //菜单函数
STU * load_info(); //载入函数:txt转为链表
STU * add_info(STU *h); //增加学生
STU * search_info(STU *h,int type);//搜索函数
STU * delete_info(STU *h);//删除学生
void update_info(STU *h);//修改学生信息
void output_info(STU *h);//输出信息
void preview_info(STU *h,int type);//预览信息
int main()
{
STU *header=NULL,*sear=NULL;int cmd=1;
system(“title 学生信息管理系统”);
system(“date /T”);
system(“TIME /T”);
system(“color 5E”);
header=load_info();
cmd=menu(); //菜单选项设置
while(cmd!=0)
{
switch(cmd)
{
case 0:break;
case 1://添加信息
header=add_info(header);output_info(header);
break;
case 2://学号查询
sear=search_info(header,1);
if(sear!=NULL)
{
preview_info(sear,1);
}
else
printf("该学生不存在!\n");
sear=NULL;
break;
case 3: //姓名查询
sear=search_info(header,2);
if(sear!=NULL)
{
preview_info(sear,1);
}
else
printf("该学生不存在!\n");
sear=NULL;
break;
case 4://按学号删除
header=delete_info(header);
output_info(header);
break;
case 5: //修改
update_info(header);
output_info(header);
break;
case 6: //整表输出
preview_info(header,2);
break;
default://命令无效
printf("无效的命令!\n请重新输入命令!\n");
break;
}
if(cmd!=0)
cmd=menu();
}
}
int menu()
{
int cmd=0;
printf("\n请输入命令:\n\t0:结束程序!\n\t1:添加学生!\n\t2:按学号查询!\n\t3:按姓名查询!\n\t4:按学号删除信息!\n\t5:按学号修改信息!\n\t6:整表浏览!\n");
scanf("%d",&cmd);
while(cmd<0 || cmd>9)
{
printf(“无效的命令!\n请重新输入:\n”);
scanf("%d",&cmd);
}
return cmd;
}
STU * load_info()//载入函数:txt转为链表
{
FILE *fp=fopen(“d:\stu.txt”,“r+”),*fpNew=NULL;
STU *h=NULL,*q=NULL,*p=NULL;char ch='0';
h=(STU *)malloc(sizeof(STU));
if(fp==NULL)
{
fpNew=fopen("d:\\stu.txt","w");
fclose(fpNew);
return NULL;
}
rewind(fp);
ch=fgetc(fp);
if(ch==EOF)
{
return NULL;
}
else
{
rewind(fp)
向各位大佬求助此程序的算法思路