C语言编写班级花名册(顺序表版)

需求 :利用顺序表设计班级花名册
日期:2017.3.26 
以下是代码:
#include<stdio.h>
#include<stdlib.h>    // 调用malloc 函数
#include<conio.h>
#include<string.h>typedef struct Student{     // 定义学生结构体 char name[9];    // 姓名char num[20];  //学号char sex[3];    //性别char grade[6];  //成绩char tel_num[20];   //联系电话 } *stu; typedef struct Roster{   // 定义花名册结构体 int len;    // 现有元素个数 int maxnum;       // 最大元素个数 struct Student *element;  // 指向Student的指针变量
}*prst;// 定义全局变量
prst seqlist = NULL;
int MAX = 0;   // 最大元素个数 /********变量声明****/prst CreatSeqList(int m);   // 创建空表
void menu();    // 菜单界面
prst AddStu(prst plink);    // 添加学生
void ShowAll(prst plink);   // 显示全部学生信息
prst DelStu(prst plink, char *num);     // 删除学生
void SearchStu(prst plink, char *num);  // 查找单个学生信息
prst ModStu(prst plink, char *num);     // 修改学生信息
void SortStu(prst plink);   // 按成绩排序
void  FreeSeqlist(prst plink); // 释放内存 /*********声明结束*******/ /*************下面开始写 菜单界面 函数*************/
int main(void){int choice;char num[20] = {0};printf("请输入最大学生人数:");scanf("%d", &MAX);seqlist = CreatSeqList(MAX);while(1){menu();   printf("\n请选择:");scanf("%d",&choice);    //读入选择if(choice<1||choice>7){printf("\n\n键入数值无效!重新输入!\n");    } else{switch(choice){case 1:   seqlist = AddStu(seqlist); // 添加学生 getch();break; case 2:  printf("请输入该学生学号:");   // 修改学生 scanf("%s", num);seqlist = ModStu(seqlist, num);getch();break;case 3: printf("请输入该学生学号:");  // 删除学生 scanf("%s", num); getch();seqlist = DelStu(seqlist, num);break;case 4: printf("请输入该学生学号:"); // 寻找学生 scanf("%s", num);getch();SearchStu(seqlist, num); break;case 5: SortStu(seqlist);     // 按照成绩排序 getch();break;case 6: ShowAll(seqlist);getch();break;   case 7: FreeSeqlist(seqlist);printf("按任意键退出...");   //退出系统 getch();exit(0);break;}}}return 0;
}/*************下面开始写 菜单界面 函数*************/
void menu(){printf("\n");printf("\t\t      ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");printf("\t\t     ☆                                    ☆\n");printf("\t\t    ☆           班 级 花 名 册             ☆\n");printf("\t\t   ☆                                        ☆\n");printf("\t\t  ☆    1、增加学生信息 2、修改学生信息       ☆\n");printf("\t\t ☆     3、删除学生信息  4、查找学生信息        ☆\n");printf("\t\t ☆     5、按照成绩排序 6、显示全部            ☆\n");printf("\t\t  ☆    7、退出系统                           ☆\n");printf("\t\t   ☆                                        ☆\n");printf("\t\t    ☆                                      ☆\n");printf("\t\t     ☆                                    ☆\n");printf("\t\t      ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");}
/**************创建空顺序表 里面最多有m个元素 **********/
prst CreatSeqList(int m){    prst plink = (prst)malloc(sizeof(struct Roster));if(plink != NULL){plink->element = (Student*)malloc( sizeof(Student) *m);if(plink->element){//plink->maxnum = MAX;plink->len = 0;//printf("%d",plink->element);return plink;}else free(plink);}printf("内存不足,顺序表创建失败!\n");return NULL;
}/*********下面写 添加学生信息 函数**********/
prst AddStu(prst plink){int q;for(q = 0; q < plink->len; q++);
//  printf("%d", q);printf("请按下面的提示进行添加\n");printf("姓名\t学号\t\t性别\t成绩\t联系电话\n\n");scanf("%s%s%s%s%s", plink->element[q].name, plink->element[q].num, plink->element[q].sex,plink->element[q].grade, plink->element[q].tel_num);plink->len = plink->len+1;  printf("\n添加成功!\n");////printf("个数=%d", plink->len);return plink;
} /**********下面写 显示全部信息 函数************/
void ShowAll(prst plink){int p = 0;printf("姓名\t学号\t\t性别\t成绩\t联系电话\n\n");while(p < plink->len){printf("%s\t%s\t%s\t%s\t%s\n", plink->element[p].name, plink->element[p].num, plink->element[p].sex,plink->element[p].grade, plink->element[p].tel_num);p++;}return;
}/**************下面写 根据学号删除学生信息 函数***********/
prst DelStu(prst plink, char *num){int p = 0, q = 0, flag = 0;while(p < plink->len){if(strcmp(plink->element[p].num, num) == 0){for( q = p; q < plink->len-1; q++){plink->element[q] = plink->element[q+1]; }    //plink->element[q+1] = NULL;  // 将指针所指的最后一个元素赋空 plink->len = plink->len-1;flag = 1;printf("\n删除成功\n");} p++;}if(flag == 0)printf("没有找到该学生,请检查学号是否正确!");return plink;
}/*********下面写 按学号查找单个学生信息 函数************/
void SearchStu(prst plink, char *num){int p = 0, flag = 0;while(p < plink->len){if(strcmp(plink->element[p].num, num) == 0){printf("姓名\t学号\t\t性别\t成绩\t联系电话\n\n");printf("%s\t%s\t%s\t%s\t%s\n", plink->element[p].name, plink->element[p].num, plink->element[p].sex,plink->element[p].grade, plink->element[p].tel_num);   flag = 1;}p++;   }if(flag == 0)printf("没有找到该学生,请检查学号是否正确!");return;
}/**********下面写 修改学生信息 函数*********/
prst ModStu(prst plink, char *num){int p = 0, flag = 0;while(p < plink->len){if(strcmp(plink->element[p].num, num) == 0){printf("请按下面的提示进行修改\n");printf("姓名\t学号\t\t性别\t成绩\t联系电话\n\n");scanf("%s\t%s\t%s\t%s\t%s\n", plink->element[p].name, plink->element[p].num, plink->element[p].sex,plink->element[p].grade, plink->element[p].tel_num);printf("\n修改成功!\n");    flag = 1;}p++;   }if(flag == 0)printf("没有找到该学生,请检查学号是否正确!");return plink;
}   /******x下面写 按照成绩进行排序 函数******/
void SortStu(prst plink){Student stemp;for(int i = 0; i < plink->len; i++){for(int j = 0; j < plink->len-1; j++){if(strcmp(plink->element[i].num, plink->element[j].num) > 0){stemp = plink->element[i];plink->element[i] = plink->element[j];plink->element[j] = stemp;}}}printf("排序后结果如下:\n");ShowAll(plink);}/**********内存是要释放滴*****/
void  FreeSeqlist(prst plink){int p = 0; while(p < MAX){free(&plink->element[p]);p++;}free(plink);return;
}

C语言编写班级花名册(顺序表版)相关推荐

  1. c语言用while实现输出加法口诀表,「加法口诀」C语言编写一个加法口诀表 - 金橙教程网...

    加法口诀 C语言编写一个加法口诀表 #include void main(){ int i,j; for(i=1;i<10;i++){ for(j=1;j<=i;j++){ printf( ...

  2. C语言实现了一个顺序表(附完整源码)

    C语言实现了一个顺序表 顺序表 顺序表的概念 顺序表的存储结构 C语言实现了顺序表完整源码 顺序表 顺序表的概念 顺序表是线性表的顺序存储结构,加按顺序存储方式构造的线性表的存储结构. 说明:对于n个 ...

  3. C语言链表的转置算法,c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置.doc...

    c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置 #include "stdio.h" #include "malloc.h" /*typedef s ...

  4. c语言创建一个顺序表主函数,用C语言来创建一个顺序表(数据结构部分)

    顺序表的创建需要用到结构体,构造一个结构体来存储数据,顺序表申请的内存是连续的.创建顺序表的思路按照数据的"增删改查来进行编写"下列是顺序表的创建代码 创建头文件: sqlist. ...

  5. C语言编写一个加法口诀表

    C语言编写一个加法口诀表 代码: #include <stdio.h> void main(){ int i,j; for(i=1;i<10;i++){ for(j=1;j<= ...

  6. (C语言)已知顺序表L1,L2中数据由小到大有序,请用尽可能快的方法将L1与L2中的数据合并到L3中,使数据在L3中按升序排列。

    (C语言)已知顺序表L1,L2中数据由小到大有序,请用尽可能快的方法将L1与L2中的数据合并到L3中,使数据在L3中按升序排列. 输入样例: 5 2 4 9 10 11 6 1 2 4 6 7 8 输 ...

  7. 顺序表的c语言结构体描述,顺序表的基本方法实现C语言版

    顺序表--------------线性表的第一个儿子 这个儿子的结构体定义: typedef int ElemType;//取别名 typedef struct link{ ElemType * he ...

  8. C语言用数组(顺序表)实现大小固定的队列的方法

    顺序队列,即采用顺序表模拟实现的队列结构. 我们知道,队列具有以下两个特点: 1.数据从队列的一端进,另一端出: 2.数据的入队和出队遵循"先进先出"的原则: 因此,只要使用顺序表 ...

  9. 非递减有序排列C语言,非递减有序顺序表的排序

    由于编者水平有限,如有错误,请多多包涵. /* File name: Example.cpp Description: 非递减有序线性表LA, 非递减有序线性表LB, 要求排序后存放在LC中,且LC元 ...

最新文章

  1. python能做什么游戏ll-Python 应该怎么学?
  2. 机器人雅可比矩阵的求法_构造法
  3. Android学习——自定义控件(二)
  4. Ardino基础教程 2_LED闪烁实验
  5. java断言assert初步使用:断言开启、断言使用
  6. 翻译:创建 Windows8 应用 Part I: Hello, world!
  7. 干货:如何正确描述存储IO类型?
  8. SQL 创建存储过程,让主键自增
  9. oracle秘钥到期,Oracle – 更新加入 – 非密钥保留表
  10. java启动应用_java 学习:在java中启动其他应用,由jenkins想到的
  11. MAC修改保存bash_profile文件
  12. linux驱动基础开发1——linux 设备驱动基本概念-转
  13. python 路径拼接字符串_字符串游戏之拼接字符串
  14. 【UVM芯片漫游指南_000】总目录(下)——UVM目录
  15. java的小区车辆管理系统_基于Java的小区车辆信息管理系统的设计与实现
  16. 硬件木马检测方法概述
  17. hdu 4826 Labyrinth【DP】
  18. 一文学会用Python操作Excel+Word+CSV
  19. OpenSSL 使用openssl工具搭建私有CA
  20. STM32+MLX90614红外测温

热门文章

  1. 关于simple-keyboard在vue的应用
  2. 2019年计算机/软件学院发生变化的大学集合!完结版!
  3. oracle rac 主库,oracle11gRAC+DG主库增加数据文件
  4. 科技助力体育教育,央视总台少儿频道极速少年融媒体活动在京录制
  5. 女士流行春装,时尚女装,韩版女士春装
  6. android 报错处理
  7. PTA 7-11 拯救007 基础dfs
  8. 什么是DDOS(复制)
  9. 【记录】LaTeX|Overleaf中ACM的LaTex模板的图片引用出现问号
  10. Table 'mysql.user' doesn't exist