c语言学生管理系统(上)

大一上c语言学生管理系统*你好!这是你第一次使用c语言做完整的一个小程序,如果你想学习c语言不那么枯燥,可以仔细阅读这篇文章,了解一下c语言的基本语法知识。主要函数功能1.打印功能菜单2.录入学生信息。3.计算所以学生总分和平均分。4.根据学生分数由高到低输出学生信息。5.根据学生学号由小到大输出学生信息。6.输入学生学号查找该学生对应的信息。7.优秀、合…

大家好,又见面了,我是你们的朋友全栈君。


大一上c语言学生管理系统(上)

你好!如果这是你第一次使用 c语言做完整的一个简单小程序,以下内容包括每个功能函数。如果你想学习c语言不那么枯燥, 可以仔细阅读这篇文章,了解一下c语言的基本语法知识。
**

ps:个人主页有完整版代码

**

主要函数功能

1.打印功能菜单。
2. 录入学生信息。
3. 计算所以学生总分和平均分。
4. 根据学生分数由高到低输出学生信息。
5. 根据学生学号由小到大输出学生信息。
6. 输入学生学号查找该学生对应的信息。
7. 优秀、合格,不合格等所占百分比及人数。
8. 输出所有学生信息。
初始界面

学生信息结构体

学生信息 数据类型
姓名 字符串数组
学号 long
分数 int

##这是我们的主函数##
注:主函数的n是学生总人数,是随着录入学生信息函数的修改而变化的。

