学生管理系统

假期学习C语言,用C语言写的学生管理系统,仅作个人记录,方便以后查找
StudentManageSystem.h

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<string.h>
typedef struct {
	char name[32];
	char sex[8];
	int age;
	int score;
}Student;
typedef struct _node{
	Student stu;
	struct _node *next;
}Node;
void WelcomeInterface();
void Input(Node **input);
void PrintStu(Node **input);
void SaveStu(Node **input);
void ReadStu(Node **input);
void CountStu(Node **input);
void SearchStu(Node **input);
void DeleteStu(Node **input);

StudentManageSystem.c

#include"StudentManageSystem.h"
int main()
{
	char ch;
	Node *head=NULL;
	while(1)
	{
		WelcomeInterface();
		ch=getch();
		switch(ch)
		{
			case '1':InputStu(&head);break;
			case '2':PrintStu(&head);break;
			case '3':SaveStu(&head);break;
			case '4':ReadStu(&head);break;
			case '5':CountStu(&head);break;
			case '6':SearchStu(&head);break;
			case '7':CorrectStu(&head);break;
			case '8':DeleteStu(&head);break;
			case '0':goto end;
			default :
			{
				printf("输入有误,请重新输入\n");
				system("pause");
				system("cls");
			}
		}
	}
	end:
	return 0;
}

Function.c

