欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

2、功能

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

3、用戶界面

   主菜單
   子菜單

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

//
// ?main.c
// ?Student System
//
// ?Created by ma c on 15/7/22.
// ?Copyright (c) 2015年. All rights reserved.
// ?要求:編寫一個(gè)學(xué)生成績(jī)管理系統(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é)號(hào))


//修改數(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é)號(hào)查詢
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é)號(hào)刪除數(shù)據(jù)**\n");
? ? printf("** 2.返回主菜單 ? **\n");
? ? printf("------------------\n");
? ? printf("please select 0-1:");
}

//查找子菜單
void seekScreen()
{
? ? printf("-------------------------\n");
? ? printf("****** 1.按姓名查找信息 ? ?*\n");
? ? printf("****** 2.按學(xué)號(hào)查找信息 ? ?*\n");
? ? printf("****** 3.查看所有學(xué)生成績(jī) ?*\n");
? ? printf("****** 4.成績(jī)名次排序(總分)*\n");
? ? printf("****** 5.查看成績(jī)最優(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é)號(hào)刪除)
? ? ? ? ? ? ? ? ? ? ? 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é)號(hào)刪除
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é)號(hào)為%d的學(xué)生已被刪除\n",Sno);
? ? ? ? ? ? printf("\n");
? ? ? ? ? ? flag=1;
? ? ? ? ? ? count = count-1;
? ? ? ? ? ? break;
? ? ? ? }
? ? }
? ? if(flag==0)
? ? ? ? printf("學(xué)號(hào)%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("請(qǐng)輸入同學(xué)的姓名: ");
? ? ? ? ? ? ? ? scanf("%s",name);
? ? ? ? ? ? ? ? search(stu,count,name);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 2 :
? ? ? ? ? ? ? ? printf("\n請(qǐng)輸入同學(xué)的學(xué)號(hào): ");
? ? ? ? ? ? ? ? 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("成績(jī)最優(yōu)的同學(xué):");
? ? My_print_sum(stu,0);

? ? printf("成績(jī)最差的同學(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é)號(hào):%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));
}

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

相關(guān)文章

  • C語言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)開發(fā)

    C語言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)開發(fā)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)開發(fā),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C++對(duì)象與繼承使用中一些問題介紹

    C++對(duì)象與繼承使用中一些問題介紹

    大家好,本篇文章主要講的是C++對(duì)象與繼承使用中一些問題介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • C語言實(shí)現(xiàn)訪問及查詢MySQL數(shù)據(jù)庫的方法

    C語言實(shí)現(xiàn)訪問及查詢MySQL數(shù)據(jù)庫的方法

    這篇文章主要介紹了C語言實(shí)現(xiàn)訪問及查詢MySQL數(shù)據(jù)庫的方法,涉及C語言基于libmysql.lib實(shí)現(xiàn)訪問MySQL數(shù)據(jù)庫的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • C語言實(shí)現(xiàn)推箱子游戲的地圖編輯器

    C語言實(shí)現(xiàn)推箱子游戲的地圖編輯器

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)推箱子游戲的地圖編輯器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • c++基礎(chǔ)語法:構(gòu)造函數(shù)初始化列表

    c++基礎(chǔ)語法:構(gòu)造函數(shù)初始化列表

    構(gòu)造函數(shù)需要初始化的數(shù)據(jù)成員,不論是否顯示的出現(xiàn)在構(gòu)造函數(shù)的成員初始化列表中,都會(huì)在該處完成初始化,并且初始化的順序和其在聲明時(shí)的順序是一致的,與列表的先后順序無關(guān)
    2013-09-09
  • c++ int轉(zhuǎn)string方法

    c++ int轉(zhuǎn)string方法

    int 轉(zhuǎn)string的方法,用到了特分享一下方便需要的朋友
    2013-01-01
  • STL中的string你了解嗎

    STL中的string你了解嗎

    這篇文章主要為大家詳細(xì)介紹了STL中的string,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C語言刪除輸入字符串中的空格示例代碼

    C語言刪除輸入字符串中的空格示例代碼

    最近工作中遇到了需求,要?jiǎng)h除字符串中的所有空格,就要篩選出空格字符,這篇文章主要給大家介紹了關(guān)于利用C語言刪除輸入字符串中的空格的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • C++之vector容器的swap方法解讀

    C++之vector容器的swap方法解讀

    這篇文章主要介紹了C++之vector容器的swap方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C語言數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)銀行模擬

    C語言數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)銀行模擬

    這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)銀行模擬的相關(guān)資料,通過此文希望大家能理解離散化的方法,希望能幫助到大家,需要的朋友可以參考下
    2017-08-08

最新評(píng)論