int main()
{ 

int n=0;
while(1)
{ 

void List();                              //输出列表
void Input(STU stu[],int *n);             //输入学生数据
void Sumandave(STU stu[],int n);          //和与平均值
void Hightolow(STU stu[],int n);          //分数由大到小
void Smalltolarge(STU stu[],int n);       //学号由小到大
void Search(STU stu[],int n);             //查找某个学生信息
void Percentage(STU stu[],int n);         //所占人数和百分比
void Outputinformation(STU stu[],int n);  //输出所以学生信息
system("cls");        //清屏
List();               //输出列表
char c=getch();       //头文件conio,按下某个字符时,函数自动读取,无需按回车.
switch(c)
{ 

case '1':
Input(&stu1,&n);
break;
case '2':
Sumandave(&stu1,n);
break;
case '3':
Hightolow(&stu1,n);
break;
case '4':
Smalltolarge(stu1,n);
break;
case '5':
Search(stu1,n);
break;
case '6':
Percentage(&stu1,n);
break;
case '7':
Outputinformation(&stu1,n);
break;
case '0':
exit(0);
break;                     //exit(0)退出程序
}
}

1、打印功能菜单函数

//输出列表
void List()
{ 

printf("*****************************************************************\t\t\t\n");
printf("*\t\t欢迎使用高校学生成绩管理系统ws版\t\t*\n");
printf("*\t\t\t 请选择功能\t\t\t\t*\n");
printf("*****************************************************************\t\t\t\n");
printf("*\t 1.Input record\t\t\t\t\t*\n");
printf("*\t 2.Caculate total and average socre of course\t\t*\n");
printf("*\t 3.Sort in descending older by score\t\t\t*\n");
printf("*\t 4.Sort in ascending older by number\t\t\t*\n");
printf("*\t 5.Search by number\t\t\t\t\t*\n");
printf("*\t 6.Statistic analysis\t\t\t\t\t*\n");
printf("*\t 7.List record\t\t\t\t\t\t*\n");
printf("*\t 0.Exit\t\t\t\t\t\t*\n");
printf("*****************************************************************\t\t\t\n");
}

2、录入学生信息函数

//输入n个学生信息
void Input(STU stu[],int *n)        //取n地址,及时更新人数数量,以便更新数据
{ 

int m;
static int i=0;
printf("请输入要录入的学生人数:");
scanf("%d",&m);
for(; i<m+*n; i++)
{ 

printf("请输入学生姓名:");
scanf("%s",stu[i].name);
printf("请输入学生学号:");
scanf("%ld",&stu[i].id);
printf("请输入学生分数:");
scanf("%d",&stu[i].score);
printf("***********************\n");
}
*n+=m;
printf("学生信息录入成功!!!\n");
system("pause");
}

3、计算所以学生总分和平均分函数

//计算总分和平均分
void Sumandave(STU stu[],int n)
{ 

int i,sum=0;
float ave;
for(i=0; stu[i].score; i++)
{ 

sum+=stu[i].score;
}
ave=(float)sum/n;
printf("%d名同学的sum:%d\n",i,sum);
printf("%d名同学的ave:%.2f\n",i,ave);
system("pause");
}

4、 根据学生分数由高到低输出学生信息函数

//分数由高到低排序
void Hightolow(STU stu[],int n)
{ 

char x[100];
int i,j;
long int t;
for(i=0; i<n-1; i++)
{ 

for(j=i; j<n; j++)
{ 

if(stu[i].score<stu[j].score)
{ 

t=stu[i].score;
stu[i].score=stu[j].score;
stu[j].score=t;
t=stu[i].id;
stu[i].id=stu[j].id;
stu[j].id=t;
strcpy(x,stu[i].name);
strcpy(stu[i].name,stu[j].name);
strcpy(stu[j].name,x);
}
}
}
printf("%d名同学分数由高到低:\n",n);
printf("姓名:");
for(int p=0; p<n; p++)
{ 

printf("%10s",stu[p].name);
}
printf("\n");
printf("分数:");
for(int p=0; p<n; p++)
{ 

printf("%10d",stu[p].score);
}
printf("\n");
printf("学号:");
for(int p=0; p<n; p++)
{ 

printf("%10ld",stu[p].id);
}
printf("\n");
system("pause");
}

5、 根据学生学号由小到大输出学生信息函数

//学号由小到大排序
void Smalltolarge(STU stu[],int n)
{ 

char x[100];
int i,j;
long int t;
for(i=0; i<n-1; i++)
{ 

for(j=i; j<n; j++)
{ 

if(stu[i].id>stu[j].id)
{ 

t=stu[i].score;
stu[i].score=stu[j].score;
stu[j].score=t;
t=stu[i].id;
stu[i].id=stu[j].id;
stu[j].id=t;
strcpy(x,stu[i].name);
strcpy(stu[i].name,stu[j].name);
strcpy(stu[j].name,x);
}
}
}
printf("%d名同学学号由低到高:\n",n);
printf("姓名:");
for(int p=0; p<n; p++)
{ 

printf("%10s",stu[p].name);
}
printf("\n");
printf("分数:");
for(int p=0; p<n; p++)
{ 

printf("%10d",stu[p].score);
}
printf("\n");
printf("学号:");
for(int p=0; p<n; p++)
{ 

printf("%10ld",stu[p].id);
}
printf("\n");
system("pause");
}

6、 输入学生学号查找该学生对应的信息函数

//输入学号查找学生输出对应信息
void Search(STU stu[],int n)
{ 

int i;
long int p;
printf("请输入要查找的学生学号:");
scanf("%ld",&p);
for(i=0; i<n; i++)
{ 

if(p==stu[i].id)
{ 

printf("该学生姓名:%s\n",stu[i].name);
printf("该学生学号:%d\n",stu[i].id);
printf("该学生成绩:%d",stu[i].score);
break;
}
}
if(i==n)
printf("Not found!\n");
printf("\n");
system("\npause");
}

7、 优秀、合格,不合格等所占百分比及人数函数

//每级别人数所占百分比
void Percentage(STU stu[],int n)
{ 

int m;
static int a[5]= { 
0},i=0;
float b[i];
for(; i<n; i++)           //找各级别所占人数
{ 

m=stu[i].score;
m/=10;
switch(m)              //计算各级别人数
{ 

case 10:
case  9:
a[4]++;
break;
case  8:
a[3]++;
break;
case  7:
a[2]++;
break;
case  6:
a[1]++;
break;
default:
a[0]++;
break;
}
}
printf("总人数为:%d人\n",n);                          //各级别人数百分比
printf("优秀人数为%d人。所占百分比为:%.2f%%\n",a[4],(float)100*a[4]/n);
printf("良好人数为%d人。所占百分比为:%.2f%%\n",a[3],(float)100*a[3]/n);
printf("中等人数为%d人。所占百分比为:%.2f%%\n",a[2],(float)100*a[2]/n);
printf("及格人数为%d人。所占百分比为:%.2f%%\n",a[1],(float)100*a[1]/n);
printf("不及格人数为%d人。所占百分比为:%.2f%%\n",a[0],(float)100*a[0]/n);  //%%打出%
system("pause");
}

8、 输出所有学生信息函数

//输出每个学生学号和成绩
void Outputinformation(STU stu[],int n)
{ 

int i;
for(i=0; i<n; i++)                 //输出n个学号和分数
{ 

printf("\n学生姓名:%s\n学号:%ld\n分数:%d\n****************",stu[i].name,stu[i].id,stu[i].score);
}
printf("\n");
system("pause");
}

**********************************************************************

希望可以对您有所帮助!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/127175.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • poj 3414 Pots (bfs+线索)

    poj 3414 Pots (bfs+线索)

  • lucene分词器中的Analyzer,TokenStream, Tokenizer, TokenFilter

    lucene分词器中的Analyzer,TokenStream, Tokenizer, TokenFilterTokenStream:分词器做好处理之后得到的一个流。这个流中存储了分词的各种信息,可以通过TokenStream有效的获取到分词单元。以下是把文件流转换成分词流(TokenStream)的过程首先,通过Tokenizer来进行分词,不同分词器有着不同的Tokenzier,Tokenzier分完词后,通过TokenFilter对已经分好词的数据进行过滤,比如停止词。过滤完之后,把所有的数据组合成一个TokenStream;

  • APP运营:盘点八款主流 APP 消息推送工具[通俗易懂]

    APP运营:盘点八款主流 APP 消息推送工具[通俗易懂]在APP日常运营中,基于营销以及推广的目的,我们需要对APP用户推送一些活动信息或重要资讯。常见的消息推送工具分为两种:1、即技术团队自行开发;2、第三方Push工具对于许多创业型公司而言,相对于自行开发,第三方消息推送工具在推送稳定性、精确覆盖性以及成本方面更具有优势,只需要下载并集成SDK就可以实现功能。本文中我们将盘点八款主流第三方APP消息推送工具,希望对大家在A…

  • 请自行检查是否安装VC9运行库??

    请自行检查是否安装VC9运行库??

    2021年10月29日
  • mysql常用的窗口函数_窗口函数和groupby一起用

    mysql常用的窗口函数_窗口函数和groupby一起用本博客转自:https://blog.csdn.net/weixin_34384915/article/details/87551597窗口函数(OLAP实时分析处理函数),可以一般聚合函数无法实现的高级操作。诸如排序、生成序列号等功能。目前DBMS逐步都完成了对窗口函数的支持,唯独MySql不支持(但是Mysql8开始支持了)。1.窗口函数语…

  • 计算机病毒的活性,计算机病毒的特性

    计算机病毒的活性,计算机病毒的特性计算机病毒一般具有以下特性:1.计算机病毒的程序性(可执行性)计算机病毒与其他合法程序一样,是一段可执行程序,但它不是一个完整的程序,而是寄生在其他可执行程序上,因此它享有一切程序所能得到的权力。在病毒运行时,与合法程序争夺系统的控制权。计算机病毒只有当它在计算机内得以运行时,才具有传染性和破坏性等活性。也就是说计算机CPU的控制权是关键问题。若计算机在正常程序控制下运行,而不运行带病毒的程序,…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号