数据结构 线性顺序表 学生管理系统
今年是专升本第一年,跟老师学习做了个学生管理系统,有菜单选项,基本的增删改查都是没有问题的,废话不多说,代码呈上:
#include <stdio.h>
#include<malloc.h>
#include <string.h>
#include<stdlib.h>
typedef struct {int no;char name[8];float score;
}Student;
typedef struct {Student elem[100];int length;//int listsize;
}SqList;
//判断是否为空
bool ListEmpty(SqList *L){return (L->length==0); }
//顺序表的展示
void DispList(SqList *&L){int i;if(ListEmpty(L)) {printf("******计科一班学生信息******\n");printf("序号\t学号\t姓名\t\t\t成绩\n");}else { printf("******计科一班学生信息******\n");printf("序号\t学号\t姓名\t\t\t成绩\n");float averscore=0;for(i=0;i<L->length;i++){averscore+=L->elem[i].score;//printf("平均分为%d\n",averscore);printf("%d\t%d\t%-8s\t\t%.2f\n",i+1,L->elem[i].no,L->elem[i].name,L->elem[i].score);}printf("平均分:%.2f\n",averscore/L->length);printf("*********************************\n");}//return 0;}
//创建顺序表
void CreatList(SqList *&L,Student a[],int n){int i=0,k=0;L=(SqList *)malloc(sizeof(SqList));while(i<n){L->elem[k]=a[i];k++;i++;}L->length=k;}
//初始化顺序表void InitList(SqList *&L){L=(SqList *)malloc(sizeof(SqList));L->length=0;}
//向顺序表插入元素
int insertstu(SqList *&L){int len=(L->length);//printf("当前表长:%d\n",len);printf("请输入要插入学生的\n学号(1-4位):\n");scanf("%d",&L->elem[len].no); // printf("当前学号长度是%d\n",sizeof(L->elem[len].no));while(L->elem[len].no<1 || L->elem[len].no>9999){printf("不符合学号规定长度,请重新输入!\n");//printf("当前学号长度是:%d\n",sizeof(L->elem[len].no));scanf("%d",&L->elem[len].no); }printf("姓名(2-4位):\n");scanf("%s",&L->elem[len].name);//printf("%d",sizeof(L->elem[len].name));while(strlen(L->elem[len].name)<4|| strlen(L->elem[len].name)>8){printf("%d",strlen(L->elem[len].name)); printf("不符合规定姓名长度,请重新输入!\n");scanf("%s",&L->elem[len].name); }//printf("%s",L->elem[len].name);printf("成绩(满分100,精确到小数点后2位)\n");scanf("%f",&L->elem[len].score);int count = 1;float m=L->elem[len].score;while(m>9){m=m/10;count ++;} while(count>2||count<1){printf("不符合规定长度,请重新输入!\n");count=1;scanf("%f",&L->elem[len].score);m=L->elem[len].score;while(m>9){m=m/10;count ++;}}L->length = L->length+1;
// int i;//printf("%d",L->length);if(ListEmpty(L)) return false;printf("操作成功!");
DispList(L);}
//输出顺序表长度
void ListLength(SqList *L){printf("学生信息一共%d条",L->length);DispList(L);}
//定义菜单
int menu(){printf(" \n按回车键进入菜单........\n");int c;getchar(); printf("请输入想要操作的代码数字:\n");printf("****************MENU******************\n");printf(" 1.插入学生信息\n");printf(" 2.删除学生信息\n");printf(" 3.修改学生信息\n");printf(" 4.查看学生信息表\n"); printf(" 5.查看学生表长度\n"); printf(" 6.退出\n"); scanf("%d",&c);while(!(c>=1 && c<=6)){printf("请输入数字1-6!"); scanf("%d",&c);if(c>=1 && c<=6)break;}return c;}
//定义删除函数void delstu(SqList *L){int num;printf("请输入要删除的学生序号:\n");scanf("%d",&num);while(num<1||num>L->length) {printf("该同学不存在,请重新输入!\n");scanf("%d",&num); }//printf("%d",num); //getchar(); for(num;num<L->length+1;num++){L->elem[num-1]=L->elem[num];} printf("删除成功\n"); L->length--; DispList(L);}//定义修改函数int update(SqList *L){if(ListEmpty(L)) {printf("学生表为空!!\n");return false;}int no;printf("请输入要修改成绩的学生序号:\n");scanf("%d",&no);while(no<1||no>L->length){printf("该同学不存在,请重新输入!\n");scanf("%d",&no);}printf("请输入该同学要修改的内容,用空格隔开:\n");printf("学号 姓名 成绩\n");scanf("%d%s%f",&L->elem[no-1].no,&L->elem[no-1].name,&L->elem[no-1].score);} //主函数部分int main(){SqList *L;Student elem[100];elem[0].no=1;elem[1].no=2; //char stu[10];strcpy(elem[0].name,"刘方君");strcpy(elem[1].name,"唐诗"); elem[0].score=99;elem[1].score=88;CreatList(L,elem,2);DispList(L);
//insertstu(L);for(;;){switch(menu()){case 1:{insertstu(L);break;};case 2:{delstu(L);break;}case 3:{update(L);break;}case 4:{DispList(L);break;}case 5:{ListLength(L);break;}case 6:{exit(0);}}}return 0;
}
作者是初学,如有纰漏,敬请指正!
数据结构 线性顺序表 学生管理系统相关推荐
- python数据结构之线性顺序表
线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列.本文结合了互联网上的一些代码,以及结合百度百科关于线性顺序表的定义,实现了全部代码. 在稍复杂的线性 ...
- C++实现线性顺序表的初始化,插入,删除,销毁,清空等功能
C++实现线性顺序表的初始化,插入,删除,销毁,清空等功能 以下代码主要严蔚参考敏主编的<数据结构>(C语言)编写 //线性顺序表 #include <iostream> #d ...
- Tsai笔记:C++学习随性笔记(2)—— 数据结构:顺序表的基本操作
Tsai笔记:C++学习随性笔记(2)-- 数据结构:顺序表的基本操作 Tsai三步.(第一步,功能说明.第二步,结果图显示.第三步,代码展示) 第一步,功能说明. 1.线性表的顺序存储 线性表的顺序 ...
- 能带你起飞的【数据结构】成王第一篇:数据结构的顺序表
目录 前言 一.什么是顺序表 1.顺序表的概念及结构 创建顺序表 打印顺序表 获取顺序表长度 在pos位置新增元素 判定是否包含某个元素 查找某个元素对应的位置 获取 pos 位置的元素 给 pos ...
- 数据结构25 ————顺序表查找
数据结构25 ----顺序表查找 一. 目录 文章目录 数据结构25 ----顺序表查找 一. 目录 二. 顺序表查找 三. 顺序表查找代码 1.基本算法 2.进行优化 四. 参考资料 二. 顺序表查 ...
- 【数据结构】顺序表的应用(4)(C语言)
[数据结构]顺序表的应用(1)(C语言) [数据结构]顺序表的应用(2)(C语言) [数据结构]顺序表的应用(3)(C语言) 设计一个算法,将一个顺序表倒置,即如果顺序表各个节点值存储在一维数组a中, ...
- 【数据结构】顺序表的应用(3)(C语言)
问题: 已知一个顺序表中的各节点值是从大到小有序的,设计一个算法,插入一个值为x的节点,使顺序表中的节点仍然是从小到大有序的. 头文件与该头文件一样:[数据结构]顺序表的实现(C语言) #includ ...
- 【数据结构】顺序表的应用(2)(C语言)
问题: 2.有顺序表A和B,其元素均按从小到大的升序排列,编写一个算法,将它们合并成一个顺序表C,要求C的元素也按从小到大的升序排列. 头文件与该头文件一样:[数据结构]顺序表的实现(C语言) #in ...
- 【数据结构】顺序表的应用(1)(C语言)
问题: 1.将顺序表(a1,a2,-,an)重新排列以a1为界的两部分:a1前面的值均比a1小,a1后面的值均比a1大(这里假设数据元素的类型具有可比性,不妨设为整型). 头文件与该头文件一样:[数据 ...
最新文章
- 【 C 】在双链表中插入一个新值的简明程序
- 电脑打字手指正确姿势_正确的弹琴手型,应该是怎样的?
- Kubernetes Master High Availability 高级实践
- 现在人人都要准备的2020年六个事关职业生涯的技术趋势
- 老外编辑带你迈出自己容器化的第一步
- Matlab2012b license失效解决办法
- 计算机技巧网站,13个实用电脑技巧汇总
- ASP.NET 2.0使用Web Part创建应用程序之一(共二)
- Halcon软件和license下载
- 几种将网站设为首页的代码
- SlideLive:提供阶梯类型PPT模板下载
- Oracle number类型详解
- B/S模式下的MVC架构迭代(2)
- 爬虫之点触验证码的识别
- bilibili视频爬取报错
- Scala之set方法(超详细)
- RK WiFi驱动层初始化分析
- 洛谷P2790 ccj与zrz之积木问题 题解
- java入门之 美图相机(原图、灰度、二值化、马赛克、融合、轮廓获取)
- 按键精灵设置界面居中显示