学生信息管理系统(纯C语言版)

使用的是Visual Studio 2022

 

运行效果

 

头文件部分 head.h

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <windows.h>
#include <string.h>
typedef struct Student
{
	char id[20];
	char name[10];
	char sex[3];
	int age;
	char phone[20];
}Student;

void menu(void);
//功能:在stu的count个元素,查找ss
//返回值:查找成功,返回ss在stu中的位置号;否则,返回 -1 
int searchID(Student stu[], int count, Student ss);
int searchNAME(Student stu[], int count, Student ss);
//正常插入,返回学生数;否则,返回-1
int add(Student stu[], int count, Student ss);
//若输入的学号存在,正常修改,返回学生数,否则修改失败,返回 -1 
int modify(Student stu[], int count, Student ss, int n);
//若输入的学号存在,完成删除,返回学生数,否则删除失败,返回 -1 
int Delete(Student stu[], int count, Student ss);
//写入文件
void writeFile(Student stu[], int count);
//读取文件
int readFile(Student stu[]);

主函数部分的源文件 test.c

#include"head.h"
int main()
{
	Student stu[50], ss;
	int  count = 0, i;
	int choice, t = 1;
	count = readFile(stu);
	while (t)
	{
	again:
		menu();
		scanf("%d", &choice);
		switch (choice)
		{
		case 1://增加信息
			printf("请输入待增加的学生\n学号:");
			scanf("%s", ss.id);
			printf("姓名:");
			scanf("%s", ss.name);
			printf("性别:");
			scanf("%s", ss.sex);
			printf("年龄:");
			scanf("%d", &ss.age);
			printf("联系方式:");
			scanf("%s", ss.phone);
			i = add(stu, count, ss);
			if (i != -1)
			{
				printf("插入成功\n");
				count = i;
			}
			else
				printf("插入失败,该学号已存在\n");
			writeFile(stu, count);
			Sleep(1000);
			system("cls");
			break;
		case 2://修改信息
			printf("请输入需要修改学生的学号:\n");
			scanf("%s", ss.id);
			i = searchID(stu, count, ss);
			if (i != -1)
			{
				printf("学号\t姓名\t性别\t年龄\t联系方式\n");
				printf("%s\t%s\t%s\t%d\t%s\n", stu[i].id, stu[i].name, stu[i].sex, stu[i].age, stu[i].phone);
				printf("请选择修改内容:\n");
				printf("1.姓名\n2.性别\n3.年龄\n4.联系方式\n");
				scanf("%d", &choice);
			}
			else
			{
				printf("%s 不存在,修改失败!\n", ss.id);
				system("pause");
				system("cls");
				goto again;
			}
			switch (choice)//修改指定内容
			{
			case 1:
				printf("请输入待修改的学生姓名:");
				scanf("%s", ss.name);
				i = modify(stu, count, ss, choice);
				break;
			case 2:
				printf("请输入待修改的学生性别:");
				scanf("%s", ss.sex);
				i = modify(stu, count, ss, choice);
				break;
			case 3:
				printf("请输入待修改的学生年龄:");
				scanf("%d", &ss.age);
				i = modify(stu, count, ss, choice);
				break;
			case 4:
				printf("请输入待修改的学生联系方式:");
				scanf("%s", ss.phone);
				i = modify(stu, count, ss, choice);
				break;
			default:
				printf("选择错误,请重新选择!!!\n");
				system("pause");
				system("cls");
				goto again;
			}
			if (i == -1)
			{
				printf("%s 不存在,修改失败!\n", ss.id);
				system("pause");
				system("cls");
			}
			else
			{
				printf("修改成功\n");
				Sleep(1000);
				system("cls");
			}
			writeFile(stu, count);
			break;
		case 3://删除信息
			printf("请输入待删除的学生学号:");
			scanf("%s", ss.id);
			i = Delete(stu, count, ss);
			if (i != -1)
			{
				printf("删除成功\n");
				Sleep(1000);
				system("cls");
				count = i;
			}
			else
			{
				printf("%s 不存在,删除失败\n", ss.id);
				system("pause");
				system("cls");
			}
			writeFile(stu, count);
			break;
			writeFile(stu, count);
			Sleep(1000);
			system("cls");
			break;
		case 4:
		{
			printf("\n1.输入学号查找\n2.输入姓名查找\n");
			scanf("%d", &choice);
			switch (choice)
			{
			case 1://按学号查找
				printf("请输入学号:");
				scanf("%s", ss.id);
				i = searchID(stu, count, ss);
				if (i != -1)
				{
					printf("学号\t姓名\t性别\t年龄\t联系方式\n");
					printf("%s\t%s\t%s\t%d\t%s\n", stu[i].id, stu[i].name, stu[i].sex, stu[i].age, stu[i].phone);
					system("pause");
					system("cls");
				}
				else
				{
					printf("%s 不存在!\n", ss.id);
					system("pause");
					system("cls");
				}
				break;
			case 2://按姓名查找 
				printf("请输入姓名:");
				scanf("%s", ss.name);
				i = searchNAME(stu, count, ss);
				if (i != -1)
				{
					printf("学号\t姓名\t性别\t年龄\t联系方式\n");
					printf("%s\t%s\t%s\t%d\t%s\n", stu[i].id, stu[i].name, stu[i].sex, stu[i].age, stu[i].phone);
					system("pause");
					system("cls");
				}
				else
				{
					printf("%s 不存在!\n", ss.name);
					system("pause");
					system("cls");
				}
				break;
			default:
			{
				printf("选择错误!!!");
				Sleep(1000);
				system("cls");
			}
			}
			break;
		}
		case 5://显示全部信息 
			if (count == 0)
				printf("目前暂无录入任何学生!\n");
			else
			{
				printf("学号\t姓名\t性别\t年龄\t联系方式\n");
				for (i = 0; i < count; i++)
					printf("%s\t%s\t%s\t%d\t%s\n", stu[i].id, stu[i].name, stu[i].sex, stu[i].age, stu[i].phone);
			}
			system("pause");
			system("cls");
			break;
		case 6:
			printf("已录入%d名同学\n", count);
			system("pause");
			system("cls");
			break;
		case 0:
			system("cls");
			printf("欢迎再次使用学生信息管理系统......\n");
			printf("请按任意键继续......");
			t = 0;
			writeFile(stu, count);
			break;
		default:
			printf("选择错误,请重新输入\n");
			system("pause");
			system("cls");
		}
		getchar();
	}getchar();
	return 0;
}

