学生信息管理系统(C语言版本)

这是我个人写的一个学生管理系统,这是我仅仅用来练手的代码,要知道链表可是你在面试过程中最大机率会考到的,我是陆续从单向链表入门,然后采用双向链表写的代码!如有BUG,请指正,让我们共同进步!  1 #include<stdio.h>
  2 #include<malloc.h>
  3 #include<string.h>
  4 struct student
  5 {
  6      int id;
  7      char name[100];
  8      int age;
  9      int sex;
 10      int class_num;
 11      struct student *next;
 12      struct student *pr;
 13 };
 14 typedef struct student link;
 15 link *head;
 16 int insert()
 17 {
 18      link *newnode;
 19      newnode = (link *)malloc(sizeof(struct student));
 20          link *temp_head = head;
 21          printf("请输入学生ID:\n");
 22      scanf("%d",&newnode->id);
 23      printf("请输入学生姓名:\n");
 24      scanf("%s",newnode->name);
 25      printf("请输入学生年龄:\n");
 26      scanf("%d",&newnode->age);
 27      printf("请输入学生性别0(代表男 1代表女):\n");
 28      scanf("%d",&newnode->sex);
 29      if((newnode->sex == 0|| newnode->sex == 1) == 0)
 30      {
 31          printf("input is fail!\n");
 32          scanf("%d",&newnode->sex);
 33      }
 34       printf("请输入学生的班级号码:\n");
 35       scanf("%d",&newnode->class_num);
 36       newnode->next = NULL;
 37       newnode->pr = NULL;
 38          if(temp_head->next == NULL)
 39          {
 40           temp_head->next = newnode;
 41           newnode->pr = temp_head;
 42           newnode->next = NULL;
 43           return 0;
 44          }
 45    int flag = 0;
 46    while(temp_head->next != NULL)
 47    {
 48         if(newnode->id < temp_head->next->id)
 49         {
 50              newnode->next = temp_head->next;
 51              newnode->pr = temp_head;
 52              temp_head->next = newnode;
 53              newnode->next->pr = newnode;
 54              flag = 1;
 55              break;
 56          }
 57         temp_head = temp_head->next;
 58     }
 59     if(flag == 0)
 60       {
 61            temp_head->next = newnode;
 62        newnode->next = NULL;
 63        newnode->pr = temp_head;
 64       }
 65    return 0;
 66 }
 67 int input()
 68 {
 69   char num[100];
 70   scanf("%s",num);
 71   if(strcmp(num,"insert") == 0)
 72   {
 73       return 1;
 74   }
 75   else if(strcmp(num,"delete") == 0)
 76   {
 77       return 2;
 78   }
 79   else if(strcmp(num,"display") == 0)
 80   {
 81       return 3;
 82   }
 83   else if(strcmp(num,"exit") == 0)
 84   {
 85       return 4;
 86   }
 87   else
 88   {
 89       return 0;
 90   }
 91 }
 92 int display(int id)
 93 {
 94     link *temp_head = head;
 95     int flag = 0;
 96     if(temp_head->next == NULL)
 97     {
 98        printf("没有输入学生信息:\n");
 99        return 0;
100     }
101     while(temp_head != NULL)
102     {
103         if(temp_head->id == id)
104         {
105            printf("id = %d\n name = %s\n age = %d\n sex = %d\n class_num = %d\n",temp_head->id,temp_head->name,temp_head->age,temp_head->sex,temp_head->class_num);
106            flag = 1;
107            break;
108      }
109      temp_head = temp_head->next;
110     }
111     if(flag == 0)
112     {
113        printf("查无此人!\n");
114     }
115     return 0;
116 }
117 int delete(int id)
118 {
119      link *temp_head = head;
120      int flag;
121      if(temp_head->next == NULL)
122      {
123             printf("学生内容为空,无法删除\n");
124             return 0;
125      }
126      while(temp_head != NULL)
127      {
128         if(temp_head->id == id)
129           {
130                 if(temp_head->next == NULL)
131                   {
132                       temp_head->pr->next = NULL;
133                       flag = 1;
134                       break;
135                   }
136               else
137                {
138                  temp_head->pr->next = temp_head->next;
139                  temp_head->next->pr = temp_head->pr;
140                  flag = 1;
141                     break;
142                 }
143           }
144           temp_head = temp_head->next;
145
146      }
147      if(flag == 1)
148      {
149          printf("删除成功!\n");
150      }
151      else
152      {
153          printf("删除失败!\n");
154      }
155      return 0;
156 }
157 int main()
158 {
159     int pid;
160     int id;
161     int class_num;
162     head = (link *)malloc(sizeof(struct student));
163     head->next = NULL;
164     head->pr = NULL;
165     printf("/****************************\n");
166     printf("\t欢迎使用学生管理系统\n");
167     printf("\t输入insert添加学生信息\n");
168     printf("\t输入delete删除学生信息\n");
169     printf("\t输入display查看学生信息\n");
170     printf("\t输入exit退出程序\n");
171     printf("*************************/\n");
172     printf("请输入命令!\n");
173     pid = input();
174     while(pid != 4)
175     {
176         switch(pid)
177         {
178           case 1 :
179                     insert();
180                 break;
181           case 2 :
182                 printf("请输入要删除的学生ID:\n");
183             scanf("%d",&id);
184             delete(id);
185                     break;
186           case 3 :
187                 printf("请输入要显示的学生ID:\n");
188             scanf("%d",&id);
189             display(id);
190                     break;
191           case 0 :
192                     printf("输入的命令有误,请重新输入:\n");
193                 break;
194           case 4 :
195                     break;
196          }
197      printf("请输入命令!\n");
198      pid = input();
199    }
200    printf("该程序结束!\n");
201     return 0;
202 }

