简易学生管理系统(C语言)
首先我们在做一个管理系统之前要了解这个学生管理系统需要哪些功能,如:简单的增,删,改,查,即:录入成绩,查询成绩,删除成绩,修改成绩,插入成绩,这几个是基本要包括的,当然我们也可以加上排序,统计学生人数,这些功能。
当清楚需要哪些功能之后我们就可以写系统的界面了。
效果图如下:
printf("\t\t\t---------------STUDENT---------------\t\t\t\n");printf("\t\t\t0.退出\t\t\t\n");printf("\t\t\t1.录入成绩\t\t\t\n");printf("\t\t\t2.查询成绩\t\t\t\n"); printf("\t\t\t3.删除成绩\t\t\t\n");printf("\t\t\t4.修改成绩\t\t\t\n");printf("\t\t\t5.插入成绩\t\t\t\n");printf("\t\t\t6.排序\t\t\t\n");printf("\t\t\t7.统计学生人数\t\t\t\n");printf("\t\t\t-------------------------------------\t\t\t\n"); printf("\t\t\t选择(0---7)\t\t\t");
接着我们就可以加入switch函数进行功能选择
定义整型变量choice
int choice ;scanf("%d",&choice );switch(choice ){case 0:exit(0); break;case 1: in();save();system("pause");system("cls");break;//录入 case 2: show();system("pause");system("cls");break;//查询 case 3: del();save();system("pause");system("cls");break;//删除 case 4: modify();system("pause");system("cls");break;//修改 case 5: insert();save();system("pause");system("cls");break;//插入 case 6: order();system("pause");system("cls");break;//排序 case 7: total();system("pause");system("cls");break;//统计 default:printf("\n输入错误,请输入0---7\n\n");system("pause");system("cls");break;}
定义一个Menu函数把上面两个结合起来,我们加一个while循环让这个这个菜单一直循环出现,而不是用一次就没了。
void Menu()//菜单{ while(1){printf("\t\t\t---------------STUDENT---------------\t\t\t\n");printf("\t\t\t0.退出\t\t\t\n");printf("\t\t\t1.录入成绩\t\t\t\n");printf("\t\t\t2.查询成绩\t\t\t\n"); printf("\t\t\t3.删除成绩\t\t\t\n");printf("\t\t\t4.修改成绩\t\t\t\n");printf("\t\t\t5.插入成绩\t\t\t\n");printf("\t\t\t6.排序\t\t\t\n");printf("\t\t\t7.统计学生人数\t\t\t\n");printf("\t\t\t-------------------------------------\t\t\t\n"); printf("\t\t\t选择(0---7)\t\t\t"); int chioce;scanf("%d",&chioce);switch(chioce){case 0:exit(0); break;case 1: in();save();system("pause");system("cls");break;//录入 case 2: show();system("pause");system("cls");break;//查询 case 3: del();save();system("pause");system("cls");break;//删除 case 4: modify();system("pause");system("cls");break;//修改 case 5: insert();save();system("pause");system("cls");break;//插入 case 6: order();system("pause");system("cls");break;//排序 case 7: total();system("pause");system("cls");break;//统计 default:printf("\n输入错误,请输入0---7\n\n");system("pause");system("cls");break;}}
}
写完菜单之后我们就要对“学生”这个数据进行分析
在这个系统中学生的信息要包含那些东西,举个例子:学号,姓名,选修课成绩,实验课成绩,必修课成绩,总成绩,平均成绩。然后根据这些写一个结构体(我写的是数组类型的结构体)
struct student
{char num[20];//学号 char name[20];//姓名 float elec;//选修课 float expe;//实验课 float requ;//必修课 float sum;//总成绩 'float ave;//平均成绩
}student[N];
接着我们开始写实现这个系统功能的函数
第一个就是成绩的录入
void in()//录入信息 {void save() ;int i,n;printf("输入录取学生的数量\n");scanf("%d", &n);for (i=1 ; i<=n; i++){ printf("请输入第%d位学生学号:\n",i);scanf("%s",student[i].num);printf("请输入第%d位学生姓名:\n", i );scanf("%s",student[i].name);printf("请输入第%d位学生选修课成绩:\n", i );scanf("%f",&student[i].elec);printf("请输入第%d位学生实验成绩:\n", i );scanf("%f", &student[i].expe);printf("请输入第%d位学生必修课成绩:\n", i );scanf("%f", &student[i].requ);student[i].sum=student[i].elec+student[i].expe+student[i].requ;student[i].ave=student[i].sum /3;count++;} printf("录入成功\n");}
第二个就是成绩的查询
void show() //查询 {int i;char xh[20]; printf("请输入要查询的学生学号:\n");getchar();gets(xh);for (i=0;i<N;i++) {if(strcmp(student[i].num,xh)==0)//对比两个字符串如果两者一样则进行if下面的的语句否则继续循环printf("\n学号:%-5s 姓名:%-5s 选修课成绩:%-5.1f 实验课成绩:%-5.1f 必修课成绩:%-5.1f 总分:%-5.1f 平均分:%-5.1f\n",student[i].num,student[i].name,student[i].elec,student[i].expe,student[i].requ,student[i].sum,student[i].ave);}}
第三个就是成绩的删除
void del()//删除
{void save() ;int j,a=0,k=count;char xh[25];printf("所要删除的学生学号为:\n");scanf("%s",xh);flush(stdin);//缓冲区for (j=0;j<count;j++){if (strcmp(student[j].num,xh)==0){for (j=a;j<count;j++)student[j]=student[j+1];count--;if (count<k)printf("删除成功\n");}a++;}if (j==count-1)printf("没有你所要删除的学生的信息\n");}
第四项,成绩的修改
步骤 1.先找到要修改的学生
2.选择修改的项目
3.更改总成绩和平均分
4.显示修改后的学生数据
void modify()//修改 { void save() ;int i,j,h;float score;char xh[20]; printf ("01.输入修改的学生的学号:\n") ;scanf("%s",xh);for(i=1;i<N;i++)if (strcmp(student[i].num,xh)==0)j=i;printf("请选择修改内容\n");printf("1.修改该学生的选修课成绩\n");printf("2.修改该学生的实验课成绩\n");printf("3.修改该学生的必修课成绩\n");scanf("%d",&h);switch (h) {case 1:printf("请输入该学生的选修课成绩\n");scanf("%f",&score);student[j].elec=score; break;case 2:printf("请输入该学生的实验课成绩\n");scanf("%f",&score);student[j].expe=score;break;case 3:printf("请输入该学生的必修课成绩\n");scanf("%f",&score);student[j].requ=score;break;default :printf("\n输入错误,请输入1---3\n\n"); break;} student[j].sum = student[j].elec+student[j].expe + student[j].requ;printf("修改后为:\n");printf("\n学号:%-5s 姓名:%-5s 选修课成绩:%-5.1f 实验课成绩:%-5.1f 必修课成绩:%-5.1f 总分:%-5.1f 平均分:%-5.1f\n",student[j].num,student[j].name,student[j].elec,student[j].expe,student[j].requ,student[j].sum,student[j].ave);printf("\n");printf("修改成功\n") ;}
第五项,成绩的插入
void insert ()//插入
{void save();int m, flag, i = count, j,k;printf("请输入待添加的学生人数:\n");scanf("%d", &m);if (m > 0){k=count+1;for(i=k;i<=count+m;i++) {flag = 1;while (flag!= 0){flag = 0;printf("请输入第%d位学生的学号:\n", i);getchar();gets(student[i].num);for (j = 0; j < i; j++){if (strcmp(student[i].num, student[j].num) == 0){printf("该学号已存在,请重新输入!\n");flag = 1;break;}}}printf("请输入第%d位学生姓名:\n", i );gets(student[i].name);printf("请输入第%d位学生选修课成绩:\n", i );scanf("%f",&student[i].elec);printf("请输入第%d位学生实验成绩:\n", i );scanf("%f", &student[i].expe);printf("请输入第%d位学生必修课成绩:\n", i );scanf("%f", &student[i].requ);student[i].sum=student[i].elec+student[i].expe+student[i].requ;student[i].ave=student[i].sum /3;}count+= m;printf("添加完成!\n");system("pause");}
}
第六项,排序
void order()//排序 { int i,j,m;for(j=1;j<=count-1;j++){ m=j;for(i=j+1;i<=count;i++){if(student[i].sum < student[m].sum){student[0]=student[i];student[i]=student[m];student[m]=student[0];}}}for(j=1;j<=count;j++){printf("\n学号:%-5s 姓名:%-5s 选修课成绩:%-5.1f 实验课成绩:%-5.1f 必修课成绩:%-5.1f 总分:%-5.1f 平均分:%-5.1f\n",student[j].num,student[j].name,student[j].elec,student[j].expe,student[j].requ,student[j].sum,student[j].ave);} }
第七项,统计学生人数
void total ()//统计
{printf("学生人数%d\n",count);
}
完整的代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 100
struct student
{char num[20];//学号 char name[20];//姓名 float elec;//选修课 float expe;//实验课 float requ;//必修课 float sum;//总成绩 'float ave;//平均成绩
}student[N];void Menu(); // 菜单
void in();//录入
void show() ;//查找
void order();//排序
void del(); //删除
void modify();//修改
void total ();//统计
void insert ();//插入
int count=0;//人数
void save();//保存
int main()
{Menu();return 0;
}void Menu()//菜单{ while(1){printf("\t\t\t---------------STUDENT---------------\t\t\t\n");printf("\t\t\t0.退出\t\t\t\n");printf("\t\t\t1.录入成绩\t\t\t\n");printf("\t\t\t2.查询成绩\t\t\t\n"); printf("\t\t\t3.删除成绩\t\t\t\n");printf("\t\t\t4.修改成绩\t\t\t\n");printf("\t\t\t5.插入成绩\t\t\t\n");printf("\t\t\t6.排序\t\t\t\n");printf("\t\t\t7.统计学生人数\t\t\t\n");printf("\t\t\t-------------------------------------\t\t\t\n"); printf("\t\t\t选择(0---7)\t\t\t"); int chioce;scanf("%d",&chioce);switch(chioce){case 0:exit(0); break;case 1: in();save();system("pause");system("cls");break;//录入 case 2: show();system("pause");system("cls");break;//查询 case 3: del();save();system("pause");system("cls");break;//删除 case 4: modify();system("pause");system("cls");break;//修改 case 5: insert();save();system("pause");system("cls");break;//插入 case 6: order();system("pause");system("cls");break;//排序 case 7: total();system("pause");system("cls");break;//统计 default:printf("\n输入错误,请输入0---7\n\n");system("pause");system("cls");break;}}
}void save() //保存
{FILE* fp;char filename[100];int i;printf("请输入要保存的文件名:\n");scanf("%s", filename);if ((fp = fopen(filename, "w")) == NULL){printf("打开文件失败!\n");exit(0);}for (i = 1; i<=count; i++){if (fwrite(&student[i], sizeof(struct student), 1, fp) != 1)printf("保存失败!\n");}printf("保存成功!\n");fclose(fp);
}void in()//录入信息 {void save() ;int i,n;printf("输入录取学生的数量\n");scanf("%d", &n);for (i=1 ; i<=n; i++){ printf("请输入第%d位学生学号:\n",i);scanf("%s",student[i].num);printf("请输入第%d位学生姓名:\n", i );scanf("%s",student[i].name);printf("请输入第%d位学生选修课成绩:\n", i );scanf("%f",&student[i].elec);printf("请输入第%d位学生实验成绩:\n", i );scanf("%f", &student[i].expe);printf("请输入第%d位学生必修课成绩:\n", i );scanf("%f", &student[i].requ);student[i].sum=student[i].elec+student[i].expe+student[i].requ;student[i].ave=student[i].sum /3;count++;} printf("录入成功\n");}void modify()//修改 { void save() ;int i,j,h;float score;char xh[20]; printf ("01.输入修改的学生的学号:\n") ;scanf("%s",xh);for(i=1;i<N;i++)if (strcmp(student[i].num,xh)==0)j=i;printf("请选择修改内容\n");printf("1.修改该学生的选修课成绩\n");printf("2.修改该学生的实验课成绩\n");printf("3.修改该学生的必修课成绩\n");scanf("%d",&h);switch (h) {case 1:printf("请输入该学生的选修课成绩\n");scanf("%f",&score);student[j].elec=score; break;case 2:printf("请输入该学生的实验课成绩\n");scanf("%f",&score);student[j].expe=score;break;case 3:printf("请输入该学生的必修课成绩\n");scanf("%f",&score);student[j].requ=score;break;default :printf("\n输入错误,请输入1---3\n\n"); break;} student[j].sum = student[j].elec+student[j].expe + student[j].requ;printf("修改后为:\n");printf("\n学号:%-5s 姓名:%-5s 选修课成绩:%-5.1f 实验课成绩:%-5.1f 必修课成绩:%-5.1f 总分:%-5.1f 平均分:%-5.1f\n",student[j].num,student[j].name,student[j].elec,student[j].expe,student[j].requ,student[j].sum,student[j].ave);printf("\n");printf("修改成功\n") ;}void show() //查询 {int i;char xh[20]; printf("请输入要查询的学生学号:\n");getchar();gets(xh);for (i=0;i<N;i++) {if(strcmp(student[i].num,xh)==0)printf("\n学号:%-5s 姓名:%-5s 选修课成绩:%-5.1f 实验课成绩:%-5.1f 必修课成绩:%-5.1f 总分:%-5.1f 平均分:%-5.1f\n",student[i].num,student[i].name,student[i].elec,student[i].expe,student[i].requ,student[i].sum,student[i].ave);}}void order()//排序 { int i,j,m;for(j=1;j<=count-1;j++){ m=j;for(i=j+1;i<=count;i++){if(student[i].sum < student[m].sum){student[0]=student[i];student[i]=student[m];student[m]=student[0];}}}for(j=1;j<=count;j++){printf("\n学号:%-5s 姓名:%-5s 选修课成绩:%-5.1f 实验课成绩:%-5.1f 必修课成绩:%-5.1f 总分:%-5.1f 平均分:%-5.1f\n",student[j].num,student[j].name,student[j].elec,student[j].expe,student[j].requ,student[j].sum,student[j].ave);} } void del()//删除
{void save() ;int j,a=0,k=count;char xh[25];printf("所要删除的学生学号为:\n");scanf("%s",xh);flush(stdin);for (j=0;j<count;j++){if (strcmp(student[j].num,xh)==0){for (j=a;j<count;j++)student[j]=student[j+1];count--;if (count<k)printf("删除成功\n");}a++;}if (j==count-1)printf("没有你所要删除的学生的信息\n");}void insert ()//插入
{void save();int m, flag, i = count, j,k;printf("请输入待添加的学生人数:\n");scanf("%d", &m);if (m > 0){k=count+1;for(i=k;i<=count+m;i++) {flag = 1;while (flag!= 0){flag = 0;printf("请输入第%d位学生的学号:\n", i);getchar();gets(student[i].num);for (j = 0; j < i; j++){if (strcmp(student[i].num, student[j].num) == 0){printf("该学号已存在,请重新输入!\n");flag = 1;break;}}}printf("请输入第%d位学生姓名:\n", i );gets(student[i].name);printf("请输入第%d位学生选修课成绩:\n", i );scanf("%f",&student[i].elec);printf("请输入第%d位学生实验成绩:\n", i );scanf("%f", &student[i].expe);printf("请输入第%d位学生必修课成绩:\n", i );scanf("%f", &student[i].requ);student[i].sum=student[i].elec+student[i].expe+student[i].requ;student[i].ave=student[i].sum /3;}count+= m;printf("添加完成!\n");system("pause");}
}
void total ()//统计
{printf("学生人数%d\n",count);
}
简易学生管理系统(C语言)相关推荐
- Java09-day09【ArrayList(概述、构造方法、常用方法、遍历)、简易学生管理系统】
java零基础入门到精通(2019版)[黑马程序员] 视频+资料:[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg 提取码:zjxs] &qu ...
- 学生管理系统——C语言版
文章目录 学生管理系统--C语言版 主函数 录入学生信息 删除学生信息 修改学生信息 查找学生信息 打印学生信息 保存学生信息 读取学生信息 求班级成绩的平均值 学生管理系统--C语言版 主函数 in ...
- 学生管理系统 C语言 动态链表 结构体 文件操作 设置密码 输入密码回显星号
C语言 学生管理系统代码 实现功能 功能:学生管理系统设计,每个学生信息作为一条记录,包括姓名.学号.专业. 性别.年龄. 电话.家庭住址.还可以继续拓展 系统要求实现以下功能: 1.输入功能: ...
- 制作基于springboot的简易学生管理系统(详细)
制作基于springboot的简易学生管理系统(详细) 基于书本与百度创作,内容简易,请多多指教( ̄▽ ̄)/ 设计一个简易学生管理系统 所需环境 创建一个springboot项目 设计数据库 配置Gr ...
- 南京邮电大学c语言程序设计平台,程序设计报告-南京邮电大学-学生管理系统-c语言.doc...
程序设计报告-南京邮电大学-学生管理系统-c语言.doc 程序设计报告 题 目: 学生信息管理系统 专 业 电子信息科学与技术 学 生 姓 名 孟祥熙 班 级 学 号 指 导 教 师 王蔚 指 导 单 ...
- 南京邮电大学c语言程序报告,程序设计报告南京邮电大学学生管理系统 c语言.doc...
程序设计报告南京邮电大学学生管理系统 c语言 程序设计报告 题 目: 学生信息管理系统 专 业 电子信息科学与技术 学 生 姓 名 孟祥熙 班 级 学 号 指 导 教 师 王蔚 指 导 单 位 南京邮 ...
- 学生管理系统c#语言代码,基于C#语言的学生管理系统的设计(ASP.NET2.0)
摘 要 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用.学生管理系统是学校管理中不可少的一部分.而基于B/S架构的学生管 ...
- c语言实现学生管理系统,C语言学生管理系统源代码
<C语言学生管理系统源代码>由会员分享,可在线阅读,更多相关<C语言学生管理系统源代码(12页珍藏版)>请在人人文库网上搜索. 1.C语言学生成绩管理系统源代码,保证能用#in ...
- C#简易学生管理系统
添加3个类,分别实现 IComparer接口,实现对Student类的三个字段的排序. 1.学生类:学号.姓名.年龄 2.请选择:1.添加学生信息.2.删除学生信息 2.查询学生信息. 3.重复的学号 ...
- GUI+Mysql 仿照水果超市实现简易学生管理系统
GUI+Mysql 仿照水果超市实现学生管理系统! **当我们学习完到GUI界面和JDBC的时候,就可以实现一些简单的小程序的. 下面是一个仿照水果超市实现学生管理系统的介绍,由一个主类实现.** 首 ...
最新文章
- 点滴积累【C#】---检验编号在本表中自动生成,与其他表无关
- android ios 7 双环,安卓机泪奔 库克嘲笑Android 7安装率不及iOS 10零头
- c语言运行时内存不够,浅析C语言运行时内存管理
- SQL Challenge ——快速找到1-100之间缺失的数
- linux中544进程,Linux基础--进程管理及其基本命令
- PHP7.2 redis
- 网络爬虫中的Unicode码解决[实例]
- 内置指令-cloak // 内置指令-once // 内置指令-pre
- python线性规划教程_python 利用cvxopt线性规划
- linux网络发包性能优化
- 蓝桥杯 ADV-210 算法提高 2-1屏幕打印
- 【代码源 Div1 - 102】#323. 最长因子链(dp)
- ASP.NET 实现PDF文件下载[转]
- CE教程 第八章 《注入++》
- [Extjs6]随记 store本地过滤数据显示
- 第12届蓝桥杯国赛真题剖析-2021年5月29日Scratch编程初中级组
- Mac配置LNMP开发环境全记录 一看就懂系列
- HTML5与CSS3基础教程学习笔记【第三章 基本HTML结构】
- B. Applejack and Storages(数学+STL的使用) Codeforces Round #662 (Div. 2)
- 数字藏品叠加元宇宙热潮,数字艺术会迎来怎样的发展