最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實(shí)現(xiàn)學(xué)生成績管理系統(tǒng)項(xiàng)目

 更新時(shí)間:2022年01月31日 12:45:16   作者:XYQ全哥  
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)學(xué)生成績管理系統(tǒng)項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語言實(shí)現(xiàn)學(xué)生成績管理系統(tǒng)項(xiàng)目,供大家參考,具體內(nèi)容如下

1、數(shù)據(jù)結(jié)構(gòu):學(xué)生信息:學(xué)號、姓名、年齡、性別、3課成績

2、功能

(1)  增加學(xué)生記錄
(2)  刪除學(xué)生記錄
(3)  查找學(xué)生信息(學(xué)號、姓名)
(4)  修改學(xué)生信息
(5)  按照成績排序、求平均值、最大值、最小值

3、用戶界面

   主菜單
   子菜單

4、 批量生成測試數(shù)據(jù)

//
// ?main.c
// ?Student System
//
// ?Created by ma c on 15/7/22.
// ?Copyright (c) 2015年. All rights reserved.
// ?要求:編寫一個(gè)學(xué)生成績管理系統(tǒng)。

#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 50
struct Student{
? ? char name[20];
? ? int sno;
? ? int age;
? ? char gender;
? ? float EnglishScore;
? ? float mathScore;
? ? float chineseScore;
}stu[N]={{"zhao",1000,20,'M',98,99,97},
? ? ? ? ?{"zhao",1001,21,'F',97,96,95},
? ? ? ? ?{"qian",1002,23,'M',95,96,92},
? ? ? ? ?{"hong",1003,22,'F',91,93,97},
? ? ? ? ?{"zhou",1004,25,'M',90,90,90},
? ? ? ? ?{"feng",1005,21,'F',96,93,96},
? ? ? ? ?{"wang",1006,23,'M',97,91,90},
? ? ? ? ?{"chen",1007,21,'F',94,92,91},
? ? ? ? ?{"geng",1008,20,'F',90,99,91},
? ? ? ? ?{"tang",1009,24,'M',99,99,99}};

//添加數(shù)據(jù)
void add(struct Student stu[],int pos,int nums);


//刪除數(shù)據(jù)
void Delete_name(struct Student *stu,char Name[]);//(按姓名)
void Delete_sno(struct Student *stu,int Sno);//(按學(xué)號)


//修改數(shù)據(jù)
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);//按學(xué)號查詢
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.增加學(xué)生記錄 **\n");
? ? printf("** 2.刪除學(xué)生記錄 **\n");
? ? printf("** 3.查找學(xué)生記錄 **\n");
? ? printf("** 4.修改學(xué)生記錄 **\n");
? ? printf("** 0.退出管理系統(tǒng) **\n");
? ? printf("------------------\n");
}

//刪除子菜單
void deleteScreen()
{
? ? printf("------------------\n");
? ? printf("** 0.按姓名刪除數(shù)據(jù)**\n");
? ? printf("** 1.按學(xué)號刪除數(shù)據(jù)**\n");
? ? printf("** 2.返回主菜單 ? **\n");
? ? printf("------------------\n");
? ? printf("please select 0-1:");
}

//查找子菜單
void seekScreen()
{
? ? printf("-------------------------\n");
? ? printf("****** 1.按姓名查找信息 ? ?*\n");
? ? printf("****** 2.按學(xué)號查找信息 ? ?*\n");
? ? printf("****** 3.查看所有學(xué)生成績 ?*\n");
? ? printf("****** 4.成績名次排序(總分)*\n");
? ? printf("****** 5.查看成績最優(yōu)最差 ?*\n");
? ? printf("****** 6.返回主菜單 ? ? ? *\n");
? ? printf("-------------------------\n");
? ? printf("please you select 1-6:");
}

//定義全局靜態(tài)變量,統(tǒng)計(jì)目前結(jié)構(gòu)體數(shù)組中的人數(shù)
static int count = 10;


