C语言--学生管理系统

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>


using namespace std;
//描述一个学生
struct Message
{
	char m_chName[20];//姓名
	int m_iAge;//年龄
	int m_iNum;//学号
	float m_fscord;//成绩
	struct Message* pNext;
};
typedef struct Message Node;


struct List
{
	int m_iLength;
	Node* pHead;
};


struct List list;
void showWindow();
void inputMessage();//录入学生信息
int saveMessage();//保存学生信息
void getSum();//获取总人数
void putMessage();//打印学生信息
int readMessage();//读取学生信息
int searchMessage();//查找学生信息
int amendMessage();//修改学生信息
int deleteMessage();//删除学生信息
int main()
{
	list.m_iLength = 0;
	list.pHead = NULL;
	while (1)
	{
		showWindow();


		//从控制台读取一个字符
		char ch = _getch();
		system("cls");
		switch (ch)
		{
		case '1'://录入学生信息
			inputMessage();
			break;


		case '2'://打印学生信息
			putMessage();
			break;


		case '3'://保存学生信息
			saveMessage();
			break;


		case '4'://读取学生信息
			readMessage();
			break;


		case '5'://统计学生人数
			getSum();
			break;


		case '6'://查找学生信息
			searchMessage();
			break;


		case '7'://修改学生信息
			amendMessage();
			break;


		case '8'://删除学生信息
			deleteMessage();
			break;


		case '0'://退出系统
			printf("欢迎再次使用\t");
			system("pause");
			return 0;
			break;
		default://都没有
			printf("输入有误,重新输入\t");
			system("pause");
			system("cls");
			break;
		}
	}


	system("pause");
	return 0;
}


