📄 学生管理系统.cpp
字号:
#include "stdio.h"
#include "malloc.h"
typedef struct tagNODE
{
unsigned long ID;
char strName[16];
char address[50];
unsigned int score;
struct tagNODE *next;
}NODE;
NODE *createnode(int n)
{
NODE *pHead,*pRear;
NODE *pNewNode;
for(int i=0;i<n;i++)
{
pNewNode=(NODE *) malloc(sizeof(NODE));
printf("输入学生学号,姓名,住址和成绩:\n");
scanf("%d",&pNewNode->ID);
scanf("%s",&pNewNode->strName);
scanf("%s",&pNewNode->address);
scanf("%d",&pNewNode->score);
if(i==0)
pRear=pHead=pNewNode;
else
pRear->next=pNewNode;
pNewNode->next=NULL;
pRear=pNewNode;
}
return (pHead);
}
NODE * deletenode(NODE *pHead,unsigned long ID)
{
NODE *pf,*pb;
if(pHead==NULL)
{
printf("列表为空\n");
goto end;
}
pb=pHead;
while(pb->ID!=ID&&pb->next!=NULL)
{
pf=pb;
pb=pb->next;
}
if(pb->ID==ID)
{
if(pb==pHead)
pHead=pHead->next;
else
pf->next=pb->next;
free(pb);
printf("该结点删除\n");
}
else
{
printf("该结点不存在\n");
}
end:
return pHead;
}
NODE * insertnode(NODE * head,NODE *pi)
{
NODE *pf,*pb;
pb=head;
pf=NULL;
if(head==NULL)
{
head=pi;
pi->next=NULL;
}
else
{
while((pi->ID>pb->ID)&&(pb->next!=NULL))
{
pf=pb;
pb=pb->next;
}
if(pi->ID<=pb->ID)
{
if(head==pb)
head=pi;
else
pf->next=pi;
pi->next=pb;
}
else
{
pb->next=pi;
pi->next=NULL;
}
}
return head;
}
void print(NODE * head)
{
printf("学号,姓名,地址和成绩为:\n");
while(head!=NULL)
{
printf("%u %s %s %d\n",head->ID,head->strName,head->address,head->score);
head=head->next;
}
}
void main()
{
NODE * head,*pnum;
int n,num;
printf("\n输入结点数量:\n");
scanf("%d",&n);
head=createnode(n);
print(head);
printf("\n输入删除的学号:\n");
scanf("%d",&num);
head=deletenode(head,num);
print(head);
printf("\n输入插入的学号,姓名,地址和成绩为:\n");
pnum=(NODE *) malloc(sizeof(NODE));
scanf("%u %s",&pnum->ID,&pnum->strName);
head=insertnode(head,pnum);
print(head);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -