2021-03-11

#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)
向各位大佬求助此程序的算法思路
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值