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

   1、数据结构:学生信息:学号、姓名、年龄、性别、3课成绩
   2、功能:
  (1)增加学生记录
   (2)  删除学生记录
   (3)  查找学生信息(学号、姓名)
   (4)  修改学生信息
 (5)按照成绩排序、求平均值、最大值、最小值
   3、用户界面
   主菜单
   子菜单
   4、 批量生成测试数据
 
 //
// main.c
// Student System
//
// Created by ma c on 15/7/22.
// Copyright (c) 2015年. All rights reserved.
// 要求:编写一个学生成绩管理系统。 #include <stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 50
struct Student{
char name[];
int sno;
int age;
char gender;
float EnglishScore;
float mathScore;
float chineseScore;
}stu[N]={{"zhao",,,'M',,,},
{"zhao",,,'F',,,},
{"qian",,,'M',,,},
{"hong",,,'F',,,},
{"zhou",,,'M',,,},
{"feng",,,'F',,,},
{"wang",,,'M',,,},
{"chen",,,'F',,,},
{"geng",,,'F',,,},
{"tang",,,'M',,,}}; //添加数据
void add(struct Student stu[],int pos,int nums); //删除数据
void Delete_name(struct Student *stu,char Name[]);//(按姓名)
void Delete_sno(struct Student *stu,int Sno);//(按学号) //修改数据
void update(struct Student stu[],int Sno,int len); //查询子菜单
void menu(struct Student stu[],int m);
void search(struct Student stu[],int n,char Name[]);//按姓名查询
void search1(struct Student stu[],int n,int Num);//按学号查询
void sort(struct Student stu[],int n); //按总分高低排序
void print(struct Student stu[],int n);
void My_print_sum(struct Student stu[],int n);
void max_min(struct Student stu[],int n); //主菜单
void PrintScreen()
{
printf("------------------\n");
printf("** 1.增加学生记录 **\n");
printf("** 2.删除学生记录 **\n");
printf("** 3.查找学生记录 **\n");
printf("** 4.修改学生记录 **\n");
printf("** 0.退出管理系统 **\n");
printf("------------------\n");
} //删除子菜单
void deleteScreen()
{
printf("------------------\n");
printf("** 0.按姓名删除数据**\n");
printf("** 1.按学号删除数据**\n");
printf("** 2.返回主菜单 **\n");
printf("------------------\n");
printf("please select 0-1:");
} //查找子菜单
void seekScreen()
{
printf("-------------------------\n");
printf("****** 1.按姓名查找信息 *\n");
printf("****** 2.按学号查找信息 *\n");
printf("****** 3.查看所有学生成绩 *\n");
printf("****** 4.成绩名次排序(总分)*\n");
printf("****** 5.查看成绩最优最差 *\n");
printf("****** 6.返回主菜单 *\n");
printf("-------------------------\n");
printf("please you select 1-6:");
} //定义全局静态变量,统计目前结构体数组中的人数
static int count = ; //主函数
int main(int argc, const char * argv[])
{
int nums,temp;
int snos;
char names[];
while()
{
PrintScreen();
printf("please press enter_key continue!\n");
getchar();
printf("please select 0-4:");
char c = getchar();
switch(c)
{
case '':
printf("please student'numbers you want to add:");
scanf("%d",&nums);
add(stu,count,nums); //添加数据
getchar();
break;
case '':
deleteScreen();
scanf("%d",&temp);
switch(temp)
{
case :
printf("please input delete name:");
scanf("%s",names);;
Delete_name(stu,names); //删除数据(按姓名删除)
break;
case :
printf("please input delete sno:");
scanf("%d",&snos);
Delete_sno(stu,snos); //删除数据(按学号删除)
break;
case :
break;
}
getchar();
break;
case '':
menu(stu,count);//查找数据
getchar();
break;
case '':
printf("please input update sno:");
scanf("%d",&snos);
update(stu,snos,count); //修改数据
break;
case '':
exit(); //退出系统
default:
printf("data is illeagel!\n");
getchar();
break; //输入非法
}
}
return ;
} //添加数据
void add(struct Student stu[],int pos,int nums)//开始位置、添加人数
{
for(int i=pos;i<pos+nums;i++)
{
printf("please input name:");
scanf("%s",stu[i].name);
int flag = ,sno;
while(flag)
{
printf("please input sno:");
scanf("%d",&sno);
for(int j=;j<pos;j++)
{
if(stu[j].sno==sno)
{
printf("sno is exist!\n");
break;
}
else
{
flag = ;
}
}
stu[i].sno = sno;
}
printf("please input age:");
scanf("%d",&stu[i].age);
printf("please input gender:(f/m or F/M)");
getchar();
scanf("%c",&stu[i].gender);
printf("please input EnglishScore:");
scanf("%f",&stu[i].EnglishScore);
printf("please input mathScore:");
scanf("%f",&stu[i].mathScore);
printf("please input ChineseScore:");
scanf("%f",&stu[i].chineseScore);
printf("学生信息添加成功!\n");
}
count = count + nums;
} //按学号删除
void Delete_sno(struct Student *stu,int Sno)
{
if(count==)
{
printf("成员已为空!\n");
return;
}
int flag=;
for(int i=;i<count;i++)
{
if((stu+i)->sno==Sno)
{
for(int j=i;j<count;j++)
{
*(stu+j)=*(stu+j+);
}
printf("\n");
printf("学号为%d的学生已被删除\n",Sno);
printf("\n");
flag=;
count = count-;
break;
}
}
if(flag==)
printf("学号%d不存在.\n",Sno);
} //按姓名删除
void Delete_name(struct Student *stu,char Name[])
{
if(count==)
{
printf("成员已为空!\n");
return;
}
int flag=;
int n=count;
for(int i=;i<n;i++)
{
if(strcmp((stu+i-flag)->name,Name)==)
{
for(int j=i-flag;j<count;j++)
{
*(stu+j)=*(stu+j+);
}
printf("\n");
printf("学生:%s 已被删除.\n",Name);
printf("\n");
flag=flag+;
count =count -;
}
}
if(flag==)
printf("学生:%s 不存在.\n",Name);
} //修改数据
void update(struct Student stu[],int sno,int len)
{
char cs,cs1,cs2,cs3;
char p[];
int grade,i;
for(i=; i<len; i++)
{
if(sno==stu[i].sno)
{
printf("please ask update name?(y/n):");
getchar();
cs = getchar();
if(cs == 'y')
{
printf("please input a new name:");
scanf("%s",p);
getchar();
strcpy(stu[i].name,p);
printf("update is succeed!\n");
} printf("please ask update EnglishScore?(y/n):");
cs1 = getchar();
if(cs1 == 'y')
{
printf("please input a new grade:");
scanf("%d",&grade);
stu[i].EnglishScore = grade;
printf("update is succeed!\n");
} printf("please ask update mathScore?(y/n):");
getchar();
cs2 = getchar();
if(cs2 == 'y')
{
printf("please input a new grade:");
scanf("%d",&grade);
stu[i].mathScore = grade;
printf("update is succeed!\n");
} printf("please ask update chineseScore?(y/n):");
getchar();
cs3 = getchar();
if(cs3 == 'y')
{
printf("please input a new grade:");
scanf("%d",&grade);
stu[i].chineseScore = grade;
printf("update is succeed!\n");
break;
}
else
{
getchar();
break;
}
}
else if(i==len-)
{
printf("error,don't have the sno!");
break;
}
else
{
continue;
}
}
} //查询数据
void menu(struct Student stu[],int m)
{
int logel = ;
while(logel)
{
seekScreen();
int n;
scanf("%d",&n);
char name[];
int num;
switch(n)
{
case :
printf("请输入同学的姓名: ");
scanf("%s",name);
search(stu,count,name);
break;
case :
printf("\n请输入同学的学号: ");
scanf("%d",&num);
search1(stu,count,num);
break;
case :
print(stu,count);
break;
case :
sort(stu,count);
print(stu,count);
break;
case :
max_min(stu,count);
break;
case :
logel = ;
break;
default:
logel = ;
printf("输入数字有误!\n");
break;
}
}
}
void search(struct Student stu[],int n,char Name[])
{
char* p= Name;
int flag = ;
for(int i=;i<n;i++)
{
if(strcmp(stu[i].name,p)==)
{
flag = ;
My_print_sum(stu,i);
}
}
if(flag==)
{
printf("the name is not exist!\n");
}
}
void search1(struct Student stu[],int n,int Num)
{
int flag = ;
for(int i=;i<n;i++)
{
if(Num==stu[i].sno)
{
flag = ;
My_print_sum(stu,i);
}
}
if(flag==)
{
printf("the sno is not exist!\n");
}
}
void sort(struct Student stu[],int n)
{
float sum[N];
for(int i=;i<n;i++)
{
sum[i]=stu[i].EnglishScore+stu[i].mathScore+stu[i].chineseScore;
}
for(int i=;i<n-;i++)
{
for(int j=;j<n--i;j++)
{
if(sum[j]<sum[j+])
{
float temp1 = sum[j];
sum[j] = sum[j+];
sum[j+] = temp1; struct Student temp;
temp=stu[j];
stu[j]=stu[j+];
stu[j+]=temp;
}
}
}
}
void max_min(struct Student stu[],int n)
{
sort(stu,n); printf("成绩最优的同学:");
My_print_sum(stu,); printf("成绩最差的同学:");
My_print_sum(stu,n-);
} void print(struct Student stu[],int n)
{
for(int i=;i<n;i++)
{
My_print_sum(stu,i);
}
} void My_print_sum(struct Student stu[],int n)
{
printf("\n姓名:%s,学号:%d,年龄:%d,性别:%c,英语:%.2f,数学:%.2f,语文: %.2f,总分:%.2f\n",
stu[n].name,stu[n].sno,stu[n].age,stu[n].gender,
stu[n].EnglishScore,stu[n].mathScore,stu[n].chineseScore,(stu[n].EnglishScore+stu[n].mathScore+stu[n].chineseScore));
}

