日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

学生成绩统计c语言课程设计,学生成绩管理系统-C语言课程设计

發布時間:2024/7/5 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学生成绩统计c语言课程设计,学生成绩管理系统-C语言课程设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

記一次課程設計作業?學生成績管理系統#include

#include

#include

#include

/*

學生成績管理系統介紹

2017C語言課程設計??202160936

1.支持將數據保存到文件并從文件中讀取已有數據

2.支持添加、刪改數據

3.支持按學號或姓名查詢、刪除、修改數據

4.支持簡單統計,包括?不及格人數、最高分、最低分

5.支持按總分排序整理數據

*/

struct?student

{

char?num[10];

char?name[20];

int?cgrade;

int?sxgrade;

int?yygrade;

int?total;

float?ave;

};

struct?node

{

struct?student?data;

struct?node?*next;

}*head,*last;

int?Add(int?i)//執行增加學生記錄操作

{

struct?node?*tmp;

int?loop=1;

while?(loop)

{

printf("請按以下格式輸入數據:\n");

tmp=(struct?node?*)malloc(sizeof?(struct?node));

printf("學號姓名?C語言成績?數學成績?英語成績\n");

scanf("%s?%s?%d?%d?%d",tmp->data.num,tmp->data.name,&tmp->data.cgrade,&tmp->data.sxgrade,&tmp->data.yygrade);

tmp->data.total=tmp->data.cgrade+tmp->data.sxgrade+tmp->data.yygrade;

tmp->data.ave=tmp->data.total/3.0;

if?(last!=NULL)

{

last->next=tmp;

last=last->next;

}

else

{

head=last=tmp;

}

last->next=NULL;

i++;

printf("添加成功!輸入1繼續錄入,輸入0終止錄入??");

int?t;

scanf("%d",&t);

if?(t==0)

loop=0;

}

return?i;

}

int?Del(int?i)//執行刪除學生記錄操作

{

char?tmpname[20];

char?tmpnum[10];

int?find=0,way;

struct?node?*tmp=head,*tmpbak=head;

printf("請選擇刪除依據:??1.學號??2.姓名?\n?");

scanf("%d",&way);

switch?(way)

{

case?1:printf("請輸入學號:");

scanf("%s",tmpnum);

while?((tmp!=NULL)&&(!find))

{

if?(!strcmp(tmpnum,tmp->data.num))

{

find=1;

break;

}

tmpbak=tmp;

tmp=tmp->next;

}

if?(!find)

{

printf("抱歉,學號?%s未查到相關數據!\n",tmpnum);

}

else

{

if?(tmpbak==tmp)

{

head=head->next;

printf("刪除成功!\n");

i--;

return?i;

}

else

{

tmpbak->next=tmp->next;

printf("刪除成功!\n");

i--;

return?i;

}

}

case?2:printf("請輸入姓名:");

scanf("%s",tmpname);

while?((tmp!=NULL)&&(!find))

{

if?(!strcmp(tmpname,tmp->data.num))

{

find=1;

break;

}

tmpbak=tmp;

tmp=tmp->next;

}

if?(!find)

{

printf("抱歉,姓名?%s未查到相關數據!\n",tmpname);

}

else

{

if?(tmpbak==tmp)

{

head=head->next;

printf("刪除成功!\n");

i--;

return?i;

}

else

{

tmpbak->next=tmp->next;

printf("刪除成功!\n");

i--;

return?i;

}

}

default:printf("選擇錯誤,查詢失敗!\n");

}

}

void?Edit(struct?node*?tmp)//執行修改學生記錄操作

{

printf("請輸入修改后的信息:\n");

printf("學號姓名?C語言成績?數學成績?英語成績\n");

scanf("%s?%s?%d?%d?%d",tmp->data.num,tmp->data.name,&tmp->data.cgrade,&tmp->data.sxgrade,&tmp->data.yygrade);

tmp->data.total=tmp->data.cgrade+tmp->data.sxgrade+tmp->data.yygrade;

tmp->data.ave=tmp->data.total/3.0;

printf("修改成功!?\n");

printf("*************************************\n");

}

