大学生成绩管理系统(C语言)
功能:成绩管理系统包含了学生的全部信息,每个学生是一个记录,包括学号,姓名,性别,班级,各科成绩(语数外)。
系统功能:
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语言)的更多相关文章
- 学生成绩管理系统-JAVA语言测试
首先右键新建一个工程project 选择Java Project,单击next下一步 project命名为“学生成绩管理系统”,点击finish继续 右键src文件夹新建Package包,取名为te ...
- 学生成绩管理系统——C语言实现
一.功能实现: 0.浏览学生信息 1.输入学生信息 2.增加学生信息 3.修改学生信息 4.删除学生信息 5.按学号查询 6.按班级查询 7.按姓名查询 8.按课堂名称查询 9.按总分高低排序 10. ...
- 【学生成绩管理系统】 大二c语言作业
几年前写的了,只能在命令行窗口运行,虽然比较挫,还是有一定参考价值... #include <cstdio> #include <conio.h> #include <i ...
- C语言课程设计(成绩管理系统)
C语言课程设计(成绩管理系统) 翻到了大学写的C语言课程设计,缅怀一下 内容: 增加学生成绩 查询学生成绩 删除 按照学生成绩进行排序 等 #include <stdio.h> #incl ...
- C语言项目:学生成绩管理系统
C语言项目:学生成绩管理系统 1.数据结构:学生信息:学号.姓名.年龄.性别.3课成绩 2.功能: (1)增加学生记录 (2) 删除学生记录 (3) 查找学生信息(学号 ...
- C语言实现---学生成绩管理系统
C语言实现了学生成绩管理系统,可以进行学生成绩的增加,删除,更新,查询,计算和展示. 完整代码如下: #include<stdio.h> #include<stdlib.h> ...
- 第一次写C语言小程序,可以初步理解学生成绩管理系统的概念
1 成绩管理系统概述 1.1 管理信息系统的概念 管理信息系统(Management Information Systems,简称MIS),是一个不断发展的新型学科,MIS的定义随着科技的进步也在 ...
- C/C++编程笔记:C语言成绩管理系统!链式结构的管理系统源码分享
最近很多同学因为学校的要求,需要完成自己的那个C语言课程设计,于是就有很多人私信或者加我私聊我,问的最多的还是<学生成绩管理系统>,其实当你项目写多了你就会发现:其实各类的管理系统都离不开 ...
- C语言利用结构体数组实现学生成绩管理系统
这篇文章主要为大家详细介绍了C语言利用结构体数组实现学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 要求: 某班有最多不超过30人(具体人数由键盘输入) ...
随机推荐
- 【服务器环境搭建-Centos】tmpfs,【转载】
转载来源:http://www.linuxidc.com/Linux/2013-12/93747.htm tmpfs介绍 tmpfs是一种虚拟内存文件系统,而不是块设备.是基于内存的文件系统,创建时不 ...
- TCP/IP 小知识
子网掩码有数百种,这里只介绍最常用的两种子网掩码,它们分别是“255.255.255.0”和“255.255.0.0”. 1.子网掩码是“255.255.255.0”的网络:最后面一个数字可以在0~2 ...
- PHP 递归的密码
http://www.cnsecer.com/4146.html 说实话 真的很炫 好像还是不好理解啊
- java 多线程3(线程安全)
需求:模拟三个窗口同时买票. 问题1:static 修饰num,只创建一份在内存中,要不就会创建3份. 问题2:线程安全问题.(代码重1的红色字体) 出现的原因:存在两个或两个以上的线程对象,而且线程 ...
- Python第三方常用工具、库、框架等
Python ImagingLibrary(PIL):它提供强大的图形处理的能力,并提供广泛的图形文件格式支持,该库能进行图形格式的转换.打印和显示.还能进行一些图形效果的处理,如图形的放大.缩小和旋 ...
- laravel实现第三方登录
https://github.com/laravel/socialite 这是官方的第三方登录包,支持很多国外的第三方登录 https://github.com/overtrue/socialite ...
- PHP 启动 cURL模块以及启动失败的解决方案
配置方法: php_curl.dll libeay32.dll ssleay32.dll php5ts.dll 复制到 %windir%/system32 以及php 目录的ext目录 下 并且找到p ...
- 【MYSQL】在脚本中使用变量-执行脚本时传参
在shell脚本里可以定义变量,并在执行脚本时任意传参. #!/bin/bashdb_name=$1 #将第一个值赋给db_name变量sql_name=$2 #将第二个值赋给sql_name变量my ...
- servlet和web容器之间的关系
Java是一种动态加载和运行的语言.也就是说当应用程序持有一个类的地址(CLASSPATH)和名称(包名和类名)的情况下,可以在程序运行期 间任何时候加载这个类,并创建和使用该类的对象.Servlet ...
- Combination Sum II [LeetCode]
Problem description: http://oj.leetcode.com/problems/combination-sum-ii/ Basic idea: use recursive a ...