C语言项目:学生成绩管理系统的更多相关文章

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

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

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

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

  3. C语言实现—学生成绩管理系统(Linux下运行)

    开发环境:Linux 开发语言:C 相关文件下载: 码云:https://gitee.com/ikaros-521/c_project/tree/master/%E5%AD%A6%E7%94%9F%E ...

  4. 使用C++名单在文档处理和学生成绩管理系统相结合

    对于学生成绩管理系统,我并不陌生,几乎学习C人的语言.做项目会想到学生成绩管理系统,我也不例外.在研究中的一段时间C语言之后,还用C语言到学生管理系统,然后做几个链接.计数,这个系统是以前的系统上的改 ...

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

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

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

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

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

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

  8. Java项目:学生成绩管理系统(二)

    学生成绩管理系统(二):项目介绍 一.设计要求: 1.1 简单的图形界面登录功能. 1.2 对数据库的的信息的查询功能. 1.3 对数据库的的信息的修改功能. 1.4 对数据库的的信息的删除功能. 1 ...

  9. Java项目:学生成绩管理系统(一)

    学生成绩管理系统(一) 项目名称:学生成绩管理系统 项目需求分析(Need 需求): (1)该系统的用户分为教师和学生.教师的功能有:管理某一学生或课程的信息以及成绩,包括增.删.查.报表打印等:学生 ...