学生信息管理系统(C语言版本)

时间: 2024-08-24 11:57:22

学生信息管理系统(C语言版本)的相关文章

学生信息管理系统JAVASE版--1.1.1

现在终于可以写出实用一点的程序了.虽然这个程序的功能非常之简陋,而且还有BUG.不过最起码已经可以使用了. 功能预览和下一步的目标 程序主界面 查询功能: 目前只做了一个表的增.删.改.查.下一步应该就是把功能完善,比如加入错误处理,比如加入成绩部分.完成一个班级内的学生信息管理的功能,应该具有学生的基本信息查询,成绩管理这两个功能 不过有一个问题就是,在表格更新这一部分,每更新一次,就要创建一个tabliModel对象,感觉可以改进.再有就是MVC模式,其实也就接触设计模式.还有就是整成那种可

C语言课程设计之学生信息管理系统

#include"stdio.h"        //标准的输入输出函数文件头部说明 #include"math.h"              // 数学函数头部说明 #include"string.h" #include"stdlib.h"    //通过该函数头部里的函数,改变控制台的背景和颜色 #include"windows.h"    //头文件声明,下文用到了改变控制台的宽度和高度 #defi

【转载】C语言综合实验1—学生信息管理系统

http://www.cnblogs.com/Anker/archive/2013/05/06/3063436.html 实验题目:学生信息管理系统 实验要求:用户可以选择1-7可以分别进行学生信息的查看.添加.删除,修改,计算平均成绩,保存,退出系统操作. 提示:用一个结构体类型表示学生信息 typedef struct node /*定义结构体*/ { int num; //学号 char name[15];//姓名 char sex[9]; //性别 int age; //年龄 int e

C语言编写学生信息管理系统

学完C语言,自己想着编写一个学生信息管理系统,既可以巩固C语言知识,也能体验怎么合理地设计和实现一个项目. 设计比较简陋,希望各位大佬多多批评,多多指教! 这个系统最重要的便是主要功能框架,在主函数中用switch()多分支选择结构实现. 我是链表实现,代码如下: 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 #include<malloc.h> 5 #include<s

大一C语言结课设计之《学生信息管理系统》

第一次写这么长的程序,代码仅供參考,有问题请留言. /* ** 学生信息管理系统 ** IDE:Dev-Cpp 4.9.9.2 ** 2014-6-15 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <algorithm> #include <vector> using std::sort; using std::vector; /*==存储单元节点=

C语言学生信息管理系统

//原创:!! 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <algorithm> 5 using namespace std; 6 int n; 7 8 struct student 9 { 10 char name[20] ; //姓名: 11 char classnumber[10] ; //班级 :(1403) 12 char gender[2

学生信息管理系统修改

北京工业大学耿丹学院 c语言设计课程报告   课程设计名称:高级语言程序设计 专业班级:计算机科学与技术1 姓名:吴双 学号:150809201   2016年5月10日 一 对c语言指针链表的体会 ------------------------ 二 修改学生信息管理系统 ------------------------ 三 体会 ------------------------ 一 对c语言指针链表的体会 1.指针 简单来说,指针是一个存储计算机内存地址的变量. 用 int *ptr 这种形

学生信息管理系统

根据资料显示,那么,如果写一个字符串到一个文件中,是什么方式呢?显示到屏幕上是默认的输出文件,如果是硬盘中的一个文件,首先要打开一个文件,然后才能往里写,那么就要告诉程序这个文件在什么地方,按照什么样的方式打开(读.写.读和写.添加.覆盖等),然后打开后要给这个打开的文件一个符号(指针变量),表示后续的读和写都是针对这个文件的,而不是到屏幕的,这个指针变量以后就代表了文件自身了. 在学生信息管理系统中,需要同时保存一个学生的姓名,性别,年龄等信息,那么设置变量保存很多同学的这些信息就有点不太方便

学生信息管理系统(第一次.....)

因为我曾经做题都不看书.结果c语言书上的最后面文件的输入输出没有看.昨天学长让我们写个管理系统.我懵了. . 就花了一个小时看了看文件的输入输出.就先写个简单的学生信息管理系统把. 假设遗漏希望各位留言指出. . 我会改进的. 因为第一次写,代码粗糙请见谅.. . 对了,我还发现一个问题,希望会的博友能回复下. 我想怎样才干把写入文件的数据在文本中换行. 我在文件后加上fputc('\n'),是实现换行了,但是在查找的时候查找不到. 希望有人可以解答. . 谢谢.! #include <stdi