⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 student.txt

📁 数据结构算法-学生管理
💻 TXT
字号:

// student.cpp : Defines the entry point for the console application.
// vc++6.0 ljy 调试通过

#include "stdafx.h"
#include <stdio.h>
#include <malloc.h>
#include <string.h>

#define NULL 0
#define  ADD 0
#define  EDIT 1
#define  DEL  2
#define  OUTPUT 3
//学生信息
typedef struct tagStudent
{
	char szName[54];
	int number;
	float mathmark;
	float englishmark;
}Elemtype;

//链表结点信息
typedef struct tagNode
{
	Elemtype StudentInfo;
	struct tagNode *Next;
}NodeType;

void InitLst(NodeType **h)
{
	*h = (NodeType *)malloc(sizeof(NodeType));
	if(*h==NULL)
		return;
	else
		(*h)->Next=NULL;
}

short AddOneNewNode(NodeType *h)             //添加学生信息
{
	NodeType *pData=NULL;
	char szName[54];
	int number = 0;
	float mathmark;
	float englishmark;
	printf("请 输 入 姓 名");
	scanf("%s",szName);
	printf("请 输 入 学 号");
	scanf("%d",&number);
	printf("请输入数学成绩");
	scanf("%f",&mathmark);
	printf("请输入英语成绩");
	scanf("%f",&englishmark);

	pData = (NodeType *)malloc(sizeof(NodeType));
	if(pData==NULL)
		return 0;

	strcpy(pData->StudentInfo.szName,szName);
	pData->StudentInfo.number = number;
	pData->StudentInfo.mathmark = mathmark;
	pData->StudentInfo.englishmark = englishmark;
	pData->Next = NULL;

	pData->Next = h->Next;
	h->Next = pData;

	return 1;
}

short DeletOneNode(NodeType *h)             //删除学生信息
{
	int number;
	printf("请输入要删除的学生学号:");
	scanf("%d",&number);

	NodeType *p=h->Next,*q = h;
	while(p!=NULL)
	{
		if(p->StudentInfo.number==number)
		{
			q->Next = p->Next;
			free(p);
			break;
		}
		q = p;
		p = p->Next;
	}
	return 1;
}

short EditOneNode(NodeType *h)       //修改学生信息
{
	NodeType *p=h->Next;
	char szName[128] = "";
	int number = 0;
	float mathmark;
	float englishmark;

	printf("请输入要修改的学生学号:");
	scanf("%d",&number);
	while(p!=NULL)
	{
		if(p->StudentInfo.number==number)
		{
			printf("请 输 入 姓 名");
			scanf("%s",szName);
			printf("请 输 入 学 号");
			scanf("%d",&number);
			printf("请输入数学成绩");
			scanf("%f",&mathmark);
			printf("请输入英语成绩");
			scanf("%f",&englishmark);	
			strcpy(p->StudentInfo.szName,szName);
			p->StudentInfo.mathmark = mathmark;
			p->StudentInfo.englishmark = englishmark;
			break;
		}
		p = p->Next;
	}
	return 1;
}

short OutputLst(NodeType *h)           //输出学生信息
{
	NodeType *p=h->Next;
	char szName[128] = "";
	int number = 0;
	float mathmark;
	float englishmark;
	while(p!=NULL)
	{
		strcpy(szName,p->StudentInfo.szName);
		number = p->StudentInfo.number;
		mathmark = p->StudentInfo.mathmark;
		englishmark = p->StudentInfo.englishmark;                                                                                                                                                                                                                                                                                                                                                        
		printf("姓名:%-8s学号:%8d数学:%8.1f英语:%8.1f\n\n",szName,number,mathmark,englishmark);		
		p = p->Next;
	}
	return 1;
}

void DestroyLst(NodeType *h)        //销毁链表
{
	NodeType *p=h,*q=NULL;
	while(p!=NULL)
	{
		q = p;
		p = p->Next;
		free(q);
	}	
}

void Menu(NodeType *h)         //程序界面设计
{	int i=4;
	while(1)
	{
		printf("   ***  学生成绩管理 (v1.0)  ***\n");
        printf("    ***   李晶云  11402313  ***\n");
        printf("**************************************  \n");
                printf("|                                   |\n");
                printf("|        新  增 学 生:   0          |\n");
                printf("|        修改学生信息:  1          |\n");
                printf("|        删除学生信息:  2          |\n");
                printf("|        输出学生信息:  3          |\n");
                printf("|        退        出:  -1          |\n");
                printf("|                                   |\n");
                printf("**************************************  \n");
                printf ("PLEASE ENTER THE NUMBER(-1--3):\n");
		scanf("%d",&i);
		if(i==-1) break;
		if(i>3&&i>4)
			continue;
		switch(i)
		{
			case ADD:
				AddOneNewNode(h);
				break;
			case EDIT:
				EditOneNode(h);
				break;
			case DEL:
				DeletOneNode(h);
				break;
			case OUTPUT:
				OutputLst(h);
				break;
			default:break;
		}
	}
	return;
}

void main()
{	
	NodeType *h=NULL;
	InitLst(&h);
	Menu(h);
	DestroyLst(h);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -