C语言链表模板,学生管理系统(链表数据写入文本)

简介: 学生管理系统(链表数据写入文本) 模板。

示例代码:

#include<stdio.h>
#include<stdlib.h>
#define N 4
//输入到文件的函数
void file(struct node*head);
//创建节点函数
struct node*fun();
//删除函数
void del(struct node*);
//查找函数
void find(struct node*);
//全部输出函数
struct node*output(struct node*);
 struct node
{
  int date;
  int score;
  char name[10];
  struct node *next;
};
 //首页函数
int sy()
{
  int i=1;
    printf("\t\t\t\t\t——————————————————\n");
    printf("\t\t\t\t\t*****链表各个功能实验测试   *****\n");
    printf("\t\t\t\t\t*****0.退出系统       *****\n");
    printf("\t\t\t\t\t*****1.输入数据       *****\n");
    printf("\t\t\t\t\t*****2.输出全部数据     *****\n");
    printf("\t\t\t\t\t*****3.删除数据       *****\n");
    printf("\t\t\t\t\t*****4.保存到文本            *****\n");
    printf("请选择\n");
    scanf_s("%d",&i);
    while(1)
    {
      if(i<0||i>N)
      {
        printf("***没有此选项。请重新选择***\n");
        system("pause");
      }
      break;
    }
  return i;
}
void main()
{
  int i,j=1;
  struct node*head=NULL;
  while(j)
  {
    i=sy();
    switch(i)
    {
      case 0:
        j=0; 
        printf("退出成功");
        break;
      case 1:
        head=fun();system("pause");break;//创建节点函数
      case 2:
        head=output(head);system("pause");break;//全部输出函数
      case 3:
        del(head);system("pause");break;//删除函数
      case 4:file(head);
      default:break;
    }
    printf("\t\t\t\t\t——————————————————\n");
  }
  system("pause");
}
//1创建节点
struct node*fun()
{
  int i=0,j=1;
  int date;
  int score;
  char name[10];
  struct node *head,*p,*n;
  struct node *last=NULL;//尾节点
  head=p=(struct node*)malloc(sizeof(struct node));
  //printf("输入多个个学生的编号,用空格隔开,输入0按回车结束输入\n");
  //scanf("%d",&i);
  while(1)
  {
    if(j>0)
    {
      i++;
      n=(struct node*)malloc(sizeof(struct node));
      printf("请输入第%d个学生的学号,姓名,分数\n",i);
      scanf("%d %s %d",&n->date,&n->name,&n->score);
      p->next=n;
      p=n;
      printf("是否继续输入下一个同学的信息?输入 1 继续,输入  0  就停止输入\n");
      fflush(stdin);
      scanf("%d",&j);
      fflush(stdin);
    }
    else 
    {
      p->next=last;
        p=last;
      break;
    }
  }
  return head;
}
//2输出
struct node* output(struct node*head)
{
  if(head==NULL)
    printf("还没有数据请先输入数据\n");
  else
  {
  struct node *p1;
  p1=head->next;
  printf("学号\t姓名\t分数\n");
  while(p1!=NULL)
  {
    printf("%d\t%s\t%d",p1->date,p1->name,p1->score);
    p1=p1->next;
    printf("\n");
  }
  printf("\n");
  return head;
  }
}
//3删除
void del(struct node*head)
{
  int key,j=0;
  struct node*p,*s;
  s=head->next;
  p=head;
  printf("请输入你要删除的数据\n");
  getchar();//fflush(stdin) ;删除缓存的数据。
  scanf("%d",&key);
  printf("%d\n",key);
  while(s!=NULL)
  {
    if(s->date!=key)
    {
      p=s;
      s=s->next;
    }
    else
      break;  
  }
  if(s!=NULL)
  {
    p->next=s->next;
    free(s);
    printf("yes yes     yes\n");
  }
  else
    printf("no no    no\n");
}
void file(struct node*head){
  int i=0;
  FILE *fp;
  struct node*p=head->next;
  fp=fopen("C:\\Users\\Administrator\\Desktop\\112.txt","wt");
   while(p!=NULL) 
 {
   fprintf(fp," %d\t%s\t%d\n",p->date,p->name,p->score);
   p = p->next;
   i++;
 }
   if(i>0)
     printf("\t\t\t\t\t—————保存成功—————\n");
   else printf("\t\t\t\t\t—————保存失败—————\n");
  fclose(fp);
}


目录
相关文章
|
28天前
|
存储 程序员 编译器
C 语言中的数据类型转换:连接不同数据世界的桥梁
C语言中的数据类型转换是程序设计中不可或缺的一部分,它如同连接不同数据世界的桥梁,使得不同类型的变量之间能够互相传递和转换,确保了程序的灵活性与兼容性。通过强制类型转换或自动类型转换,C语言允许开发者在保证数据完整性的前提下,实现复杂的数据处理逻辑。
|
1月前
|
存储 安全 数据管理
C语言之考勤模拟系统平台(千行代码)
C语言之考勤模拟系统平台(千行代码)
58 4
|
24天前
|
IDE 编译器 开发工具
【C语言】全面系统讲解 `#pragma` 指令:从基本用法到高级应用
在本文中,我们系统地讲解了常见的 `#pragma` 指令,包括其基本用法、编译器支持情况、示例代码以及与传统方法的对比。`#pragma` 指令是一个强大的工具,可以帮助开发者精细控制编译器的行为,优化代码性能,避免错误,并确保跨平台兼容性。然而,使用这些指令时需要特别注意编译器的支持情况,因为并非所有的 `#pragma` 指令都能在所有编译器中得到支持。
95 41
【C语言】全面系统讲解 `#pragma` 指令:从基本用法到高级应用
|
19天前
|
存储 编译器 C语言
【C语言】C语言的变量和声明系统性讲解
在C语言中,声明和定义是两个关键概念,分别用于告知编译器变量或函数的存在(声明)和实际创建及分配内存(定义)。声明可以多次出现,而定义只能有一次。声明通常位于头文件中,定义则在源文件中。通过合理组织头文件和源文件,可以提高代码的模块化和可维护性。示例包括全局变量、局部变量、函数、结构体、联合体、数组、字符串、枚举和指针的声明与定义。
45 12
|
28天前
|
存储 算法 C语言
【C语言】深入浅出:C语言链表的全面解析
链表是一种重要的基础数据结构,适用于频繁的插入和删除操作。通过本篇详细讲解了单链表、双向链表和循环链表的概念和实现,以及各类常用操作的示例代码。掌握链表的使用对于理解更复杂的数据结构和算法具有重要意义。
321 6
|
29天前
|
存储 数据管理 C语言
C 语言中的文件操作:数据持久化的关键桥梁
C语言中的文件操作是实现数据持久化的重要手段,通过 fopen、fclose、fread、fwrite 等函数,可以实现对文件的创建、读写和关闭,构建程序与外部数据存储之间的桥梁。
|
1月前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
56 5
|
1月前
|
存储 数据建模 程序员
C 语言结构体 —— 数据封装的利器
C语言结构体是一种用户自定义的数据类型,用于将不同类型的数据组合在一起,形成一个整体。它支持数据封装,便于管理和传递复杂数据,是程序设计中的重要工具。
|
1月前
|
存储 编译器 数据处理
C 语言结构体与位域:高效数据组织与内存优化
C语言中的结构体与位域是实现高效数据组织和内存优化的重要工具。结构体允许将不同类型的数据组合成一个整体,而位域则进一步允许对结构体成员的位进行精细控制,以节省内存空间。两者结合使用,可在嵌入式系统等资源受限环境中发挥巨大作用。
64 11
|
30天前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
48 1