#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. [LeetCode] Regular Expression Matching [6]

    称号: Implement regular expression matching with support for '.' and '*'. '.' Matches any single chara ...

  2. 行政歌节 &#183; 萧谱1

    4之前听 陈越 的<绿野仙踪> 版权声明:本文博客原创文章,博客,未经同意,不得转载.

  3. SqlServer中存储过程中将Exec的执行结果赋值给变量输出

    原文 SqlServer中存储过程中将Exec的执行结果赋值给变量输出 背景: 遇到这样一种情况:动态向存储过程中传入表名和表的某些属性(这里用到的是主键ID),然后利用这两个变量查出一条数据的某些字 ...

  4. poj2524

    说来惭愧啊..现在才会并查集.我竟然给我妈妈讲明白并查集怎么回事了- - #define _CRT_SECURE_NO_WARNINGS #include <iostream> using ...

  5. Effective C++ -- 继承和面向对象设计

    32.确保你的public继承了模is-a关系 public继承意味着is-a关系(里氏替换原则),一切适用于基类也适用于派生类. 矩形继承正方形问题: 可实施与矩形的操作无法实施与正方形 在编程领域 ...

  6. poj 1975 Median Weight Bead(传递闭包 Floyd)

    链接:poj 1975 题意:n个珠子,给定它们之间的重量关系.按重量排序.求确定肯定不排在中间的珠子的个数 分析:由于n为奇数.中间为(n+1)/2,对于某个珠子.若有至少有(n+1)/2个珠子比它 ...

  7. shuffle一个简单的过程叙述性说明

    shuffle它是在map和reduce过程之间.我们看看在这个过程中的步骤,了解在这个问题上不深,有可能是一个错误.忘记修正 1. map map出口key,value,里的context.writ ...

  8. React-Native基础教程

    React-Native牛刀小试仿京东砍啊砍砍到你手软 React-Native基础教程 *React-Native基础篇作者git *React-Native官方文档 *Demo 几个月前faceb ...

  9. 将android界面背景设置为黑色

    屏幕背景设置为黑色的几种方式: 新建项目时候 第二次next之后(不同sdk版本号可能不同),Background Color项点击可选. 开公布局文件,选择视图查看 就是下边二个选项卡中的第一个(G ...

  10. Suse发生了错误Access denied for user &#39;&#39;@&#39;localhost&#39; to&amp;

    好久没实用MySQL了,上次由于装了Banq的论坛系统.在用MySQL Administrator进去的时候居然提示mysql error number 1045 access denied for ...