随机推荐

  1. python和redis简单交互

    python和redis简单交互 1.安装redis模块 pip3 install redis 2.redis模块简单使用: # /usr/bin/env python3 import redis c ...

  2. thinkphp调整框架核心目录think的位置

    thinkphp的核心目录即框架文件可以放在项目之外的目录,这点手册上有提到,放在项目之外的地方可以方便其他项目共用一个框架文件. 在入口文件的index.php中,在导入框架目录这一行,可以直接修改 ...

  3. POJ - 3111 K Best 0-1分数规划 二分

    K Best Time Limit: 8000MS   Memory Limit: 65536K Total Submissions: 12812   Accepted: 3290 Case Time ...

  4. android 消息机制,handler机制,messageQueue,looper

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha handler  就是 处理器 .  用来处理消息, 发送消息. handler   就 ...

  5. 【动态规划+Floyd】OpenJudge3368

    OpenJudge上刷水都不会了……这题居然写了一个半小时…… [题目大意] 诸葛亮要征服N城市.然而,City-X在击败City-2,City-3……City-x-1后击败.关羽,张飞,赵云,每个人 ...

  6. SQL SERVER中获取表间主外键关系

    sql server 2008中的主外键关系获取方式: 转自:http://www.cnblogs.com/ke10/archive/2012/06/11/2544655.html SELECT OB ...

  7. webwork或Struts配置网站根路径的默认页面办法

    参考资料:http://www.iteye.com/problems/24028 查阅好多资料,关于webwork或Struts处理默认页面的方式,能否像spring MVC那样直接指定默认访问页面. ...

  8. SQL Server中执行正则表达式

    总体方案:写function,再执行update语句. 一.查询函数 -- ============================================= -- Author: <l ...

  9. C#高级编程9-第1章.NET体系结构

    C#与NET的关系 C#编写的所有代码必须使用.NET FrameWork运行 C#是一种语言,但它本身不是.NET的一部分 C#一些特性,.NET不支持,.NET一些特性,C#不支持 公共语言运行库 ...

  10. Qt 4.7.2移植到ARM教程

    Qt的移植包括步骤如下: 1.下载并安装VMware WorkStation 12(最好比较高级的版本,早期的版本共享目录在虚拟机里可能显 示不了). 2.下载ubuntu 14.0.4(最好是lts ...