学生信息管理系统 输入和输出 链表

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


struct student
{
char name [4];
char number[20];
int sex;
int year;
int major;
int uclass;
};


typedef struct student STUDENT;


struct listNode
{
STUDENT data;
struct listNode* next;
};


typedef struct listNode LISTNODE;
typedef struct listNode* LISTNODEPTR;


void build(LISTNODEPTR*);
void insert(LISTNODEPTR*,STUDENT);
void print(LISTNODEPTR);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学生信息管理系统是一个比较常见的小项目,可以利用链表来实现,以下是一个使用C语言实现的学生信息管理系统: ```c #include<stdio.h> #include<stdlib.h> #include<string.h> struct student{ int id; char name[20]; int score; struct student *next; }; typedef struct student STU; STU *create(); void print(STU *p); STU *insert(STU *p); STU *del(STU *p); STU *search(STU *p); void save(STU *p); int main(){ STU *head=NULL; int option; do{ printf("\n\n"); printf("1.创建\n"); printf("2.打印\n"); printf("3.插入\n"); printf("4.删除\n"); printf("5.查找\n"); printf("6.保存\n"); printf("7.退出\n"); printf("请选择:\n"); scanf("%d",&option); switch(option){ case 1:head=create();break; case 2:print(head);break; case 3:head=insert(head);break; case 4:head=del(head);break; case 5:search(head);break; case 6:save(head);break; case 7:exit(0);break; } }while(1); return 0; } STU *create(){ STU *head=NULL; STU *p1,*p2; p1=p2=(STU*)malloc(sizeof(STU)); scanf("%d %s %d",&p1->id,p1->name,&p1->score); while(p1->id!=0){ if(head==NULL){ head=p1; }else{ p2->next=p1; } p2=p1; p1=(STU*)malloc(sizeof(STU)); scanf("%d %s %d",&p1->id,p1->name,&p1->score); } p2->next=NULL; return head; } void print(STU *p){ if(p!=NULL){ printf("%d %s %d\n",p->id,p->name,p->score); print(p->next); } } STU *insert(STU *p){ STU *p1,*p2; p1=(STU*)malloc(sizeof(STU)); scanf("%d %s %d",&p1->id,p1->name,&p1->score); p2=p; while(p2->id<p1->id&&p2->next!=NULL){ p2=p2->next; } if(p1->id<=p2->id){ if(p==p2){ p1->next=p; p=p1; }else{ STU *p3; p3=p; while(p3->next!=p2){ p3=p3->next; } p1->next=p2; p3->next=p1; } }else{ p2->next=p1; p1->next=NULL; } return p; } STU *del(STU *p){ int num; printf("请输入要删除的学生学号:"); scanf("%d",&num); STU *p1; p1=p; if(p->id==num){ p=p->next; }else{ while(p1->next->id!=num){ p1=p1->next; } if(p1->next->next==NULL){ p1->next=NULL; }else{ p1->next=p1->next->next; } } return p; } STU *search(STU *p){ int num; printf("请输入要查找的学生学号:"); scanf("%d",&num); while(p!=NULL){ if(p->id==num){ printf("%d %s %d\n",p->id,p->name,p->score); return p; } p=p->next; } printf("无此学生\n"); return NULL; } void save(STU *p){ FILE *fp; fp=fopen("student.txt","w"); if(fp==NULL){ printf("文件打开失败\n"); return; } while(p!=NULL){ fprintf(fp,"%d %s %d\n",p->id,p->name,p->score); p=p->next; } fclose(fp); } ``` 这个程序中,定义了一个结构体 `student`,表示学生信息,其中包含学号、姓名、成绩和指向下一个学生信息的指针。利用这个结构体,可以构建一个链表来存储学生信息。 在主函数中,利用一个循环来不断接收用户的操作。用户可以选择创建学生信息、打印学生信息、插入、删除、查找和保存信息。每一次操作都会对链表进行修改或查询。 其中比较重要的函数包括: * `create()`:用来创建一个包含多个学生信息链表。用户需要输入每位学生的学号、姓名和成绩,当输入学号为0时,表示学生信息输入结束。 * `insert()`:用来向链表中插入新的学生信息。用户需要输入学号、姓名和成绩,程序会按学号大小将新的学生信息插入到链表中。 * `del()`:用来从链表中删除某个学生信息。用户需要输入要删除的学生的学号。 * `search()`:用来查找某个学生信息。用户需要输入要查找的学生的学号。如果找到了该学生,程序会输出学生的学号、姓名和成绩。 这个学生信息管理系统程序比较简单,但是已经涵盖了链表的创建、插入、删除和查找等基本操作,可以作为初学者学习链表的一个练手项目。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值