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

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

#include

#include

#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

{

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

{

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

{

if((stu+i)->sno==Sno)

{

for(int j=i;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

{

if(strcmp((stu+i-flag)->name,Name)==)

{

for(int j=i-flag;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

{

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

{

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

{

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

{

sum[i]=stu[i].EnglishScore+stu[i].mathScore+stu[i].chineseScore;

}

for(int i=;i

{

for(int j=;j

{

if(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

{

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语言实现---学生成绩管理系统

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

IL接口和类的属性

上一篇文章学习了IL的入门,接下来我们再通过两个例子来了解下类的属性.构造函数以及接口的使用 一.类的属性.构造函数 1.先看下我们要构建的类的C#代码,然后再进行IL的实现,示例代码如下: [Ser ...

mysql中使用 where 1=1和 0=1 的作用

操作mysql的时候,经常使用where语句进行查询.当where语句不存在的时候,经常在后面加一个where 1=1 where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可 ...

记Ubuntu开机黑屏及解决过程

之前遇到一次Ubuntu因为失误卸载了xinit.xserver的原因,导致开机黑屏无法进入系统,实际上当时是第一次遇到这种情况,因此花了点时间自己摸索,事后想来解决方案还是比较简单的,从目前的观点来 ...

OpenFlow Switch学习笔记(七)——Matching Fields

Matching Fields in_port=port Matches OpenFlow port port dl_vlan=vlan Matches IEEE 802.1q Virtual LAN ...

Winform 打开下载的文件

private void OpenFile(string filename) { ProcessStartInfo sInfo = new ProcessStartInfo(); sInfo.Wind ...

SGU132 - Another Chocolate Maniac(状态压缩DP)

题目大意 给定一个N*M大小的大小的蛋糕,蛋糕的有些地方已经放置了东西,要求你在蛋糕上放入尽量少的1*2大小的巧克力,使得蛋糕不能够再放入巧克力 题解 和POJ1038恰好相反,此题是放入尽量少的巧克 ...

Android弹性ScrollView

开袋即食 import android.content.Context; import android.graphics.Rect; import android.util.AttributeSet; ...

Windows下安装Redis数据库并实现C#访问

1.Redis在Windows下的安装 目前Redis官方并不支持Redis的Windows版本,需要去GitHub下载. GitHub上的Redis分两种,一种是以命令行形式安装的,一种是以Wind ...

关于pipelineDB调用GetLocalStreamReaders的BUG

如果想获取一个stream所有的reader,那么必须调用这个函数: Bitmapset *targets = GetLocalStreamReaders(relid); 如果stream下面没有re ...

IronFort---基于Django和Websocket的堡垒机

WebSSH有很多,基于Django的Web服务也有很多,使用Paramiko在Python中进行SSH访问的就更多了.但是通过gevent将三者结合起来,实现通过浏览器访问的堡垒机就很少见了.本文将 ...

你可能感兴趣的:(c,oracle成绩管理系统)