C语言编写班级花名册(顺序表版)
来源:互联网 发布:企业招商模板 知乎 编辑:程序博客网 时间:2024/05/03 18:24
C语言编写班级花名册(顺序表版)
需求 :利用顺序表设计班级花名册
日期:2017.3.26
日期: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;}
0 0
- C语言编写班级花名册(顺序表版)
- C语言编写班级花名册(链表版)
- 【笑话】国际班级花名册
- [转载]中国班级花名册
- [转载]中国班级花名册
- [转载] 世界班级花名册
- 国际班级花名册!!!!
- 中国班级花名册
- 国际班级花名册
- 国际班级花名册
- 中华人民共和国班级花名册
- 用C语言编写动态顺序表
- 内衣品牌之班级花名册
- c语言使用链表编写一个可以实现班级学生管理系统,增加,删除,修改学生信息
- C语言班级财务管理系统
- 线性表的顺序表示及实现(C语言编写)
- C语言链表实现班级管理系统
- 顺序表(C语言)
- 大端BigEndian、小端LittleEndian与字符集编码
- termios结构体的详细设置
- Gradle 'test' project refresh failed
- 绿盟科技面试
- C++ 虚函数表解析
- C语言编写班级花名册(顺序表版)
- 语音文件增大声音和除噪声及咔嚓声
- spring框架之注入
- CodeForces 734 B.Anton and Digits(水~)
- 第一次用python写socket
- 我的第一篇博客
- 完数
- 路由器的配置,IP,NAT、DHCP
- 一:《方田》-- 15