void?Query()//執行查詢學生記錄操作

{

char?tmpname[20];

char?tmpnum[10];

int?find=0,way,change=0;

struct?node?*tmp=head;

printf("請選擇查詢方式:??1.學號???2.姓名?\n?");

scanf("%d",&way);

switch?(way)

{

case?1:printf("請輸入學號:");

scanf("%s",tmpnum);

while?((tmp!=NULL)&&(!find))

{

if?(!strcmp(tmpnum,tmp->data.num))

{

find=1;

printf("找到以下數據!\n");

printf("學號姓名?C語言成績?數學成績?英語成績?總分?平均分?\n");

printf("%s?%s%d%d%d%d%.2f?\n",tmp->data.num,tmp->data.name,tmp->data.cgrade,tmp->data.sxgrade,tmp->data.yygrade,tmp->data.total,tmp->data.ave);

printf("*************************************\n");

printf("是否修改數據??輸入1修改,輸入0取消?");

scanf("%d",&change);

if?(change)

Edit(tmp);

}

tmp=tmp->next;

}

if?(!find)

{

printf("抱歉,學號?%s未查到相關數據!\n",tmpnum);

}

break;

case?2:printf("請輸入姓名:");

scanf("%s",tmpname);

while?((tmp!=NULL)&&(!find))

{

if?(!strcmp(tmpname,tmp->data.name))

{

find=1;

printf("找到以下數據!\n");

printf("學號姓名?C語言成績?數學成績?英語成績?總分?平均分?\n");

printf("%s?%s%d%d%d%d%.2f?\n",tmp->data.num,tmp->data.name,tmp->data.cgrade,tmp->data.sxgrade,tmp->data.yygrade,tmp->data.total,tmp->data.ave);

printf("*************************************\n");

printf("是否修改數據??輸入1修改,輸入0取消?");

scanf("%d",&change);

if?(change)

Edit(tmp);

}

tmp=tmp->next;

}

if?(!find)

{

printf("抱歉,姓名?%s未查到相關數據!\n",tmpname);

}

break;

default:printf("選擇錯誤,查詢失敗!\n");

}

}

void?Tongji()//執行統計學生記錄操作

