#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. JavaScript的"类"

    1. 基本创建“类”方式 var Class = function(){ var klass = function(){ this.init.apply(this, arguments); }; kl ...

  2. flask+gevent+gunicorn+nginx 初试

    1.安装flask pip install flask 2.安装gevent pip install gevent 3.安装gunicorn pip install gunicorn 版本信息例如以下 ...

  3. system strategies of Resources Deadlock

    In computer science, Deadlock is a naughty boy aroused by compete for resources. Even now,     there ...

  4. ZipDemo

    package swing.zip; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt. ...

  5. SPOJ 15. The Shortest Path 堆优化Dijsktra

    You are given a list of cities. Each direct connection between two cities has its transportation cos ...

  6. Cocos2d-x 2.2.3 Android配置

    今天总结出来的部署流程,已经成功把自己的项目编译到android真机上.省去了安装ndk等步骤 环境: win7 64位 1.导入项目到eclipse 2.导入libcocos2dx 样例:C:\co ...

  7. USACO maze1 BFS

    不写了很长的时间bfs该,很长一段时间的中间失误,当延期一次延伸成功的新节点的节点应该被标记为参观.否则,在某些情况下无限期延长队列. 输入一个小坑爹处理称号,能够进来当字符串被读取.然后用周围的墙上 ...

  8. .Net反编译实战

    原文:.Net反编译实战 当你面对一个已经部署好的网站,功能,性能都非常不给力的时候,你会怎么办? 当你尝试去了解这个网站业务逻辑,代码逻辑和数据库逻辑时却发现根本没有任何资料时你会怎么办? 当你准备 ...

  9. linux VIM基本命令

    linux VIM命令: vim 在命令行中输入vim,进入vim编辑器 Esc 退出i(插入)命令进行其他命令使用 :sh 进入shell命令行,运行完命令后ctrl+d退出又一次进入vim编辑继续 ...

  10. python 导入库问题

    最终解决如下面:我不知道有没有多余的空间 from django.conf import settings from sys import path path.extend(['/home/zoues ...