功能:成绩管理系统包含了学生的全部信息,每个学生是一个记录,包括学号,姓名,性别,班级,各科成绩(语数外)。

系统功能:

    1.信息录入——录入学生信息;

    2.信息输出——显示所有信息;

    3.信息查询——查询单个学生信息(按学号或按姓名),按性别,班级查询;

    4.信息排序——分别按各科成绩,平均成绩,学号,姓名,总分排名;

    5.信息插入——插入一学生信息(中间插入和最后插入);

    6.信息删除——删除一学生信息;(先打出学生信息然后确认删除);

 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 1000
typedef struct
{
int no;
char name[];
char sex[];
char cla[];
int Chinese,math,Eng,sum,average;
}Datatype; typedef struct
{
Datatype data[MAXSIZE];
int len;
}SeqList; /*录入学生信息*/
void input(SeqList *L)
{
int i;
printf("请输入学生的人数:");
scanf("%d",&L->len);
printf("请输入学生的学号、姓名、性别、班级、语数英成绩:\n");
printf("(之间用Tab键隔开)\n\n");
printf("学号 姓名 性别 班级 语文 数学 英语\n");
for(i=;i<=L->len;i++)
{
scanf("%d%s%s%s%d%d%d",&L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,&L->data[i].Chinese,&L->data[i].math,&L->data[i].Eng);
L->data[i].sum=L->data[i].Chinese+L->data[i].math+L->data[i].Eng;
L->data[i].average=(int)L->data[i].sum/;
}
} /*浏览学生信息*/
void display(SeqList *L)
{
int i;
printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
for(i=;i<=L->len;i++)
{
printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
}
} /*按学号查找学生信息*/
int search_no(SeqList *L,Datatype x)
{
int i=;
while(i<=L->len&&L->data[i].no!=x.no)
{
i++;
}
if(i>L->len)
{
return ;
}
else
{
return i;
} } /*按姓名查找学生信息*/
int search_name(SeqList *L,Datatype x)
{
int i=;
while(i<=L->len&&strcmp(L->data[i].name,x.name)!=)
{
i++;
}
if(i>L->len)
{
return ;
}
else
{
return i;
}
} /*按性别查找学生信息*/
void search_sex(SeqList *L,Datatype x)
{
int i;
for(i=;i<=L->len;i++)
{
if(i<=L->len&&strcmp(L->data[i].sex,x.sex)==)
{
printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
}
}
} /*按班级查找学生信息*/
void search_cla(SeqList *L,Datatype x)
{
int i;
for(i=;i<=L->len;i++)
{
if(i<=L->len&&strcmp(L->data[i].cla,x.cla)==)
{
printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
}
}
} /*按语文成绩排序*/
void sort_Chinese(SeqList *L)
{
Datatype hold;
int pass,i;
for(pass=;pass<((L->len)-);pass++)
{
for(i=;i<L->len;i++)
{
if(L->data[i].Chinese<L->data[i+].Chinese)
{
hold=L->data[i];
L->data[i]=L->data[i+];
L->data[i+]=hold;
}
}
}
} /*按数学成绩排序*/
void sort_math(SeqList *L)
{
Datatype hold;
int pass,i;
for(pass=;pass<((L->len)-);pass++)
{
for(i=;i<L->len;i++)
{
if(L->data[i].math<L->data[i+].math)
{
hold=L->data[i];
L->data[i]=L->data[i+];
L->data[i+]=hold;
}
}
}
} /*按英语成绩排序*/
void sort_Eng(SeqList *L)
{
Datatype hold;
int pass,i;
for(pass=;pass<((L->len)-);pass++)
{
for(i=;i<L->len;i++)
{
if(L->data[i].Eng<L->data[i+].Eng)
{
hold=L->data[i];
L->data[i]=L->data[i+];
L->data[i+]=hold;
}
}
}
} /*按平均分成绩排序*/
void sort_average(SeqList *L)
{
Datatype hold;
int pass,i;
for(pass=;pass<((L->len)-);pass++)
{
for(i=;i<L->len;i++)
{
if(L->data[i].average<L->data[i+].average)
{
hold=L->data[i];
L->data[i]=L->data[i+];
L->data[i+]=hold;
}
}
}
} /*按学号排序*/
void sort_no(SeqList *L)
{
Datatype hold;
int pass,i;
for(pass=;pass<((L->len)-);pass++)
{
for(i=;i<L->len;i++)
{
if(L->data[i].no>L->data[i+].no)
{
hold=L->data[i];
L->data[i]=L->data[i+];
L->data[i+]=hold;
}
}
}
} /*按姓名排序*/
void sort_name(SeqList *L)
{
Datatype hold;
int pass,i;
for(pass=;pass<((L->len)-);pass++)
{
for(i=;i<L->len;i++)
{
if(strcmp(L->data[i].name,L->data[i+].name)>)
{
hold=L->data[i];
L->data[i]=L->data[i+];
L->data[i+]=hold;
}
}
}
} /*按总分排序*/
void sort_sum(SeqList *L)
{
Datatype hold;
int pass,i;
for(pass=;pass<((L->len)-);pass++)
{
for(i=;i<L->len;i++)
{
if(L->data[i].sum<L->data[i+].sum)
{
hold=L->data[i];
L->data[i]=L->data[i+];
L->data[i+]=hold;
}
}
}
} /*插入学生信息*/
void insert(SeqList *L,Datatype x)
{
int i=,j;
while(i<=L->len&&(L->data[i].no<x.no))
{
i++;
}
if(L->len==MAXSIZE-)
{
printf("系统存储空间已满,无法增加学生信息!!");
}
else
{
for(j=L->len;j>=i;j--)
{
L->data[j+]=L->data[j];
}
L->data[i]=x;
L->len++;
}
} /*删除学生信息*/
void del(SeqList *L,Datatype x)
{
int i,j;
i=search_no(L,x);
if(i==)
{
printf("学号有误!!\n");
}
else
{
for(j=i+;j<=(L->len);j++)
{
L->data[j-]=L->data[j];
}
L->len--;
}
}
void menu()
{
printf("*************************************\n");
printf("* 大学生成绩管理系统 *\n");
printf("*1----------------------录入学生信息*\n");
printf("*2----------------------浏览学生信息*\n");
printf("*3----------------------查找学生信息*\n");
printf("*4------------------------------排序*\n");
printf("*5----------------------插入学生信息*\n");
printf("*6----------------------删除学生信息*\n");
printf("*0----------------------退出管理系统*\n");
printf("*************************************\n");
} int main()
{
Datatype x;
SeqList *L;
int sel,k,s,i;
L=(SeqList *)malloc(sizeof(SeqList));
L->len=;
printf(" 欢迎使用大学生成绩管理系统 \n");
do
{
menu();
printf("\n请输入你的选择:");
scanf("%d",&sel);
switch(sel)
{
case :printf("\n你选择了录入学生信息:\n\n");
input(L);
break;
case :printf("\n你选择了浏览学生信息:\n\n");
display(L);
break;
case :printf("\n你选择了查找学生信息:\n\n");
printf("**************************************\n");
printf("*按<学号>查找请按1,按<姓名>查找请按2*\n");
printf("*按<性别>查找请按3,按<班级>查找请按4*\n");
printf("**************************************\n");
scanf("%d",&s);
if(s==)
{
printf("请输入要查找的学生的学号:");
scanf("%d",&x.no);
k=search_no(L,x);
if(k==)
{
printf("学号有误!!\n");
}
else
{
printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[k].no,L->data[k].name,L->data[k].sex,L->data[k].cla,L->data[k].Chinese,L->data[k].math,L->data[k].Eng,L->data[k].sum,L->data[k].average);
}
}
else if(s==)
{
printf("请输入要查找的学生的姓名:");
scanf("%s",x.name);
k=search_name(L,x);
if(k==)
{
printf("姓名有误!!\n");
}
else
{
printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[k].no,L->data[k].name,L->data[k].sex,L->data[k].cla,L->data[k].Chinese,L->data[k].math,L->data[k].Eng,L->data[k].sum,L->data[k].average);
}
}
else if(s==)
{
printf("请输入性别(男或女):\n");
scanf("%s",x.sex);
search_sex(L,x);
}
else
{
printf("请输入班级:\n");
scanf("%s",x.cla);
search_cla(L,x);
}
break;
case :printf("\n你选择了排序:\n\n");
printf("*********************************************\n");
printf("*按<语文成绩>排序请按1,按<数学成绩>排序请按2*\n");
printf("*按<英语成绩>排序请按3,按<平均成绩>排序请按4*\n");
printf("* 按<学号>排序请按5,按<姓名>排序请按6 *\n");
printf("* 按<总分>排序请按7 *\n");
printf("*********************************************\n");
scanf("%d",&s);
if(s==)
{
sort_Chinese(L);
printf("按语文成绩排序:\n");
printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
for(i=;i<=L->len;i++)
{
printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
}
}
if(s==)
{
sort_math(L);
printf("按数学成绩排序:\n");
printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
for(i=;i<=L->len;i++)
{
printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
}
}
if(s==)
{
sort_Eng(L);
printf("按英语成绩排序:\n");
printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
for(i=;i<=L->len;i++)
{
printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
}
}
if(s==)
{
sort_average(L);
printf("按平均分排序:\n");
printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
for(i=;i<=L->len;i++)
{
printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
}
}
if(s==)
{
sort_no(L);
printf("按学号排序:\n");
printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
for(i=;i<=L->len;i++)
{
printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
}
}
if(s==)
{
sort_name(L);
printf("按姓名排序:\n");
printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
for(i=;i<=L->len;i++)
{
printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
}
}
if(s==)
{
sort_sum(L);
printf("按总分排序:\n");
printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
for(i=;i<=L->len;i++)
{
printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average);
}
}
break;
case :printf("\n你选择了插入学生信息:\n\n");
printf("请输入要插入的学生的学号、姓名、性别、班级、语数英成绩:\n");
printf("学号 姓名 性别 班级 语文 数学 英语\n");
scanf("%d%s%s%s%d%d%d",&x.no,x.name,x.sex,x.cla,&x.Chinese,&x.math,&x.Eng);
x.sum=x.Chinese+x.math+x.Eng;
x.average=(int)x.sum/;
insert(L,x);
break;
case :printf("\n你选择了删除学生信息:\n\n");
printf("请输入要删除的学生的学号:");
scanf("%d",&x.no);
k=search_no(L,x);
if(k==)
{
printf("学号有误!!\n");
}
else
{
printf("学号 姓名 性别 班级 语文 数学 英语 总分 平均分\n");
printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[k].no,L->data[k].name,L->data[k].sex,L->data[k].cla,L->data[k].Chinese,L->data[k].math,L->data[k].Eng,L->data[k].sum,L->data[k].average);
printf("\n是否要删除此学生的信息?\n");
printf("(是请按1,否请按0)\n");
printf("你的选择是:");
scanf("%d",&s);
if(s==)
{
del(L,x);
}
}
break;
}
}while(sel!=);
printf("谢谢使用此系统!!");
return ;
}

