📄 student.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 + -