void showWindow()
{
	printf("***************************************\n");
	printf("*\t\t学生管理系统\t\t*\n");
	printf("***************************************\n");
	printf("*\t\t功能列表\t\t*\n");
	printf("***************************************\n");
	printf("*\t\t1.录入学生信息\t\t*\n");
	printf("*\t\t2.打印学生信息\t\t*\n");
	printf("*\t\t3.保存学生信息\t\t*\n");
	printf("*\t\t4.读取学生信息\t\t*\n");
	printf("*\t\t5.统计学生人数\t\t*\n");
	printf("*\t\t6.查找学生信息\t\t*\n");
	printf("*\t\t7.修改学生信息\t\t*\n");
	printf("*\t\t8.删除学生信息\t\t*\n");
	printf("*\t\t0.退出系统\t\t*\n");
	printf("***************************************\n");
}
void inputMessage()
{
	//往链表中添加一个学员


	//找到链表的尾节点
	Node* preNode = list.pHead;
	while (list.pHead!=NULL&&preNode->pNext!=NULL)
	{
		preNode = preNode->pNext;
	}
	//创建一个新节点
	Node* pNewNode = (Node*)malloc(sizeof(Node));
	pNewNode->pNext = NULL;
	if ( list.pHead== NULL)
	{
		list.pHead = pNewNode;
	}
	else
	{
		preNode->pNext = pNewNode;
	}
	printf("请输入学生姓名:\n");
	cin >> pNewNode->m_chName;
	printf("请输入学生年龄:\n");
	cin >> pNewNode->m_iAge;
	printf("请输入学生学号:\n");
	cin >> pNewNode->m_iNum;
	printf("请输入学生成绩:\n");
	cin >> pNewNode->m_fscord;
	printf("信息录入成功\n");
	list.m_iLength++;
	system("pause");
	system("cls");
}
void getSum()
{
	cout << "总人数为:" << list.m_iLength << endl;
	system("pause");
	system("cls");
}
//打印
void putMessage()
{
	system("cls");
	printf("************************************\n");
	printf("学生信息如下:\n");
	printf("\t\t学号\t姓名\t年龄\t成绩:\n");


	//遍历链表
	Node*p = list.pHead;
	while (p != NULL)
	{
	/*	cout << "\t\t" << p->m_chNum << "\t" << p->m_chName << "\t" << p->m_iAge << "\t" << p->m_fscord << endl;*/
		printf("\t\t%d\t%s\t%d\t%.2f\n",p->m_iNum,p->m_chName,p->m_iAge,p->m_fscord);
		p = p->pNext;
	}
	system("pause");
	system("cls");
}
//保存
int saveMessage()
{
	system("cls");
	FILE* pFile;
	pFile= fopen("D:\ studentMessage", "w");
	if (pFile == NULL)
	{
		printf("打开文件失败\n");
		pFile = fopen("D:\ studentMessage", "w");
		return 0;
	}
	//写入数据
	Node*p = list.pHead;
	while (p != NULL)
	{


		fprintf(pFile, "\t\t%d\t%s\t%d\t%f", p->m_iNum, p->m_chName, p->m_iAge, p->m_fscord);
		p = p->pNext;
	}


	printf("保存成功\n");
	fclose(pFile);
	system("pause");
	system("cls");
}
//读取
int readMessage()
{
    system("cls");
	FILE* pFile;
	pFile= fopen("D:\ studentMessage","r");
	if (pFile == NULL)
	{
		printf("读取失败\n");
		return 0;
	}
    int nei=fgetc(pFile);
    if(nei==EOF)//文件内没东西时
    {
        return 0;
    }
	fseek(pFile, 0,  SEEK_SET);
	while (!feof(pFile))
	{
	    Node*p=(Node*)malloc(sizeof(Node));
        p->pNext = NULL;
	    fscanf(pFile,"\t\t%d\t%s\t%d\t%f", &p->m_iNum, p->m_chName, &p->m_iAge, &p->m_fscord);
        if(list.pHead!=NULL&&list.pHead->pNext==NULL)
        {
            list.pHead->pNext = p;
        }
        else
        {
            Node* s = list.pHead;
            while (list.pHead!=NULL&&s->pNext!=NULL)
	        {
		        s= s->pNext;
	        }
	        if ( list.pHead== NULL)
            {
		        list.pHead = p;
	        }
	        else
	        {
	        	s->pNext = p;
	        }
        }
		list.m_iLength++;
	}
	printf("读取成功\n");
	fclose(pFile);
	system("pause");
	system("cls");
}
//查找
int searchMessage()
{
	system("cls");
	printf("请输入你要查找的学生学号:\n");
    int _s=0;
	scanf("%d",&_s);
	system("cls");
	Node*p = NULL;
	p=list.pHead;
    while (list.pHead != NULL&&p->m_iNum!=_s )
    {
        p=p->pNext;
    }
	printf("学号:%d\t姓名:%s\t年龄:%d\t分数:%.2f\n", p->m_iNum, p->m_chName, p->m_iAge, p->m_fscord);
	p=NULL;
	system("pause");
	system("cls");
}
//修改
int amendMessage()
{
	system("cls");
	printf("请输入你要修改的学生学号:\n");
	int _s=0;
	scanf("%d",&_s);
	system("cls");
	Node*l = NULL;
	l=list.pHead;
	if (list.pHead != NULL&&list.pHead->pNext == NULL)
	{
		printf("请输入学生姓名:\n");
		cin >> list.pHead->m_chName;
		printf("请输入学生年龄:\n");
		cin >> list.pHead->m_iAge;
		printf("请输入学生成绩:\n");
		cin >> list.pHead->m_fscord;
	}
	else
	{
		while (list.pHead != NULL&&l->m_iNum!=_s )
	    {
	    	l=l->pNext;
    	}
		printf("请输入学生姓名:\n");
		cin >> l->m_chName;
		printf("请输入学生年龄:\n");
		cin >> l->m_iAge;
		printf("请输入学生学号:\n");
		cin >> l->m_iNum;
		printf("请输入学生成绩:\n");
		cin >> l->m_fscord;
	}
	printf("修改成功\n");
	l=NULL;
	system("pause");
	system("cls");
}
//删除
int deleteMessage()
{
	system("cls");
	printf("请输入你要删除的学生学号:\n");
	int _s=0;
	scanf("%d",&_s);
	system("cls");
	Node*o = NULL;
	o=list.pHead;
	if (list.pHead != NULL&&o->pNext == NULL)
	{
		list.pHead= NULL;
	}
	else
	{
    	while (list.pHead != NULL&&o->m_iNum!=_s )
	    {
		    o=o->pNext;
	    }


		while(o->pNext != NULL)
		{


			o->m_iAge=o->pNext->m_iAge;
			o->m_fscord=o->pNext->m_fscord;
			o->m_iNum=o->pNext->m_iNum;
			strcpy(o->m_chName,o->pNext->m_chName);
			o=o->pNext;
		}
	}
	list.m_iLength--;
	printf("删除成功\n");
	system("pause");
	system("cls");
}




猜你喜欢

转载自blog.csdn.net/qq_41750725/article/details/79519607