大学生成绩管理系统(C语言)的更多相关文章

  1. 学生成绩管理系统-JAVA语言测试

     首先右键新建一个工程project 选择Java Project,单击next下一步 project命名为“学生成绩管理系统”,点击finish继续 右键src文件夹新建Package包,取名为te ...

  2. 学生成绩管理系统——C语言实现

    一.功能实现: 0.浏览学生信息 1.输入学生信息 2.增加学生信息 3.修改学生信息 4.删除学生信息 5.按学号查询 6.按班级查询 7.按姓名查询 8.按课堂名称查询 9.按总分高低排序 10. ...

  3. 【学生成绩管理系统】 大二c语言作业

    几年前写的了,只能在命令行窗口运行,虽然比较挫,还是有一定参考价值... #include <cstdio> #include <conio.h> #include <i ...

  4. C语言课程设计(成绩管理系统)

    C语言课程设计(成绩管理系统) 翻到了大学写的C语言课程设计,缅怀一下 内容: 增加学生成绩 查询学生成绩 删除 按照学生成绩进行排序 等 #include <stdio.h> #incl ...

  5. C语言项目:学生成绩管理系统

    C语言项目:学生成绩管理系统    1.数据结构:学生信息:学号.姓名.年龄.性别.3课成绩    2.功能:   (1)增加学生记录    (2)  删除学生记录    (3)  查找学生信息(学号 ...

  6. C语言实现---学生成绩管理系统

    C语言实现了学生成绩管理系统,可以进行学生成绩的增加,删除,更新,查询,计算和展示. 完整代码如下: #include<stdio.h> #include<stdlib.h> ...

  7. 第一次写C语言小程序,可以初步理解学生成绩管理系统的概念

    1 成绩管理系统概述 1.1  管理信息系统的概念  管理信息系统(Management Information Systems,简称MIS),是一个不断发展的新型学科,MIS的定义随着科技的进步也在 ...

  8. C/C++编程笔记:C语言成绩管理系统!链式结构的管理系统源码分享

    最近很多同学因为学校的要求,需要完成自己的那个C语言课程设计,于是就有很多人私信或者加我私聊我,问的最多的还是<学生成绩管理系统>,其实当你项目写多了你就会发现:其实各类的管理系统都离不开 ...

  9. C语言利用结构体数组实现学生成绩管理系统

    这篇文章主要为大家详细介绍了C语言利用结构体数组实现学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 要求: 某班有最多不超过30人(具体人数由键盘输入) ...

随机推荐

  1. Unable to execute dex: Multiple dex files define Lcom/gl

    [2015-04-16 17:42:04 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/gl/softphon ...

  2. D3.js 力导向图的制作

    力导向图中每一个节点都受到力的作用而运动,这种是一种非常绚丽的图表. 力导向图(Force-Directed Graph),是绘图的一种算法.在二维或三维空间里配置节点,节点之间用线连接,称为连线. ...

  3. 测试分页查询出数据并分文件导出[java工程]

    package cn.shiyanjun.test; import java.util.ArrayList; import java.util.List; public class ExcelTest ...

  4. TCP拥塞控制

    TCP必须使用端到端拥塞控制而不是使网络辅助的拥塞控制,因为IP层不向端系统提供显式的网络拥塞反馈.TCP采用的方法是让每一个发送方根据所感知到的网络拥塞程度来限制其能向连接发送流量的速率. 几个相关 ...

  5. listview某一项不可点击

    listview 整个都不可操作 listview.setEnable(false); listview 某一项不可点击 重写 isEnable()方法,在方法内部判断position,不可点击的项 ...

  6. 如何组织较大项目的MVC文件夹结构

    现在还用不到,拷贝下来备用,原文链接 2016 年 9 月 第 31 卷,第 9 期 ASP.NET Core - ASP.NET Core MVC 的功能切分 作者 Steve Smith | 20 ...

  7. unity入门笔记

    我于2010年4月1日硕士毕业加入完美时空, 至今5年整.刚刚从一家公司的微端(就是端游技术+页游思想, 具体点就是c++开发, directX渲染, 资源采取所需才会下载)项目的前端主程职位离职, ...

  8. NOIP 2014 普及组 T4 子矩阵

    [题意] 已知:n,m,r,c,a[i][j] (1 ≤ n ≤ 16, 1 ≤ m ≤ 16,1 ≤ a[i][j] ≤1000,1 ≤ r ≤ n, 1 ≤ c ≤ m) 条件:矩阵的分值定义为每 ...

  9. 73条日常Linux shell命令汇总,总有一条你需要!

    转载: 73条日常Linux shell命令汇总,总有一条你需要! 1.检查远程端口是否对bash开放: echo >/dev/tcp/8.8.8.8/53 && echo &q ...

  10. 小而美的js程序

    1.获取数字数组最小值的索引 function _getMinKey(arr) { var a = arr[0]; var b = 0; for (var k in arr) { if (arr[k] ...