#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语言练手自己编写学生成绩管理系统的更多相关文章

  1. 《C语言编写 学生成绩管理系统》

    /* (程序头部凝视開始) * 程序的版权和版本号声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名: 学生成绩管理 ...

  2. 第一次写C语言小程序,可以初步理解学生成绩管理系统的概念

    1 成绩管理系统概述 1.1  管理信息系统的概念  管理信息系统(Management Information Systems,简称MIS),是一个不断发展的新型学科,MIS的定义随着科技的进步也在 ...

  3. C语言项目:学生成绩管理系统

    C语言项目:学生成绩管理系统    1.数据结构:学生信息:学号.姓名.年龄.性别.3课成绩    2.功能:   (1)增加学生记录    (2)  删除学生记录    (3)  查找学生信息(学号 ...

  4. 【学生成绩管理系统】 大二c语言作业

    几年前写的了,只能在命令行窗口运行,虽然比较挫,还是有一定参考价值... #include <cstdio> #include <conio.h> #include <i ...

  5. C语言实现---学生成绩管理系统

    C语言实现了学生成绩管理系统,可以进行学生成绩的增加,删除,更新,查询,计算和展示. 完整代码如下: #include<stdio.h> #include<stdlib.h> ...

  6. C语言利用结构体数组实现学生成绩管理系统

    这篇文章主要为大家详细介绍了C语言利用结构体数组实现学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 要求: 某班有最多不超过30人(具体人数由键盘输入) ...

  7. 《C语言 学生成绩管理系统》

    /* (盯着先拔头筹程序) * 该计划的版权声明和版本号 * Copyright (c) 2011, 烟台大学计算机学院学生的学校 * All rights reserved. * 文件名: 学生成绩 ...

  8. [项目记录] 用c语言完成的一个学生成绩管理系统

    一.要求: 学生成绩管理系统 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入).使用链表编程实现如下菜单驱动的学生成绩管理系统. 从文件读入每个学生个人信 ...

  9. C语言学生成绩管理系统(简易版)

    #include<stdio.h> #include<stdlib.h> #include<string.h> int readstudents(struct st ...

随机推荐

  1. php 二维数组传递给 js 问题解决记录

    需求: php从数据库中读取到二维数组.传递到js中 实现步骤: php:json_encode  →   json  →  js:eval 即在php中使用json_encode()将php的二维数 ...

  2. CodeForces 482C Game with Strings

    意甲冠军: n一定长度m串  隐藏的字符串相等的概率  然后,你猜怎么着玩家隐藏的字符串  的询问字符串的一个位置  再不断的知道一些位置后  游戏者就能够确定藏起来的串是什么  问  游戏者的期望步 ...

  3. Quartz(GUI)图形界面程序----Quartz Web

    下载.设置和运行Quartz(GUI)图形界面程序----Quartz Web 一.获取Quartz Web程序(Quartz GUI).早期的 Quartz 框架开发者意识到一个 GUI 对于某类用 ...

  4. SIGPIPE并产生一个信号处理

    阅读TCP某物,知道server并关闭sockfd当写两次,会产生SIGPIPE信号,假如不治疗,默认将挂起server 弄个小样本试验: #include <unistd.h> #inc ...

  5. phpcmsv9更改fckeditor编者ueditor编辑

    于phpcmsv9文件夹中找到phpcms/libs/classes/form.class.php档 找到几行代码 <span style="font-size:18px;" ...

  6. android:GLSurfaceView绘制bitmap图片及glViewport调整的效果

    首先看一下GLSurfaceView是怎样绘制的.正如android开发文档中描写叙述的那样,我们须要new一个GLSurfaceView对象,然后设置一个实现了Renderer接口的对象,我们须要写 ...

  7. 【LeetCode从零单排】No15 3Sum

    称号 Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all ...

  8. SQL Server创建索引

    原文:SQL Server创建索引 什么是索引 拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K .为了加快查找的 ...

  9. NSIS:超级轻量皮肤SkinH

    原文 NSIS:超级轻量皮肤SkinH 这虽然是一个其他软件的皮肤控件,不过拿来用到NSIS上还是不错的.控件加皮肤文件只有100多K,可以说是比较难得了! 看一下效果:   代码示例: 01 #皮肤 ...

  10. IT薪酬

    新加坡IT薪酬 2014-06-12 12:51 by 圣殿骑士, 8856 阅读, 37 评论, 收藏, 编辑 很多朋友发邮件或留言问我关于新加坡IT薪酬的问题,由于前段时间比较忙,所以没有及时一一 ...