//主函數(shù)
int main(int argc, const char * argv[])
{
?int nums,temp;
?int snos;
?char names[20];
?while(1)
?{
? ? PrintScreen();
? ? printf("please press enter_key continue!\n");
? ? getchar();
? ? printf("please select 0-4:");
? ? char c = getchar();
? ? switch(c)
? ? {
? ? ? ? case '1':
? ? ? ? ? ? ? printf("please student'numbers you want to add:");
? ? ? ? ? ? ? scanf("%d",&nums);
? ? ? ? ? ? ? add(stu,count,nums); ? ? ?//添加數(shù)據(jù)
? ? ? ? ? ? ? getchar();
? ? ? ? ? ? ? break;
? ? ? ? case '2':
? ? ? ? ? ? ? deleteScreen();
? ? ? ? ? ? ? scanf("%d",&temp);
? ? ? ? ? ? ? switch(temp)
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? case 0:
? ? ? ? ? ? ? ? ? ? ? printf("please input delete name:");
? ? ? ? ? ? ? ? ? ? ? scanf("%s",names);;
? ? ? ? ? ? ? ? ? ? ? Delete_name(stu,names); ?//刪除數(shù)據(jù)(按姓名刪除)
? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? case 1:
? ? ? ? ? ? ? ? ? ? ? printf("please input delete sno:");
? ? ? ? ? ? ? ? ? ? ? scanf("%d",&snos);
? ? ? ? ? ? ? ? ? ? ? Delete_sno(stu,snos); //刪除數(shù)據(jù)(按學(xué)號刪除)
? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? case 2:
? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? }
? ? ? ? ? ? ? getchar();
? ? ? ? ? ? ? break;
? ? ? ? case '3':
? ? ? ? ? ? ? menu(stu,count);//查找數(shù)據(jù)
? ? ? ? ? ? ? getchar();
? ? ? ? ? ? ? break;
? ? ? ? case '4':
? ? ? ? ? ? ? printf("please input update sno:");
? ? ? ? ? ? ? scanf("%d",&snos);
? ? ? ? ? ? ? update(stu,snos,count); ? ? //修改數(shù)據(jù)
? ? ? ? ? ? ? break;
? ? ? ? case '0':
? ? ? ? ? ? ? exit(0); ? ? ? ? ? ? ? ? ? ?//退出系統(tǒng)
? ? ? ? default:
? ? ? ? ? ? ? printf("data is illeagel!\n");
? ? ? ? ? ? ? getchar();
? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ?//輸入非法
? ? }
?}
?return 0;
}