{

struct?node?*tmp=head;

int?cbjg=0,sxbjg=0,yybjg=0,avebjg=0,cmax=0,sxmax=0,yymax=0,avemax=0,cmin=100,sxmin=100,yymin=100,avemin=100;

printf("正在統計數據,請稍候...\n");

while?(tmp!=NULL)

{

if?(tmp->data.cgrade<60)

cbjg++;

if?(tmp->data.cgrade>cmax)

cmax=tmp->data.cgrade;

if?(tmp->data.cgrade

cmin=tmp->data.cgrade;

if?(tmp->data.sxgrade<60)

sxbjg++;

if?(tmp->data.sxgrade>sxmax)

sxmax=tmp->data.sxgrade;

if?(tmp->data.sxgrade

sxmin=tmp->data.sxgrade;

if?(tmp->data.yygrade<60)

yybjg++;

if?(tmp->data.yygrade>yymax)

yymax=tmp->data.yygrade;

if?(tmp->data.yygrade

yymin=tmp->data.yygrade;

if?(tmp->data.ave<60)

avebjg++;

if?(tmp->data.ave>avemax)

avemax=tmp->data.ave;

if?(tmp->data.ave

avemin=tmp->data.ave;

tmp=tmp->next;

}

printf("****************************\n統計完成,數據如下:\n");

printf("C語言不及格人數:%d?最高分:%d?最低分:%d?\n",cbjg,cmax,cmin);

printf("數學不及格人數:%d?最高分:%d?最低分:%d?\n",sxbjg,sxmax,sxmin);

printf("英語不及格人數:%d?最高分:%d?最低分:%d?\n",yybjg,yymax,yymin);

printf("平均分不及格人數:%d?最高分:%d最低分:%d?\n",avebjg,avemax,avemin);

printf("**********************************\n");

}

void?Sort(int?n)//執行按降序進行排列學生記錄的操作

{

int?i,j;

struct?node?*tmp=head,*tmpbak=head->next,*bak;

bak=(struct?node?*)malloc(sizeof?(struct?node));

for(i?=?0;?i?

{

for(j?=?0;?i?+?j?

{

if(tmpbak->data.total>?tmp->data.total)

{

bak->data?=tmp->data;

tmp->data?=?tmpbak->data;

tmpbak->data?=?bak->data;

}

tmp=tmp->next;

tmpbak=tmpbak->next;

}

tmp=head;

tmpbak=head->next;

}

printf("排序完成!\n");

}

int?Save()//執行存盤操作stuinfo.dat

{

if(!head)?return?0;

FILE?*fp=fopen("stuinfo.dat","wb");

int?i=0;

while(head)

{

fwrite(&head->data,sizeof(student),1,fp);

i++;

head=head->next;

}

fclose(fp);

return?i;

}

int?load()????//從文件stuinfo.dat中載入數據

{

FILE?*fp=fopen("stuinfo.dat","rb");

if(!fp)

{

printf("Can?not?open?the?file!\n");

return?0;

}

struct?node?*tmp;

fseek(fp,0,SEEK_END);

long?end=ftell(fp);

fseek(fp,0,SEEK_SET);

int?i=0;

if(ftell(fp)==end)

{

printf("無記錄!\n");

return?0;

}

while(ftell(fp)!=end)

{

tmp=(struct?node*)malloc(sizeof(struct?node));

tmp->next=NULL;

fread(&tmp->data,sizeof(struct?student),1,fp);

i++;

if?(last!=NULL)

{

last->next=tmp;

last=last->next;

}

else

{

head=last=tmp;

}

last->next=NULL;

}

fclose(fp);

return?i;

}

void?Display()//執行將學生記錄以表格形式打印輸出至屏幕的操作

{

struct?node?*tmp=head;

printf("學號姓名?C語言成績?數學成績?英語成績?總分?平均分?\n");

while?(tmp!=NULL)

{

printf("%s?%s%d%d%d%d%.2f",tmp->data.num,tmp->data.name,tmp->data.cgrade,tmp->data.sxgrade,tmp->data.yygrade,tmp->data.total,tmp->data.ave);

tmp=tmp->next;

printf("\n");

}

}

void?Wrong()//給出按鍵錯誤提示

{

printf("輸入錯誤,請重新輸入!?\n");

}

int?Quit()//存盤且退出

{

Save();

return?0;

}

int?Menu()//操作選單

{

int?i;

printf("========================================================\n");

printf("歡迎使用學生成績管理系統!\n");

printf("?0:?存盤并退出\n");

printf("?1:增加學生記錄\n");

printf("?2:刪除學生記錄\n");

printf("?3:查詢/修改學生記錄\n");

printf("?4:統計學生記錄\n");

printf("?5:按降序進行排列學生記錄\n");

printf("?6:將學生記錄以表格形式打印輸出至屏幕\n");

printf("========================================================\n");

printf("請選擇你需要的操作:");

scanf("%d",&i);

printf("\n");

return?i;

}

void?main()

{

int?i,choice,loop=1;

i=load();

printf("從stuinfo.dat導入了%d條數據\n\n",i);

while?(loop)

{

choice=Menu();

switch?(choice)

{

case?0:loop=Quit();break;

case?1:i=Add(i);break;

case?2:i=Del(i);break;

case?3:Query();break;

case?4:Tongji();break;

case?5:Sort(i);break;

case?6:printf("共有%d條數據!\n",i);Display();break;

default:Wrong();

}

}

}

總結

以上是生活随笔為你收集整理的学生成绩统计c语言课程设计,学生成绩管理系统-C语言课程设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。