函数部分的源文件 func.c

#include"head.h"
void menu(void)
{
	printf("***************************************\n");
	printf("*********   学生信息管理系统  *********\n");
	printf("***************************************\n");
	printf("*********   1. 添加学生信息   *********\n");
	printf("*********   2. 修改学生信息   *********\n");
	printf("*********   3. 删除学生信息   *********\n");
	printf("*********   4. 查找学生信息   *********\n");
	printf("*********   5. 显示全部信息   *********\n");
	printf("*********   6. 查询录入人数   *********\n");
	printf("*********   0. 保存退出系统   *********\n");
	printf("***************************************\n");
	printf("请进行选择==> ");
}

//增加信息
int add(Student stu[], int count, Student ss)
{
	int pos;
	pos = searchID(stu, count, ss);
	if (pos == -1)
	{
		stu[count] = ss;
		return count + 1;
	}
	else
		return -1;
}

//修改信息
//若输入的学号存在,正常修改,返回学生数,否则,修改失败,返回 -1 
int modify(Student stu[], int count, Student ss, int n)
{
	int pos;
	pos = searchID(stu, count, ss);
	if (pos == -1)
		return -1;
	else
	{
		if (n == 1)
			strcpy(stu[pos].name, ss.name);
		else if (n == 2)
			strcpy(stu[pos].sex, ss.sex);
		else if (n == 3)
			stu[pos].age = ss.age;
		else if (n == 4)
			strcpy(stu[pos].phone, ss.phone);
	}
	return count;
}

//删除信息
//若输入的学号存在,正常删除,返回学生数,否则,删除失败,返回 -1 
int Delete(Student stu[], int count, Student ss)
{
	int pos, i;
	pos = searchID(stu, count, ss);
	if (pos == -1)
		return -1;
	else
	{
		for (i = pos + 1; i < count; i++)
			stu[i - 1] = stu[i];
		return count - 1;
	}
}

//查找信息
//在stu的count个元素,查找ss
//查找成功,返回ss在stu中的位置号;否则,返回 -1 
int searchID(Student stu[], int count, Student ss)
{
	int i;
	for (i = 0; i < count; i++)
		if (strcmp(stu[i].id, ss.id) == 0)
			return i;
	return -1;
}
int searchNAME(Student stu[], int count, Student ss)
{
	int i;
	for (i = 0; i < count; i++)
		if (strcmp(stu[i].name, ss.name) == 0)
			return i;
	return -1;
}


//写入文件信息
void writeFile(Student stu[], int count)
{
	FILE* fp;
	int i;
	fp = fopen("student.txt", "w");
	for (i = 0; i < count; i++)
		fprintf(fp, "%s\t%s\t%s\t%d\t%s\n", stu[i].id, stu[i].name, stu[i].sex, stu[i].age, stu[i].phone);
	fclose(fp);
}
//读取文件信息
int readFile(Student stu[])
{
	FILE* fp;
	int i;
	fp = fopen("student.txt", "r");
	if (fp == NULL)
		return 0;
	for (i = 0; !feof(fp); i++)
		fscanf(fp, "%s%s%s%d%s\n", stu[i].id, stu[i].name, stu[i].sex, &stu[i].age, stu[i].phone);
	fclose(fp);
	return i;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值