C语言练手自己编写学生成绩管理系统
#include<stdio.h>
#include<stdlib.h>
/*定义学生结构体*/
struct Student
{
char ID[];
char Name[];
float Mark1;
float Mark2;
float Mark3;
float Avarage;
}; /*声明学生数组及学生数量*/
struct Student students[];
int num=; /*计算平均成绩*/
float Avg(struct Student stu)
{
return (stu.Mark1+stu.Mark2+stu.Mark3)/;
}
/*根据学号寻找数组下标*/
int GetIndexByStudentId(char id[])
{
int i;
for(i=;i<num;i++)
{
if(strcmp(students[i].ID,id)==)
{
return i;
}
}
return -;
}
/*根据姓名寻找数组下标*/
int GetIndexByStudentName(char name[])
{
int i;
for(i=;i<num;i++)
{
if(strcmp(students[i].Name,name)==)
{
return i;
}
}
return -;
} /*SHowStudent*/
int ShowStudentInfo()
{
int i;
IO_ReadInfo(); printf("%10s%10s%10s%10s%10s%10s\n","学号","姓名","成绩1","成绩2","成绩3","平均分");
printf("-----------------------------------------------------------\n"); for(i=;i<=num;i++)
{
students[i].Avarage=Avg(students[i]);
printf("%10s%10s%10.2f%10.2f%10.2f%10.2f\n",students[i].ID,students[i].Name,students[i].Mark1,students[i].Mark2,
students[i].Mark3,students[i].Avarage);
}
return ;
}
int ShowStudentInfo1()
{
int i;
IO_ReadInfo(); printf("%10s%10s%10s%10s%10s%10s\n","学号","姓名","成绩1","成绩2","成绩3","平均分");
printf("-----------------------------------------------------------\n"); for(i=;i<=num;i++)
{
students[i].Avarage=Avg(students[i]);
printf("%10s%10s%10.2f%10.2f%10.2f%10.2f\n",students[i].ID,students[i].Name,students[i].Mark1,students[i].Mark2,
students[i].Mark3,students[i].Avarage);
}
system("pause");
printMenu();
printf("%d\n",userChoice());
}
/*增加学生记录*/
int addStudent()
{
while()
{
printf("请输入学号:");
scanf("%s",&students[num].ID);
printf("请输入姓名:");
scanf("%s",&students[num].Name);
printf("请输入成绩1:");
scanf("%f",&students[num].Mark1);
printf("请输入成绩2:");
scanf("%f",&students[num].Mark2);
printf("请输入成绩3:");
scanf("%f",&students[num].Mark3);
ShowStudentInfo();
IO_WriteInfo();
num++;
getchar();
printf("是否继续?y/n");
if(getchar()=='n')
{ printMenu();
printf("%d\n",userChoice());
break;
}
}
return ;
}
/*将信息写入文件*/
int IO_WriteInfo()
{
int i;
FILE *fp;
fp=fopen("C:\\12.txt","wb");
fwrite(&num,sizeof(int),,fp);
for(i=;i<=num;i++)
{
fwrite(&students[i],sizeof(struct Student),,fp);
}
fclose(fp);
}
/*将文件信息读出*/
int IO_ReadInfo()
{
int i;
FILE *fp;
fp=fopen("C:\\12.txt","wb");
fread(&num,sizeof(int),,fp);
for(i=;i<=num;i++)
{
fread(&students[i],sizeof(struct Student),,fp);
}
fclose(fp);
}
int main()
{
printMenu(); printf("%d\n",userChoice()); system("pause"); }
//菜单打印
int printMenu()
{
printf("欢迎使用学生成绩管理系统!\n");
printf("1.增加学生记录\n");
printf("2.修改学生记录\n");
printf("3.删除学生记录\n");
printf("4.查询学生记录\n");
printf("5.退出\n");
return ;
}
//接收用户输入选择
int userChoice()
{
int choice;
printf("请输入选择《1-5》:");
scanf("%d",&choice);
switch(choice)
{
case :
addStudent();
case :
return ;
case :
return ;
case :
ShowStudentInfo1();
case :
exit();
}
}
废话不多写,一步一步来。
第一步,要确定自己的需求,打印出需求。
int main()
{
printf("欢迎使用学生成绩管理系统!\n");
printf("1.增加学生记录\n");
printf("2.修改学生记录\n");
printf("3.删除学生记录\n");
printf("4.查询学生记录\n");
printf("5.退出\n");
system("pause");
}
第二步,将菜单打印写一个函数。
int main()
{
printMenu();
system("pause");
}
//菜单打印
int printMenu()
{
printf("欢迎使用学生成绩管理系统!\n");
printf("1.增加学生记录\n");
printf("2.修改学生记录\n");
printf("3.删除学生记录\n");
printf("4.查询学生记录\n");
printf("5.退出\n");
return ;
}
第三步,接收用户输入的选择,并测试
int main()
{
printMenu();
printf("%d\n",userChoice());
system("pause"); }
//菜单打印
int printMenu()
{
printf("欢迎使用学生成绩管理系统!\n");
printf("1.增加学生记录\n");
printf("2.修改学生记录\n");
printf("3.删除学生记录\n");
printf("4.查询学生记录\n");
printf("5.退出\n");
return ;
}
//接收用户输入选择
int userChoice()
{
int choice;
printf("请输入选择《1-6》:");
scanf("%d",&choice);
switch(choice)
{
case :
return ;
case :
return ;
case :
return ;
case :
return ;
case :
return ; }
}
第4步,定义结构体变量Student并插入学生信息打印测试。
#include<stdio.h> /*定义学生结构体*/
struct Student
{
char ID[];
char Name[];
float Mark1;
float Mark2;
float Mark3;
float Avarage;
}; /*声明学生数组及学生数量*/
struct Student students[];
int num=0;
/*增加学生记录*/
int addStudent()
{ printf("请输入学号:");
scanf("%s",&students[num].ID);
printf("请输入姓名:");
scanf("%s",&students[num].Name);
printf("请输入成绩1:");
scanf("%f",&students[num].Mark1);
printf("请输入成绩2:");
scanf("%f",&students[num].Mark2);
printf("请输入成绩3:");
scanf("%f",&students[num].Mark3);
printf("学号:%s,姓名:%s,成绩1:%0.2f,成绩2:%0.2f,成绩3:%0.2f",
students[num].ID,students[num].Name,students[num].Mark1,students[num].Mark2,students[num].Mark3);
num++;
return ;
} int main()
{
printMenu();
printf("%d\n",userChoice());
system("pause"); }
//菜单打印
int printMenu()
{
printf("欢迎使用学生成绩管理系统!\n");
printf("1.增加学生记录\n");
printf("2.修改学生记录\n");
printf("3.删除学生记录\n");
printf("4.查询学生记录\n");
printf("5.退出\n");
return ;
}
//接收用户输入选择
int userChoice()
{
int choice;
printf("请输入选择《1-5》:");
scanf("%d",&choice);
switch(choice)
{
case :
addStudent();
case :
return ;
case :
return ;
case :
return ;
case :
return ;
}
}
第五步计算平均成绩,将数据读写到文件。
C语言练手自己编写学生成绩管理系统的更多相关文章
- 《C语言编写 学生成绩管理系统》
/* (程序头部凝视開始) * 程序的版权和版本号声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名: 学生成绩管理 ...
- 第一次写C语言小程序,可以初步理解学生成绩管理系统的概念
1 成绩管理系统概述 1.1 管理信息系统的概念 管理信息系统(Management Information Systems,简称MIS),是一个不断发展的新型学科,MIS的定义随着科技的进步也在 ...
- C语言项目:学生成绩管理系统
C语言项目:学生成绩管理系统 1.数据结构:学生信息:学号.姓名.年龄.性别.3课成绩 2.功能: (1)增加学生记录 (2) 删除学生记录 (3) 查找学生信息(学号 ...
- 【学生成绩管理系统】 大二c语言作业
几年前写的了,只能在命令行窗口运行,虽然比较挫,还是有一定参考价值... #include <cstdio> #include <conio.h> #include <i ...
- C语言实现---学生成绩管理系统
C语言实现了学生成绩管理系统,可以进行学生成绩的增加,删除,更新,查询,计算和展示. 完整代码如下: #include<stdio.h> #include<stdlib.h> ...
- C语言利用结构体数组实现学生成绩管理系统
这篇文章主要为大家详细介绍了C语言利用结构体数组实现学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 要求: 某班有最多不超过30人(具体人数由键盘输入) ...
- 《C语言 学生成绩管理系统》
/* (盯着先拔头筹程序) * 该计划的版权声明和版本号 * Copyright (c) 2011, 烟台大学计算机学院学生的学校 * All rights reserved. * 文件名: 学生成绩 ...
- [项目记录] 用c语言完成的一个学生成绩管理系统
一.要求: 学生成绩管理系统 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入).使用链表编程实现如下菜单驱动的学生成绩管理系统. 从文件读入每个学生个人信 ...
- C语言学生成绩管理系统(简易版)
#include<stdio.h> #include<stdlib.h> #include<string.h> int readstudents(struct st ...
随机推荐
- Java 解析 lnk 快捷方式文件的方法(转)
package file.extendsion; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.F ...
- php中国的垃圾问题
header这条线加,这是解决中国乱码的问题. 版权声明:本文博主原创文章,博客,未经同意不得转载.
- Android开发学习总结——Android开发的一些相关概念(转)
一.什么是3G.4G 1995年问世的第一代模拟制式手机(1G)只能进行语音通话. 1996到1997年出现的第二代GSM.CDMA等数字制式手机(2G)便增加了接收数据的功能 3G指的是第三代移 ...
- HDU - 5186 - zhx's submissions (精密塔尔苏斯)
zhx's submissions Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- cocos2dx怎样设置ios和Android横屏竖屏的几种方法
cocos2d-x编译到ios上.默认是横屏的,若要改为http://竖屏.不同的ios版本号.方法也会不同 在ios7上或许我们设置好了横竖屏.但到了ios6上或许会变化.以下白白给大家分享一下我的 ...
- SharePoint 2013 禁用搜索服务
原文:SharePoint 2013 禁用搜索服务 前言,在SharePoint2013中,对于硬件需求的提升,让我们虚机里安装总是一筹莫展,尤其开启了搜索服务以后,对于内存的消耗就更加严重,尤其对于 ...
- testbench中将外部数据引入输出的方法(转载)
在进行HDL的仿真测试时,除了用较为直观的波形仿真图像以外,通过编写测试文件testbench进行仿真并将仿真结果保存在对应的文件,显得尤为重要.文件的操作主要用到读和写两种操作. 1. 读操作 读操 ...
- Android IPC通信和AIDL技术应用
首先我们了解一下 IPC和AIDL IPC:进程间通信 AIDL:Android Interface Definition Language,即Android接口定义语言. 为什么使用: Androi ...
- iOS6和iOS7适应代码(6) —— NSLocalizedString
我们的应用程序都需要国际化,字符串的重要组成部分.一般来说.我们是通过一个string资源文件来达到这个目的,我们需要支持多国语言,有多少次把这个文档本地化.需要使用的代码NSLocalizedStr ...
- ASP.NET验证控件
在此过程中房间的收费制度时,.为了验证文本框是否为空.用户存在.合法等等.我们都要单独写代码.学习了ASP.NET的验证控件,省了非常多事. ASP.NET能够轻松实现对用户输入的验证. 让我们好好回 ...