班級問題(c++)
無聊做了一個程式碼,給我的粉絲們瞅瞅:
#include<bits/stdc++.h>
using namespace std;
#include <time.h>
#include <conio.h> /*清屏*/
#include <stdlib.h> /*顯示目錄*/
#define MAX 888
int now_no=0;
//先把所有要用到的函式寫出來,下面寫特定函式的時候就不需要注意順序和函式之間的邏輯關係了
void input(); void sort(); void sort1(); void sort2(); void sort3(); void display(); void display1(); void insert(); void del(); void average(); void find(); void find1(); void find2(); void dis_grade(); void save(); void read(); void del_file(); void modify();
struct student
{
int no,testScore;
char name[20],sex[4];
float score1,score2,score3,sort,ave,sum;
}stu[MAX],*p;
void input()/*原始資料錄入模組*/
{
int i=0;
char ch;
do
{
printf("\t\t\t\t1.錄入學員資訊\n輸入第%d個學員的資訊\n",i+1);
printf("\n輸入學生編號:");
scanf("%d",&stu[i].no);
fflush(stdin);
printf("\n輸入學員姓名:");
fflush(stdin);
gets(stu[i].name);
printf("\n輸入學員性別:");
fflush(stdin);
gets(stu[i].sex);
printf("\n輸入學員成績1:");
scanf("%f",&stu[i].score1);
printf("\n輸入學員成績2:");
fflush(stdin);
scanf("%f",&stu[i].score2);
printf("\n輸入學員成績3:");
fflush(stdin);
scanf("%f",&stu[i].score3);
printf("\n\n");
i++;
now_no=i;
printf("是否繼續輸入?(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
system("cls");
}
void average() /*求平均數*/
{
for(int i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
}
}
void sort()/*排序資料函式*/
{
struct student temp;
average();
for(int i=1; i<now_no; i++)
for(int j=1; j<=now_no-i; j++)
if(stu[j-1].ave<stu[j].ave) swap(stu[j],stu[j-1]);
printf("排序以完成進入功能2可進行顯示\n");
system("pause");
system("cls");
}
void sort1()/*排序資料函式*/
{
struct student temp;
for(int i=1; i<now_no; i++)
for(int j=1; j<=now_no-i; j++)
if(stu[j-1].score1<stu[j].score1) swap(stu[j],stu[j-1]);
}
void sort2()/*排序資料函式*/
{
struct student temp;
for(int i=1; i<now_no; i++)
for(int j=1; j<=now_no-i; j++)
if(stu[j-1].score2<stu[j].score2) swap(stu[j],stu[j-1]);
}
void sort3()/*排序資料函式*/
{
struct student temp;
for(int i=1;i<now_no;i++)
for(int j=1;j<=now_no-i;j++)
if(stu[j-1].score3<stu[j].score3) swap(stu[j],stu[j-1]);
}
void display()/*顯示資料函式*/
{
char as;
average();
do
{
printf("\t\t\t班級學員資訊列表\n");
printf("\t編號\t姓名\t性別\t成績1\t成績2\t成績3\t平均值\n");
for(int i=0;i<now_no&&stu[i].name[0];i++)
printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
printf("\t\t按任意鍵返回主選單.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void display1()/*顯示資料函式*/
{
char as;
do
{
printf("\t\t\t班級學員score1成績排序\n");
printf("\t編號\t姓名\t性別\t成績1\n");
sort1();
for(int i=0;i<now_no&&stu[i].name[0];i++)
printf("\t%d\t%s\t%s\t%.2f\t\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1);
printf("\t\t\t班級學員score2成績排序\n");
printf("\t編號\t姓名\t性別\t成績2\n");
sort2();
for(int i=0; i<now_no&&stu[i].name[0]; i++)
printf("\t%d\t%s\t%s\t%.2f\t\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score2);
printf("\t\t\t班級學員score3成績排序\n");
printf("\t編號\t姓名\t性別\t成績3\n");
sort3();
for(int i=0; i<now_no&&stu[i].name[0]; i++)
printf("\t%d\t%s\t%s\t%.2f\t\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score3);
printf("\t\t按任意鍵返回主選單.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void dis_grade()
{
char as;
do
{
printf("________________________________________________________\n");
printf(" |90分以上:A | 80~89分:B | 70~79分:C | 60~69分:D | 60分以下:E \n");
printf("--------------------------------------------------------\n");
for(int i=0; i<now_no&&stu[i].name[0]; i++)
{
printf("\t%d\t%s\t%s",stu[i].no,stu[i].name,stu[i].sex);
if(stu[i].ave>=90) printf("\t等級:A");
else if(stu[i].ave>=80&&stu[i].ave<=89) printf("\t等級:B");
else if(stu[i].ave>=70&&stu[i].ave<=79) printf("\t等級:C");
else if(stu[i].ave>=60&&stu[i].ave<=69) printf("\t等級:D");
else if(stu[i].ave<60) printf("\t等級:E");
}
printf("--------------------------------------------------------\n");
printf("\t\t按任意鍵返回主選單.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void insert()/*插入資料函式*/
{
char ch;
do
{
printf("\n\t\t輸入新插入學員隊資訊\n");
printf("\n輸入學生編號:");
scanf("%d",&stu[now_no].no);
fflush(stdin);
printf("\n輸入學員姓名:");
fflush(stdin);
gets(stu[now_no].name);
printf("\n輸入學員性別:");
fflush(stdin);
gets(stu[now_no].sex);
printf("\n輸入學員成績1:");
fflush(stdin);
scanf("%f",&stu[now_no].score1);
printf("\n輸入學員成績2:");
fflush(stdin);
scanf("%f",&stu[now_no].score2);
printf("\n輸入學員成績3:");
fflush(stdin);
scanf("%f",&stu[now_no].score3);
printf("\n\n");
now_no=now_no+1;
sort();
printf("是否繼續輸入?(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
}
void del()/*刪除資料函式*/
{
int k;
printf("輸入要刪除學員的編號:");
fflush(stdin);
scanf("%d",&k);
for(int i=0; i<now_no; i++)
{
if(stu[i].no==k)
{
if(i==now_no) now_no-=1;
else
{
stu[i]=stu[now_no-1];
now_no-=1;
}
sort();
break;
}
}
system("cls");
}
void save()/*儲存資料函式*/
{
FILE *fp;
char filepath[20];
printf("輸入要儲存的檔案路徑:");
fflush(stdin);
gets(filepath);
if( (fp=fopen(filepath,"w"))==NULL )
{
printf("\n儲存失敗!");
exit(0);
}
for(int i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
fprintf(fp,"\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
}
fclose(fp);
printf("學生資訊已儲存在%s中!\n",filepath);
system("pause");
system("cls");
}
void find()/*查詢函式*/
{
char str[20],as;
do
{
printf("輸入要查詢的學生姓名:");
fflush(stdin);
gets(str);
for(int i=0;i<now_no;i++)
if(!strcmp(stu[i].name,str))
{
printf("\t編號\t姓名\t性別\t成績1\t成績2\t成績3\t平均值\n");
printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
}
printf("\t\t按任意鍵返回主選單.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void modify()/*修改資料函式*/
{
char str[20];
printf("輸入要修改的學生姓名:");
fflush(stdin);
gets(str);
for(int i=0; i<now_no; i++)
{
if(!strcmp(stu[i].name,str))
{
system("cls");
printf("\n\t\t輸入新插入學員隊資訊\n");
printf("\n輸入學生編號:");
fflush(stdin);
scanf("%d",&stu[i].no);
printf("\n輸入學員性別:");
fflush(stdin);
gets(stu[i].sex);
printf("\n輸入學員成績1:");
fflush(stdin);
scanf("%f",&stu[i].score1);
printf("\n輸入學員成績2:");
fflush(stdin);
scanf("%f",&stu[i].score2);
printf("\n輸入學員成績3:");
fflush(stdin);
scanf("%f",&stu[i].score3);
printf("\n\n");
sort();
break;
}
}
system("cls");
}
void read()
{
FILE *fp;
char filepath[20];
printf("輸入要讀入的檔案路徑:");
fflush(stdin);
gets(filepath);
if( (fp=fopen(filepath,"r"))==NULL )
{
printf("找不到%s檔案!\n",filepath);
system("pause");
exit(0);
}
now_no=0;
for(int i=0; i<MAX&&!feof(fp); i++)
{
fscanf(fp,"\t%d\t%s\t%s\t%f\t%f\t%f\t%f\n",&stu[i].no,stu[i].name,stu[i].sex,&stu[i].score1,&stu[i].score2,&stu[i].score3,&stu[i].ave);
now_no++;
}
fclose(fp);
printf("儲存的在檔案%s中的所有資訊已經讀入!\n",filepath);
system("pause"); /*按任意鍵繼續*/
system("cls");
}
void del_file()
{
FILE *fp;
char filepath[20];
printf("輸入要刪除的檔案路徑:");
fflush(stdin);
gets(filepath);
fp=fopen(filepath,"w");
fclose(fp);
printf("儲存的在檔案%s中的所有資訊已經刪除!\n",filepath);
system("pause");
system("cls");
}
int main()/*主函式*/
{
int as;
char ch;
do
{
start: printf("\n\n\n\t\t\t歡迎使用 XX 的學生成績管理系統\n");
printf("\n\n\n\n\n\n\t\t******************按任意鍵繼續********************");
ch=getch();
}
while(!ch);
system("cls");
/*以下為功能選擇模組*/
do
{
printf("\n\t\t\t\t1.錄入學員資訊\n\t\t\t\t2.顯示學員總成績資訊\n\t\t\t\t3.對總成績排序\n\t\t\t\t4.顯示學員單科成績排序\n\t\t\t\t5.新增學員資訊\n\t\t\t\t6.刪除學員資訊\n\t\t\t\t7.修改學員資訊\n\t\t\t\t8.查詢學員資訊\n\t\t\t\t9.從檔案讀入學員資訊\n\t\t\t\t10.刪除檔案中學員資訊\n\t\t\t\t11.儲存學員資訊\n\t\t\t\t12.各學員學科平均成績等級評定\n\t\t\t\t13.退出\n");
printf("\t\t\t\t選擇功能選項(輸入所選功能前的數字):");
fflush(stdin);
/*可用可不用,用於清除快取防止下次用scanf輸入是出現錯誤*/
scanf("%d",&as);
switch(as)
{
case 1:system("cls"); input(); break;
case 2:system("cls"); display(); break;
case 3:system("cls"); sort(); break;
case 4:system("cls"); display1(); break;
case 5:system("cls"); insert(); break;
case 6:system("cls"); del(); break;
case 7:system("cls"); modify(); break;
case 8:system("cls"); find(); break;
case 9:system("cls"); read(); break;
case 10:system("cls"); del_file(); break;
case 11:system("cls"); save(); break;
case 12:system("cls"); dis_grade(); break;
case 13:system("exit"); exit(0);
default:system("cls"); goto start;
}
}while(1);/*while(1),1表示真,所以while(1)表示永遠迴圈下去,一般在while(1)的迴圈體內都有break 或者return 跳出迴圈*/
/*至此功能選擇結束*/
}
相關文章
- C~K的班級
- c++ 常見問題C++
- C++的0.3問題C++
- c++使用遇到的問題C++
- UI 層級問題UI
- 藍橋杯-班級活動
- c++求解李白喝酒問題C++
- c++工程師面試問題C++工程師面試
- c++偶現問題備錄C++
- 問題定級標準
- 微軟網路班級網站微軟網站
- 簡單的素數問題(C++)C++
- C++陣列預設初值問題C++陣列
- c/c++資料對齊問題C++
- Rust 如何解決 C++ 的問題?RustC++
- 【c++基礎】菱形繼承問題C++繼承
- 【計算機二級C++】題目與C++知識自檢計算機C++
- ReactNative升級0.56.0注意問題React
- 查詢每個班級前幾名
- 【C++】 55_經典問題分析 四C++
- c++類迴圈依賴的問題C++
- 括號匹配的檢驗問題(C++)C++
- P2404 自然數的拆分問題c++題解C++
- java基礎面試題題庫一(傳智專修學院2017級Java4班)Java面試題
- 01-0006 C++記憶體訪問越界 [問題整理]C++記憶體
- 一個班級21位家長被騙!已有騙子潛入多個班級群瘋狂騙錢
- XCode 10 升級問題總結XCode
- 關係等級儲存問題
- 許可權的級聯問題
- GUI程式設計--班級資訊收集系GUI程式設計
- GUI程式設計--班級資訊收集系..GUI程式設計
- C++和MATLAB混編的問題集錦C++Matlab
- QT creator 中c和c++混編問題QTC++
- c++模板類的使用,編譯的問題C++編譯
- 【dawn·資料結構】迷宮問題(C++)資料結構C++
- Kerberos加密級別不支援的問題ROS加密
- 升級 Homestead box 遇到的 502 問題
- .Net Core 2.1 升級3.1 問題整理