学员成绩管理的简单C实现
来源:互联网 发布:mac chrome 页面调试 编辑:程序博客网 时间:2024/04/27 00:11
/*
============================================================================
Name : sms.c
Author : liky
Version :
Copyright : 2.0
Description :
每个学员包括3门课的成绩,包括学号、姓名、语文、数学、英语成绩
以及三门课程的平均成绩,成绩按照从大到小排序,增加一条记录时,
新加入的记录必须保持成绩表原有的顺序,删除时也一样
============================================================================
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
struct student {
char no[10];
char name[10];
double score[3];
double avg;
};
struct student stu[50];
int stuNum = 0; // 当前的学生总人数
/*
* 录入一个新的学生信息
* 返回一个student结构
*/
struct student input();
/*
* 将一个学生插入到数组的末尾
* 如果插入成功,返回1,否则返回0
*/
int add(struct student);
/*
* 插入一个学员的信息,要求插入后的学员信息依然有序
* 如果插入成功,返回1,否则返回0
*/
int insert();
/*
* 显示学员信息
*/
void show();
/*
* 对学员信息进行排序
*/
void sort();
/*
* 删除学员信息
*/
int del();
void main() {
char select;
char resume;
printf("==================================================================/n");
printf("* */n");
printf("* 学生成绩管理系统 */n");
printf("* */n");
printf("* 作者:liky 版本1.0 版权2008 */n");
printf("* */n");
printf("==================================================================/n");
printf(" /n");
MENU:
do {
fflush(stdin);
printf("/n/n请选择: 1添加 2插入 3删除 4打印 5退出/n");
scanf("%c", &select);
switch (select)
{
case '1':// 循环添加学生成绩
do {
add(input());
fflush(stdin);
printf("是否继续录入学生信息: (Y继续,其他则退出)");
scanf("%c", &resume);
} while (resume == 'y' || resume == 'Y');
goto MENU;
case '2':
insert();
goto MENU;
case '3':
del();
goto MENU;
case '4':
show();
goto MENU;
case '5':
exit(1);
}
} while (select<49 || select>52);
}
struct student input() {
struct student stu;
char *subject[3] = {"语文","数学","英语"};
int i;
double tmp;
double sum = 0;
fflush(stdin);
printf("/n/n请输入学号:");
gets(stu.no);
fflush(stdin);
printf("请输入姓名:");
gets(stu.name);
fflush(stdin);
for (i=0; i<3;) {
printf("请输入%s成绩:", subject[i]);
scanf("%lf", &tmp);
if (tmp > 0 && tmp <=100) {
stu.score[i] = tmp;
sum += tmp;
i++;
}
}
stu.avg = sum/3;
return stu;
}
int add(struct student s) {
if (stuNum >= 50) {
printf("学生人数已满,无法再添加了!/n");
return 0;
}
else { // 要判断结构是否为空
stuNum ++;
stu[stuNum-1] = s;
return 1;
}
}
int insert() //插入函数
{
int isOk = 0;
int i, j;
struct student tmp;
printf("/n请输入要插入的学员信息");
tmp=input();
for (i=0; i<stuNum; i++) {
if (stu[i].avg < tmp.avg) {
isOk = 1;
stuNum++;
break;
}
}
for (j=stuNum; j>=i; j--) {
stu[j+1]=stu[j];
}
stu[i]=tmp;
return isOk;
}
void show() {
int i;
// 在输出之前,先排序
sort();
for (i=0; i<stuNum; i++) {
printf("学生%d的信息如下:/n", i+1);
printf("学号: %s/t", stu[i].no);
printf("姓名: %s/t", stu[i].name);
printf("语文: %.1f/t", stu[i].score[0]);
printf("数学: %.1f/t", stu[i].score[1]);
printf("英语: %.1f/n", stu[i].score[2]);
printf("平均: %.1f/n", stu[i].avg);
}
}
void sort() {
struct student tmp;
int i;
int j;
for (i=0; i<stuNum; i++) {
for (j=0; j<stuNum- 1 -i; j++) {
if (stu[j].avg < stu[j+1].avg) {
tmp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=tmp;
}
}
}
}
int del () {
char stuNo[10];
int i,j;
int isOk = 0;
fflush(stdin);
printf("请输入要删除的学生学号: ");
gets(stuNo);
for (i=0; i<stuNum; i++) {
if (!strcmp(stu[i].no, stuNo)) {
stuNum--;
isOk = 1;
break;
}
}
for (j=i; j<stuNum; j++) {
stu[j]=stu[j+1];
}
if (isOk) {
printf("删除学号为%s的学生成绩成功!/n", stuNo);
}
else {
printf("学号为%s的学生成绩不存在!/n", stuNo);
}
return isOk;
}
- 学员成绩管理的简单C实现
- Dialplan 手写的简单学员成绩电话查询系统
- c 实现学生成绩管理
- 学生成绩管理C实现
- 实现接收三个班级的各四名学员的成绩信息,然后计算每个班级学员的平均分
- java实现学员管理系统
- Android简单的打电话程序的实现_学员原创
- 简单成绩管理
- C#--WinForm修改模块--实现学员信息的修改
- 用JOptionPane类是实现一个简单的学生成绩管理
- c语言成绩管理
- 【C++】MFC 创建对话框,实现对“学生课程成绩”的管理
- 例程 【C++】MFC 创建对话框,实现对“学生课程成绩”的管理
- 我的C/C++之路-010课(结构体使用的简单实例(学生成绩管理))
- SQL学习笔记:简单的VC成绩管理源码
- 北大青鸟S1的C语言项目(学员管理系统)
- C#-WinForm-实现学员对象修改
- [C语言]学生成绩管理
- 求职奇遇记2
- 漫议代码风格中的tab和space
- 页面级别的代码重用
- HTML页面提交处理原理
- 动态查询,动态生成cursor或者动态执行SQL的DML操作
- 学员成绩管理的简单C实现
- 浅谈适配器不走索引路
- AIX下安装C和C++环境
- Hibernate的主键生成方式
- 台湾签证
- 汇编语言超浓缩教程
- 安装AIX中文环境
- 一些C学习的资料[精]
- 不得不写的第一篇