//添加數(shù)據(jù)
void add(struct Student stu[],int pos,int nums)//開始位置、添加人數(shù)
{
? ? for(int i=pos;i<pos+nums;i++)
? ? {
? ? ? ? printf("please input name:");
? ? ? ? scanf("%s",stu[i].name);
? ? ? ? int flag = 1,sno;
? ? ? ? while(flag)
? ? ? ? {
? ? ? ? ? printf("please input sno:");
? ? ? ? ? scanf("%d",&sno);
? ? ? ? ? ? for(int j=0;j<pos;j++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if(stu[j].sno==sno)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? printf("sno is exist!\n");
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? flag = 0;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? 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("學(xué)生信息添加成功!\n");
? ? }
? ? count = count + nums;
}

//按學(xué)號刪除
void Delete_sno(struct Student *stu,int Sno)
{
? ? if(count==0)
? ? {
? ? ? ? printf("成員已為空!\n");
? ? ? ? return;
? ? }
? ? int flag=0;
? ? for(int i=0;i<count;i++)
? ? {
? ? ? ? if((stu+i)->sno==Sno)
? ? ? ? {
? ? ? ? ? ? for(int j=i;j<count;j++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? *(stu+j)=*(stu+j+1);
? ? ? ? ? ? }
? ? ? ? ? ? printf("\n");
? ? ? ? ? ? printf("學(xué)號為%d的學(xué)生已被刪除\n",Sno);
? ? ? ? ? ? printf("\n");
? ? ? ? ? ? flag=1;
? ? ? ? ? ? count = count-1;
? ? ? ? ? ? break;
? ? ? ? }
? ? }
? ? if(flag==0)
? ? ? ? printf("學(xué)號%d不存在.\n",Sno);
}

//按姓名刪除
void Delete_name(struct Student *stu,char Name[])
{
? ? if(count==0)
? ? {
? ? ? ? printf("成員已為空!\n");
? ? ? ? return;
? ? }
? ? int flag=0;
? ? int n=count;
? ? for(int i=0;i<n;i++)
? ? {
? ? ? ? if(strcmp((stu+i-flag)->name,Name)==0)
? ? ? ? {
? ? ? ? ? ? for(int j=i-flag;j<count;j++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? *(stu+j)=*(stu+j+1);
? ? ? ? ? ? }
? ? ? ? ? ? printf("\n");
? ? ? ? ? ? printf("學(xué)生:%s 已被刪除.\n",Name);
? ? ? ? ? ? printf("\n");
? ? ? ? ? ? flag=flag+1;
? ? ? ? ? ? count =count -1;
? ? ? ? }
? ? }
? ? if(flag==0)
? ? ? ? printf("學(xué)生:%s 不存在.\n",Name);
}

//修改數(shù)據(jù)
void update(struct Student stu[],int sno,int len)
{
? ? char cs,cs1,cs2,cs3;
? ? char p[20];
? ? int grade,i;
? ? for(i=0; 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-1)
? ? ? ? {
? ? ? ? ? ? printf("error,don't have the sno!");
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? continue;
? ? ? ? }
? ? }
}

//查詢數(shù)據(jù)
void menu(struct Student stu[],int m)
{
? ? int logel = 1;
? ? while(logel)
? ? {
? ? ? ? seekScreen();
? ? ? ? int n;
? ? ? ? scanf("%d",&n);
? ? ? ? char name[20];
? ? ? ? int num;
? ? ? ? switch(n)
? ? ? ? {
? ? ? ? ? ? case 1 :
? ? ? ? ? ? ? ? printf("請輸入同學(xué)的姓名: ");
? ? ? ? ? ? ? ? scanf("%s",name);
? ? ? ? ? ? ? ? search(stu,count,name);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 2 :
? ? ? ? ? ? ? ? printf("\n請輸入同學(xué)的學(xué)號: ");
? ? ? ? ? ? ? ? scanf("%d",&num);
? ? ? ? ? ? ? ? search1(stu,count,num);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 3:
? ? ? ? ? ? ? ? print(stu,count);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 4:
? ? ? ? ? ? ? ? sort(stu,count);
? ? ? ? ? ? ? ? print(stu,count);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 5:
? ? ? ? ? ? ? ? max_min(stu,count);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 6:
? ? ? ? ? ? ? ? logel = 0;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? default:
? ? ? ? ? ? ? ? logel = 0;
? ? ? ? ? ? ? ? printf("輸入數(shù)字有誤!\n");
? ? ? ? ? ? ? ? break;
? ? ? ? }
? ? }
}
void search(struct Student stu[],int n,char Name[])
{
? ? char* p= Name;
? ? int flag = 0;
? ? for(int i=0;i<n;i++)
? ? {
? ? ? ? if(strcmp(stu[i].name,p)==0)
? ? ? ? {
? ? ? ? ? ? flag = 1;
? ? ? ? ? ? My_print_sum(stu,i);
? ? ? ? }
? ? }
? ? if(flag==0)
? ? {
? ? ? ? printf("the name is not exist!\n");
? ? }
}
void search1(struct Student stu[],int n,int Num)
{
? ? int flag = 0;
? ? for(int i=0;i<n;i++)
? ? {
? ? ? ? if(Num==stu[i].sno)
? ? ? ? {
? ? ? ? ? ? flag = 1;
? ? ? ? ? ? My_print_sum(stu,i);
? ? ? ? }
? ? }
? ? if(flag==0)
? ? {
? ? ? ? printf("the sno is not exist!\n");
? ? }
}
void sort(struct Student stu[],int n)
{
? ? float sum[N];
? ? for(int i=0;i<n;i++)
? ? {
? ? ? ? sum[i]=stu[i].EnglishScore+stu[i].mathScore+stu[i].chineseScore;
? ? }
? ? for(int i=0;i<n-1;i++)
? ? {
? ? ? ? for(int j=0;j<n-1-i;j++)
? ? ? ? {
? ? ? ? ? ? if(sum[j]<sum[j+1])
? ? ? ? ? ? {
? ? ? ? ? ? ? ? float temp1 = sum[j];
? ? ? ? ? ? ? ? sum[j] = sum[j+1];
? ? ? ? ? ? ? ? sum[j+1] = temp1;

? ? ? ? ? ? ? ? struct Student temp;
? ? ? ? ? ? ? ? temp=stu[j];
? ? ? ? ? ? ? ? stu[j]=stu[j+1];
? ? ? ? ? ? ? ? stu[j+1]=temp;
? ? ? ? ? ? }
? ? ? ? }
? ? }
}
void max_min(struct Student stu[],int n)
{
? ? sort(stu,n);

? ? printf("成績最優(yōu)的同學(xué):");
? ? My_print_sum(stu,0);

? ? printf("成績最差的同學(xué):");
? ? My_print_sum(stu,n-1);
}

void print(struct Student stu[],int n)
{
? ? for(int i=0;i<n;i++)
? ? {
? ? ? ? My_print_sum(stu,i);
? ? }
}

void My_print_sum(struct Student stu[],int n)
{
? ? printf("\n姓名:%s,學(xué)號:%d,年齡:%d,性別:%c,英語:%.2f,數(shù)學(xué):%.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));
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言時(shí)間函數(shù)之strftime()詳解

    C語言時(shí)間函數(shù)之strftime()詳解

    這篇文章主要為大家詳細(xì)介紹了C語言時(shí)間函數(shù)之strftime(),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 一文詳解如何在VS?Code上搭建C/C++開發(fā)環(huán)境

    一文詳解如何在VS?Code上搭建C/C++開發(fā)環(huán)境

    VSCode是由微軟開發(fā)的一款免費(fèi)、開源、跨平臺的文本編輯器,它具有許多強(qiáng)大的功能,這篇文章主要給大家介紹了關(guān)于如何在VS?Code上搭建C/C++開發(fā)環(huán)境的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • 手把手帶你搞懂C語言指針

    手把手帶你搞懂C語言指針

    這篇文章主要介紹了C語言的指針,本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下,希望能給你帶來幫助
    2021-08-08
  • 淺談C++ 基類指針和子類指針的相互賦值

    淺談C++ 基類指針和子類指針的相互賦值

    下面小編就為大家?guī)硪黄獪\談C++ 基類指針和子類指針的相互賦值。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • C++ Boost PointerContainer智能指針詳解

    C++ Boost PointerContainer智能指針詳解

    智能指針是一種像指針的C++對象,但它能夠在對象不使用的時(shí)候自己銷毀掉。雖然STL提供了auto_ptr,但是由于不能同容器一起使用(不支持拷貝和賦值操作),因此很少有人使用。它是Boost各組件中,應(yīng)用最為廣泛的一個(gè)
    2022-11-11
  • 詳解Qt中線程的使用方法

    詳解Qt中線程的使用方法

    這篇文章主要為大家詳細(xì)介紹了Qt中線程的使用方法,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Qt有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • 使用C++進(jìn)行Cocos2d-x游戲開發(fā)入門過程中的要點(diǎn)解析

    使用C++進(jìn)行Cocos2d-x游戲開發(fā)入門過程中的要點(diǎn)解析

    這篇文章主要介紹了使用C++進(jìn)行Cocos2d-x游戲開發(fā)入門過程中的要點(diǎn)解析,主要針對畫面變化以及觸摸響應(yīng)方面,需要的朋友可以參考下
    2015-12-12
  • opencv3/C++關(guān)于移動(dòng)對象的輪廓的跟蹤詳解

    opencv3/C++關(guān)于移動(dòng)對象的輪廓的跟蹤詳解

    今天小編就為大家分享一篇opencv3/C++關(guān)于移動(dòng)對象的輪廓的跟蹤詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • C++學(xué)習(xí)之指針的使用詳解

    C++學(xué)習(xí)之指針的使用詳解

    這篇文章主要為大家詳細(xì)介紹了C++中指針的相關(guān)知識,文中的示例代碼講解詳細(xì),對我們的學(xué)習(xí)或工作有一定的價(jià)值,感興趣的小伙伴可以了解一下
    2023-03-03
  • VS2019調(diào)試C語言程序(監(jiān)視操作)的詳細(xì)步驟

    VS2019調(diào)試C語言程序(監(jiān)視操作)的詳細(xì)步驟

    在很多時(shí)候我們在寫程序的過程中會發(fā)現(xiàn)一些非編程錯(cuò)誤的問題,這樣的問題很難直接分辨出來,但是我們可以用調(diào)試了一步一步的模擬程序運(yùn)行的過程,來找出程序的錯(cuò)誤,下面這篇文章主要給大家介紹了關(guān)于VS2019調(diào)試C語言程序(監(jiān)視操作)的詳細(xì)步驟,需要的朋友可以參考下
    2022-11-11

最新評論

中阳县| 宁陵县| 石首市| 云梦县| 永丰县| 富锦市| 海晏县| 福州市| 泸水县| 来凤县| 阿克陶县| 普安县| 太湖县| 固阳县| 韶关市| 南陵县| 大厂| 鸡西市| 平昌县| 古交市| 奉新县| 罗城| 辽源市| 栖霞市| 仁化县| 南充市| 曲沃县| 闽清县| 衡阳县| 上高县| 民权县| 巴东县| 上犹县| 新化县| 慈利县| 平南县| 秭归县| 寿光市| 溧水县| 隆化县| 迭部县|