c语言管理系统

牛~~

/*引用库函数*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>/*定义结构体数组*/
typedef struct
{char num[12];       /*学号*/char name[20];      /*姓名*/char sex[2];        /*性别*/int score[3];       /*成绩*/float avg;          /*平均分*/int sum;            /*总成绩*/
}Student;Student studentAll[80]; /*结构体数组*/
int student_number = 0; /*总人数*/
/*菜单函数*/
int menu_select()
{int check_number;do{system("cls");  /*运行前清屏clear screen,在stdlib.h中*/printf("\t************学生成绩管理系统*************\n"); /*菜单选择*/printf("\t*| 1. 添加学生信息                      *\n");printf("\t*| 2. 显示学生信息                      *\n");printf("\t*| 3. 按学号排序                        *\n");printf("\t*| 4. 按总成绩排序                      *\n");printf("\t*| 5. 查找单个学生                      *\n");printf("\t*| 6. 删除指定学生                      *\n");printf("\t*| 7. 修改学生信息                      *\n"); printf("\t*| 8. 查看各门课程的成绩情况            *\n");printf("\t*| 9. 待定功能                          *\n");printf("\t*| 0. 保存退出                          *\n");printf("\t*****************************************\n");printf("请输入选择(0-9):");scanf("%d",&check_number);              /*读入选择*/}while(check_number<0||check_number>9);return(check_number);                   /*返回选择*/
}//以下的student都是形式参数,真正的数组是在全局变量里定义的studentAll数组/*输入若干条记录*/
void Input(Student student[])
{int i=0,j;char flag,clear[10];                        /*clear[10]为清除多余的数据所用*/char studentNum[12];                        //暂存某学生学号//判断是否已经存在相同学生的学号while(flag!='n'&&flag!='N')             //判断flag是不是n/N,以此判断是否继续输入学生信息{printf("请输入学生学号:   ");scanf("%s",studentNum);while(strcmp(student[i].num,studentNum)!=0&&i<student_number){ i++;                            /*查找判断*/}//查找到学生,无法增加学生信息,返回主函数if(i<student_number)printf("已有相同学号的学生,请重新输入\n");//如果没有查找到学生,即可增加学生信息else { if(i==student_number) {memset(student[i].num, 0, sizeof(student[i].num));//字符串清空strcpy(student[i].num,studentNum);printf("学生姓名:");scanf("%s",student[student_number].name);printf("学生性别:");scanf("%s",student[student_number].sex);            printf("c语言成绩:");scanf("%d",&student[student_number].score[0]);printf("数据结构成绩:");scanf("%d",&student[student_number].score[1]);printf("数据库成绩:");scanf("%d",&student[student_number].score[2]);student[student_number].sum=0;for(j=0;j<3;j++)student[student_number].sum+=student[student_number].score[j];student[student_number].avg = (float)student[student_number].sum/3;//printf("%.2f\n",student[student_number].avg);gets(clear);                        //*清除多余的输入printf("此学生信息录入完毕,是否继续?(Y/N)");scanf("%c",&flag);          //输入判断student_number++;//总人数加1i=0;}}       }}/*显示所有记录*/
void Display(Student student[])
{int i;printf("共有%d名同学\n",student_number);printf("----------------------------------------------------------------------------------------------------------\n");printf("学生学号\t学生姓名\t学生性别\tc语言成绩\t数据结构成绩\t数据库成绩\t平均成绩\t总成绩\n");printf("----------------------------------------------------------------------------------------------------------\n");for(i=0;i<student_number;i++){printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);}system("pause");}/*按学号排序*/
void Sort_by_num(Student student[])
{ int i,j;for(i=0;i<student_number-1;i++){for(j=0;j<student_number-1-i;j++){if(strcmp(student[j].num,student[j+1].num)){Student t;t=student[j];student[j]=student[j+1];student[j+1]=t;}}}}/*按总成绩排序*/
void Sort_by_sum(Student student[])
{ int i,j;for(i=0;i<student_number-1;i++){for(j=0;j<student_number-1-i;j++){if(student[j].sum<student[j+1].sum){Student t;t=student[j];student[j]=student[j+1];student[j+1]=t;}}}}/*按姓名查找,删除一条记录*/
void Delete_a_record(Student student[])
{char studentName[20];int i=0;printf("请输入要删除记录的姓名");scanf("%s",studentName);while(strcmp(student[i].name,studentName)!=0&&i<student_number){i++;                            /*查找判断*/}int t=i;if(i<student_number){int j=student_number-1;for(;j>i;i++){student[i]=student[i+1];}student_number--;}if(t==student_number){printf("没有此人,请重新输入");}
}/*按姓名查找并显示一个记录*/
void Query_a_record(Student student[])
{char studentName[20];int i=0;printf("请输入要查找记录的姓名");scanf("%s",studentName);while(strcmp(student[i].name,studentName)!=0&&i<student_number){i++;                            /*查找判断*/}if(i<student_number){printf("------------------------------------------------------------------------------------------------------------------------\n");printf("学生学号\t学生姓名\t学生性别\tc语言成绩\t数据结构成绩\t数据库成绩\t平均成绩\t总成绩\n");printf("------------------------------------------------------------------------------------------------------------------------\n");printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);}if(i==student_number){printf("没有此人,请重新输入");}   }
/*修改学生信息*/
void modifyStudentinformation(Student student[])
{char studentName[20];int i=0;printf("请输入要修改记录的姓名");scanf("%s",studentName);while(strcmp(student[i].name,studentName)!=0&&i<student_number){i++;                            /*查找判断*/}if(i<student_number){printf("修改前的记录:");printf("------------------------------------------------------------------------------------------------------------------------\n");printf("学生学号\t学生姓名\t学生性别\tc语言成绩\t数据结构成绩\t数据库成绩\t平均成绩\t总成绩\n");printf("------------------------------------------------------------------------------------------------------------------------\n");printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum); printf("\n学生学号:");scanf("%s",student[i].num);printf("学生姓名:");scanf("%s",student[i].name);printf("学生性别:");scanf("%s",student[i].sex);         printf("c语言成绩:");scanf("%d",&student[i].score[0]);printf("数据结构成绩:");scanf("%d",&student[i].score[1]);printf("数据库成绩:");scanf("%d",&student[i].score[2]);for(int j=0;j<3;j++)student[i].sum+=student[i].score[j];student[i].avg = (float)student[i].sum/3;printf("\n修改后的记录:\n");printf("------------------------------------------------------------------------------------------------------------------------\n");printf("学生学号\t学生姓名\t学生性别\tc语言成绩\t数据结构成绩\t数据库成绩\t平均成绩\t总成绩\n");printf("------------------------------------------------------------------------------------------------------------------------\n");printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);}if(i==student_number){printf("没有此人,请重新输入");}   }/*查看各门课程的成绩情况*/
void showClass(Student student[])
{ char studentName[20];int i=0;printf("请输入要查看各门课程成绩的学生的姓名");scanf("%s",studentName);while(strcmp(student[i].name,studentName)!=0&&i<student_number){i++;                            /*查找判断*/}if(i<student_number){printf("***********\n");printf("c语言成绩:%d\n",student[i].score[0]);printf("***********\n\n");printf("**************\n");printf("数据结构成绩:%d\n",student[i].score[1]);printf("**************\n\n");printf("**************\n");printf("数据库成绩:%d\n",student[i].score[2]);printf("**************\n");}if(i==student_number){printf("没有此人,请重新输入");}
}/*从文件中读入数据*/
void AddfromText(Student student[])
{ int i=0;int number = 0;FILE *fp;                                                           /*定义文件指针*/if((fp=fopen("D:\\student.txt","rb"))==NULL)                /*打开二进制文件,如果不存在则创建*/{ fp=fopen("D:\\student.txt","rb") ;}fscanf(fp,"%d",&student_number);                                    /*读入总记录量*/while(i<student_number)                                             /*循环读入数据*/{fscanf(fp,"%s%s%s%d%d%d%f%d",student[i].num,student[i].name,student[i].sex,&student[i].score[0],&student[i].score[1],&student[i].score[2],&student[i].avg,&student[i].sum);i++;}fclose(fp); }
/*将所有记录写入文件*/
WritetoText(Student student[])
{FILE *fp;if((fp=fopen("D:\\student.txt","wb"))==NULL){printf("error");}else{fprintf(fp,"%d",student_number);for(int i=0;i<student_number;i++){fprintf(fp,"\t%s\t%s\t%s\t%d\t%d\t%d\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);}fclose(fp);}
}/*主函数*/
int main()
{AddfromText(studentAll);for(;;){switch(menu_select())                                           /*选择判断*/{case 1:printf("插入学生信息\n");                             /*输入若干条记录*/Input(studentAll);break;case 2:printf("显示记录\n");                               /*显示所有记录*/Display(studentAll);break;case 3:printf("按学号排序\n");Sort_by_num(studentAll);                                    /*按学号排序*/printf("按学号排序成功!\n");Display(studentAll);system("pause");break;case 4:printf("按总成绩排序\n");Sort_by_sum(studentAll);                                    /*按总成绩排序*/printf("按总成绩排序成功!\n");Display(studentAll);system("pause");break;case 5:printf("查找单个学生\n");Query_a_record(studentAll);                                 /*按姓名查找学生*/system("pause");break;case 6:printf("删除指定学生\n");Delete_a_record(studentAll);                                /*按姓名查找,删除一条记录*/system("pause");break;case 7:printf("修改学生信息\n");modifyStudentinformation(studentAll);                               /*查看学生成绩情况*/system("pause");break;case 8:printf("查看各门课程的成绩情况\n");showClass(studentAll);                                      /*查看各门课程的成绩情况*/system("pause");break;case 9:printf("待定功能\n");printf("功能描述");system("pause");break;case 0:WritetoText(studentAll);printf("已保存,退出系统\n");       /*结束程序*/system("pause");//exit(0);}}
} 

靓仔点赞

数组实现c语言学生成绩管理系统相关推荐

  1. 用C语言学生成绩数据库排序功能设计,[c语言学生成绩管理系统]C语言学生成绩管理系统实验报告...

    篇一 : C语言学生成绩管理系统实验报告 实 验 四:结构体(6学时) 实验目的: 1.更加灵活的使用数组作为函数参数: 2.初步掌握开发一个小型实用系统的基本方法: 3.初步掌握书写程序设计开发文档 ...

  2. c语言成绩管理系统报告书,C语言学生成绩管理系统实验报告

    <C语言学生成绩管理系统实验报告>由会员分享,可在线阅读,更多相关<C语言学生成绩管理系统实验报告(22页珍藏版)>请在人人文库网上搜索. 1.学生成绩管理系统实验报告实验名称 ...

  3. C语言 学生成绩管理系统 带登录界面

    C语言 学生成绩管理系统 带登录界面 C语言课程设计 思路 部分展示 代码片段 C语言课程设计 先上要求: 思路 为了方便简单,直接利用结构体数组来存储学生学生,最后根据功能编写函数即可. 部分展示 ...

  4. c语言学生成绩管理系统(增、删、查、改、排序、分析优秀及格率等)

    复制时运行出错请看这里:c语言学生成绩管理系统 添加公众号回复 学管 免费获取源代码 代做可私聊 c语言学生成绩管理系统(增.删.查.改.排序.分析优秀及格率等)详细内容 一.功能描述 实现学生基本信 ...

  5. c语言按给定成绩查询,C语言学生成绩管理系统(简易版)

    #include #include #include int readstudents(struct students stu[]); //读取学生信息 int readsexcode(struct ...

  6. C语言学生成绩管理系统(课程设计报告书)

    今天再跟大家分享一份课程设计报告:C语言学生成绩管理系统源码 程序设计组成框图: #include<stdio.h> #include<conio.h> #include< ...

  7. C语言学生成绩管理系统源代码

    分享:C语言学生成绩管理系统设计 <C语言程序设计>实训报告 点击查看 ----> C语言学生成绩管理系统(课程设计报告书) 扫描下方公众号,发送 成绩系统 4个字,获取下载源码. ...

  8. c语言成绩管理系统教程,C语言学生成绩管理系统教程.doc

    C语言学生成绩管理系统教程 实训报告 题 目: 学生成绩管理系统院 系: 专 业: 姓 名: 学 号: 指导教师: 日 期: 目录 TOC \o "1-3" \h \z \u HY ...

  9. c语言学生成绩管理系统课设作业,C语言课程设计——学生成绩管理系统

    摘 要 学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段.但一直以来人们使用传统人工的方式 ...

  10. C语言系统程序总体框图,c语言学生成绩管理系统(含源代码)精要.doc

    C 语言程序设计作业 一 设计项目:学生成绩管理系统 二 总体设计: 1 程序设计组成框图: 2:模块功能说明: 1 输入功能:输入学生姓名学号及成绩. 2 查看功能:输出姓名学号及各科成绩. 3 查 ...

最新文章

  1. Altiris 7.1 插件
  2. 计算机显示时区怎么更改,电脑如何设置显示多时区时间?
  3. 安装 | cmd(命令提示符)窗口下使用conda安装TensorFlow
  4. OpenEjb使用笔记--让Tomcat可以部署EJB
  5. WordPress 常用快捷键列表
  6. 推荐asp.net调试工具:miniASPNETServer
  7. linux学习笔记:shell变量
  8. linux命令 创建目录权限,linux创建用户并设置目录权限
  9. [Canvas]空战游戏进阶 增加己方子弹管理类
  10. cocos lua 溶解_Cocos2d-x的lua官方加密的解密方法
  11. 哈勃分析系统解密:中招敲诈木马不用交赎金
  12. 中国首台云电脑全面解析——天霆云计算董事长谈天霆专访
  13. 毕业季的你准备好面试了吗?(下)
  14. 进击的Android之manifests
  15. Arnold渲染器适合什么样的电脑配置
  16. Windows远程代码执行漏洞(CVE-2020-16898) 高危漏洞加固指南
  17. Axure绘制流程图
  18. 一步一步了解区块链技术
  19. (十)Java工具类StringUtils字符串拼接(join)详解
  20. 功能测试技术——决策表法

热门文章

  1. c语言plc编程软件下载,罗克韦尔plc编程软件下载-2017罗克韦尔plc编程软件V21.00 官方最新版 - 极光下载站...
  2. 台达JAVA_wplsoft下载(台达plc编程软件)
  3. SVN安装不成功卸载不干净后如何重装SVN和右键显示SVN
  4. cop2000计算机组成原理,COP2000计算机组成原理实验系统.pdf
  5. C++:n个清屏函数(缓冲清屏不闪屏)
  6. 迅捷word转换成pdf转换器 4.1 官方版
  7. Axure8.0 安装 汉化 简单使用
  8. 计算机代码编程知识,编程基础知识
  9. 2021新款外卖返利系统源码,美团/饿了么返利三级分销源码外卖返利源码下载
  10. linux两台电脑直连传数据,两台MAC电脑通过局域网快速传输文件