C语言课程设计-学生个人生活费管理系统

2023-10-28 10:40

本文主要是介绍C语言课程设计-学生个人生活费管理系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 需求分析:

1.设计题目:学生个人生活费管理系统

2.系统功能需求分析:一直以来,一些学生自己的经济管理能力较差,为了方便学生进行管理生活费,选择设计编辑此程序。

  • 概要设计:

系统总体设计框架

  • 详细设计:

主要阐述功能模块的算法设计思路

(1)strcut student结构体变量

(2)int main()主函数

先通过学生生活费录入录入信息,在用下面(3)学生生活费统计函数(4)学生生活费排序函数(5)学生生活费筛选函数等三个函数进行运行,得出结果。

  1. void count()统计函数
  2. void sort1() void sort2() void sort3()排序函数
  3. void find筛选函数
  • 调试分析过程描述:包括测试数据,测试分析结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等)

(1)测试数据:

学号

姓名

支出1

支出2

支出3

支出4

20202805

小媛

450

510

220

250

20202798

小佳

500

560

230

280

20202901

小周

540

580

210

200

程序代码

#include<stdio.h>
#define N 3
struct student
{char num[20];char name[20];float score[4];float sum;float aver; 
}stu[N];
int main()
{printf("******** made by lyy ********\n\n");printf("********学生个人生活费管理系统********\n\n\n");void count(struct student stu[]);//进行统计// void sort1(struct student stu[]);//进行排序:学号// void sort2(struct student stu[]);//进行排序:姓名//void sort3(struct student stu[]);//进行排序:总支出//void find(struct student stu[]);//进行查找发现// int i;float temp;for(i=0;i<N;i++){  printf("请输入第%d位的支出情况:\n",i+1);printf("学号:        ");gets(stu[i].num);//从哪里调用//printf("姓名:        ");gets(stu[i].name);printf("支出1(衣):        ");scanf("%f",&temp);stu[i].score[0]=temp;printf("支出2(食):        ");scanf("%f",&temp);stu[i].score[1]=temp;printf("支出3(住):        ");scanf("%f",&temp);stu[i].score[2]=temp;printf("支出4(行):        ");scanf("%f",&temp);getchar();stu[i].score[3]=temp;}printf("------统计消费记录------\n");count(stu);printf("\n");printf("------学号排序消费记录------\n");sort1(stu);printf("\n");printf("------姓名排序消费记录------\n");    sort2(stu);printf("\n");printf("------总和排序消费记录------\n");sort3(stu);printf("\n");find(stu);
}
void count(struct student stu[]) 
{  float sum;float aver; int i,j;  for(i=0;i<N;i++) {    sum=0;   for(j=0;j<4;j++) {sum+=stu[i].score[j];  aver=sum/4.0; stu[i].sum=sum; stu[i].aver=aver; }}  printf("学号            姓名      总支出      平均支出  \n");for(i=0;i<N;i++) printf("%-8s      %-10s      %.2f      %.2f \n",stu[i].num,stu[i].name,stu[i].sum,stu[i].aver); 
}  
void sort1(struct student stu[])  
{ int i,j,k; struct student temp;  for(i=0;i<N;i++){  k=i;  for(j=i+1;j<N;j++)  if(stu[k].num<stu[j].num)  k=j;   if(k!=i)   {    temp=stu[i];   stu[i]=stu[k];  stu[k]=temp;    } }  printf("学号          姓名      支出1      支出2      支出3      支出4      总支出      平均支出    \n");   for(i=0;i<N;i++)   printf("%-8s      %-10s       %.2f      %.2f      %.2f      %.2f      %.2f      %.2f \n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].aver); 
}   
void sort2(struct student stu[])  
{ int i,j,k; struct student temp;  for(i=0;i<N;i++){  k=i;  for(j=i+1;j<N;j++)  if(stu[k].name<stu[j].name)  k=j;   if(k!=i)   {    temp=stu[i];   stu[i]=stu[k];  stu[k]=temp;    } }  printf("学号          姓名      支出1      支出2      支出3      支出4      总支出      平均支出    \n");   for(i=0;i<N;i++)   printf("%-8s      %-10s      %.2f      %.2f      %.2f      %.2f      %.2f      %.2f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].aver); 
}  void sort3(struct student stu[])  
{ int i,j,k; struct student temp;  for(i=0;i<N;i++){  k=i;  for(j=i+1;j<N;j++)  if(stu[k].sum<stu[j].sum)  k=j;   if(k!=i)   {    temp=stu[i];   stu[i]=stu[k];  stu[k]=temp;    } }  printf("学号          姓名      支出1      支出2      支出3      支出4      总支出      平均支出    \n");   for(i=0;i<N;i++)   printf("%-8s      %-10s      %.2f      %.2f      %.2f      %.2f      %.2f      %.2f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].aver); 
}   
void find(struct student stu[]) {  int i,j,sum,flag=0;   printf("the student of two scores<230:\n"); for(i=0;i<N;i++) { sum=0; for(j=0;j<4;j++)  if(stu[i].score[j]<230)  sum++;    if(sum>=2) {      flag=1;  printf("%-8s%-10s\n",stu[i].num,stu[i].name);}}if(flag==0)  printf("  not exist!\n"); }

这篇关于C语言课程设计-学生个人生活费管理系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/292651

相关文章

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi

Go 语言中的 Struct Tag 的用法详解

《Go语言中的StructTag的用法详解》在Go语言中,结构体字段标签(StructTag)是一种用于给字段添加元信息(metadata)的机制,常用于序列化(如JSON、XML)、ORM映... 目录一、结构体标签的基本语法二、json:"token"的具体含义三、常见的标签格式变体四、使用示例五、使用

Go语言使用slices包轻松实现排序功能

《Go语言使用slices包轻松实现排序功能》在Go语言开发中,对数据进行排序是常见的需求,Go1.18版本引入的slices包提供了简洁高效的排序解决方案,支持内置类型和用户自定义类型的排序操作,本... 目录一、内置类型排序:字符串与整数的应用1. 字符串切片排序2. 整数切片排序二、检查切片排序状态:

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细