#include"StudentManageSystem.h"
void WelcomeInterface()
{
	printf("*************************************************\n");
	printf("*\t     欢迎使用学生管理系统\t\t*\n");
	printf("*************************************************\n");
	printf("*\t\t   功能列表\t\t\t*\n");
	printf("*************************************************\n");
	printf("*\t\t1.录入学生信息\t\t\t*\n");
	printf("*\t\t2.打印学生信息\t\t\t*\n");
	printf("*\t\t3.保存学生信息\t\t\t*\n");
	printf("*\t\t4.读取学生信息\t\t\t*\n");
	printf("*\t\t5.统计学生信息\t\t\t*\n");
	printf("*\t\t6.查找学生信息\t\t\t*\n");
	printf("*\t\t7.修改学生信息\t\t\t*\n");
	printf("*\t\t8.删除学生信息\t\t\t*\n");
	printf("*\t\t0.退出系统\t\t\t*\n");
	printf("*************************************************\n");
}
void InputStu(Node **input)
{
	Node *nonce,*tail;
	nonce=(Node*)malloc(sizeof(Node));
	printf("请输入学生姓名:");
	scanf("%s",nonce->stu.name);
	printf("请输入学生性别:");
	scanf("%s",nonce->stu.sex);
	printf("请输入学生的年龄:");
	scanf("%d",&nonce->stu.age);
	printf("请输入学生的成绩:");
	scanf("%d",&nonce->stu.score);
	if(*input==NULL)
	{
		*input=nonce;
		nonce->next=NULL;
	}
	else
	{
		tail=*input;
		while(tail->next!=NULL)
		{
			tail=tail->next;
		}
		tail->next=nonce;
		nonce->next=NULL;
	}
	printf("学生信息录入成功\n");
	system("pause");
	system("cls");
}
void PrintStu(Node **input)
{
	system("cls");
	printf("*****************************************************************\n");
	printf("*\t\t\t   学生信息表\t\t\t\t*\n");
	printf("*****************************************************************\n");
	printf("*\t姓名\t*\t性别\t*\t年龄\t*\t成绩\t*\n"); 
	printf("*****************************************************************\n");
	Node *nonce;
	for(nonce=*input;nonce;nonce=nonce->next)
	{
		printf("*\t%s\t*\t%s\t*\t%d\t*\t%d\t*\n",nonce->stu.name,nonce->stu.sex,nonce->stu.age,nonce->stu.score);
	}
	printf("*****************************************************************\n");
	system("pause");
	system("cls");
}
void SaveStu(Node **input)
{
	Node *nonce;
	FILE *fp=fopen("d:\\StudentManageSystem.txt","w+");
	for(nonce=*input;nonce;nonce=nonce->next)
	{
		fwrite(&nonce->stu,1,sizeof(Student),fp);
	}
	fclose(fp);
	printf("保存信息成功\n");
	system("pause");
	system("cls");
}
void ReadStu(Node **input)
{
	Node *nonce,*tail; 
	FILE *fp=fopen("d:\\StudentManageSystem.txt","r");
	Student stu;
	while(fread(&stu,1,sizeof(Student),fp))
	{
		nonce=(Node*)malloc(sizeof(Node));
		memcpy(nonce,&stu,sizeof(Student));
		if(*input==NULL)
		{
			*input=nonce;
			nonce->next=NULL;
		}
		else
		{
			tail=*input;
			while(tail->next!=NULL)
			{
				tail=tail->next;
			}
			tail->next=nonce;
			nonce->next=NULL;
		}
	}
	fclose(fp);
	printf("读取信息成功\n");
	system("pause");
	system("cls");
}
void CountStu(Node **input)
{
	int count=0;
	Node *nonce;
	for(nonce=*input;nonce;nonce=nonce->next)
	{
		count++;
	}
	printf("学生人数为%d\n",count);
	system("pause");
	system("cls");
}
void SearchStu(Node **input)
{
	Node *nonce;
	char name[32];
	printf("请输入学生姓名:");
	scanf("%s",name);
	system("cls");
	printf("*****************************************************************\n");
	printf("*\t\t\t   学生信息表\t\t\t\t*\n");
	printf("*****************************************************************\n");
	printf("*\t姓名\t*\t性别\t*\t年龄\t*\t成绩\t*\n"); 
	printf("*****************************************************************\n");
	for(nonce=*input;nonce;nonce=nonce->next)
	{
		if(strcmp(nonce->stu.name,name)==0)
		printf("*\t%s\t*\t%s\t*\t%d\t*\t%d\t*\n",nonce->stu.name,nonce->stu.sex,nonce->stu.age,nonce->stu.score);
	}
	printf("*****************************************************************\n");
	system("pause");
	system("cls");
}
void CorrectStu(Node **input)
{
	Node *nonce;
	char name[32];
	printf("请输入学生姓名:");
	scanf("%s",name);
	system("cls");
	printf("*****************************************************************\n");
	printf("*\t\t\t   学生信息表\t\t\t\t*\n");
	printf("*****************************************************************\n");
	printf("*\t姓名\t*\t性别\t*\t年龄\t*\t成绩\t*\n"); 
	printf("*****************************************************************\n");
	for(nonce=*input;nonce;nonce=nonce->next)
	{
		if(strcmp(nonce->stu.name,name)==0)
		{
			printf("*\t%s\t*\t%s\t*\t%d\t*\t%d\t*\n",nonce->stu.name,nonce->stu.sex,nonce->stu.age,nonce->stu.score);
			break;
		}
	}
	printf("*****************************************************************\n");
	printf("请输入修改后的学生信息:");
	scanf("%s %s %d %d",nonce->stu.name,nonce->stu.sex,&nonce->stu.age,&nonce->stu.score);
	printf("修改成功\n"); 
	system("pause");
	system("cls");
}
void DeleteStu(Node **input)
{
	Node *nonce;
	char name[32];
	printf("请输入被删除学生姓名:");
	scanf("%s",name);
	system("cls");
	printf("*****************************************************************\n");
	printf("*\t\t\t   学生信息表\t\t\t\t*\n");
	printf("*****************************************************************\n");
	printf("*\t姓名\t*\t性别\t*\t年龄\t*\t成绩\t*\n"); 
	printf("*****************************************************************\n");
	Node *front;
	for(front=NULL,nonce=*input;nonce;front=nonce,nonce=nonce->next)
	{
		if(strcmp(nonce->stu.name,name)==0)
		{
			printf("*\t%s\t*\t%s\t*\t%d\t*\t%d\t*\n",nonce->stu.name,nonce->stu.sex,nonce->stu.age,nonce->stu.score);
			if(front==NULL)
			*input=nonce->next;
			else
			front->next=nonce->next;
			break;
		}
	}
	printf("*****************************************************************\n");
	free(nonce);
	printf("所示学生信息删除成功\n"); 
	system("pause");
	system("cls");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值