#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
#define INIT_SIZE 10
#define INCRE_SIZE 10
#define SUBJECT_NUM 3
#define LEN 3
void show_Start();
void show_Table();
void addRecord();
void Info_delete();
void deleteRecord();
void delete_Num(int);
void delete_Name(char tarName[]);
void Info_modify();
void modifyRecord();
void modify_Num(int);
void modify_Name(char[]);
void Info_query();
void queryRecord();
void query_Num(int);
void query_Name(char[]);
void display();
void quit();
void menu_CMD();
char *subject[SUBJECT_NUM] = {"é«ä»£","æ°å","Cè¯è¨"};
struct STUDENT
{
int num;
char name[20];
char sex;
float score[SUBJECT_NUM];
};
//struct STUDENT stu[LEN + 1];
//STUDENT *record = (STUDENT*)malloc(sizeof(STUDENT)*INIT_SIZE);
int static stuNum = 0;
//å
ææ¶å®ä¹ä¸ä¸ªå¦çå§...
STUDENT *record = (STUDENT*)malloc(sizeof(STUDENT)*INIT_SIZE);;
int main()
{
//record = (STUDENT*)malloc(sizeof(STUDENT)*INIT_SIZE);
//STUDENT *record = (STUDENT*)malloc(sizeof(STUDENT)*INIT_SIZE);
/*
record[1].num = 1001;
strcpy(record[1].name,"Jason");
record[1].sex = 'M';
record[1].score[0] = 85.0;
record[1].score[1] = 90.0;
record[1].score[2] = 95.0;
record[2].num = 1002;
strcpy(record[2].name,"Jerry");
record[2].sex = 'M';
record[2].score[0] = 85.0;
record[2].score[1] = 90.0;
record[2].score[2] = 95.0;
record[3].num = 1003;
strcpy(record[3].name,"Jessie");
record[3].sex = 'F';
record[3].score[0] = 85.0;
record[3].score[1] = 90.0;
record[3].score[2] = 95.0;
*/
/*
Info_modify();
int key;
cout<<"请è¾å
¥æ¨çéæ© : ";
cin>>key;
if(key == 1)
{
int targetNum;
cout<<"请è¾å
¥æ¨æ¬²ä¿®æ¹çå¦ççå¦å· : ";
cin>>targetNum;
modify_Num(targetNum);
cout<<endl;
display();
}
if(key == 2)
{
char targetName[20];
cout<<"请è¾å
¥æ¨æ¬²ä¿®æ¹å¦ççå§å : ";
cin>>targetName;
modify_Name(targetName);
cout<<endl;
display();
}
if(key == 3)
{
exit(0);
}
*/
show_Start();
menu_CMD();
return 0;
}
//ä¿®æ¹å®åè¿åºè¯¥æ¾ç¤º
void show_Start()
{
//cout<<endl;
cout<<" **************************************** "<<endl;
cout<<" è¿æ¯ä¸ä¸ª "<<endl;
cout<<" å¦çæ绩管çç³»ç» "<<endl;
cout<<" å¯ä»¥å¯¹å¦çæ绩è¿è¡ç®¡ç "<<endl;
cout<<" 欢è¿å¤§å®¶ä½¿ç¨ "<<endl;
cout<<" Made by Jason "<<endl;
cout<<" **************************************** "<<endl;
}
// æ¾ç¤ºè¡¨å¤´ä¿¡æ¯,å³æ¯ : å¦å·,å§å,æ§å«,é«ä»£,æ°å,Cè¯è¨.
void show_Table()
{
cout<<"å¦å·"<<"\t"<<"å§å"<<"\t"<<"æ§å«";
cout<<"\t"<<subject[0]<<"\t"<<subject[1]<<"\t"<<subject[2];
cout<<endl;
}
void menu_CMD()
{
int key;
while(1)
{
cout<<"1. å¢å å¦çä¿¡æ¯"<<endl;
cout<<"2. å é¤å¦çä¿¡æ¯"<<endl;
cout<<"3. ä¿®æ¹å¦çä¿¡æ¯"<<endl;
cout<<"4. æ¥è¯¢å¦çä¿¡æ¯"<<endl;
cout<<"5. æ¾ç¤ºå¦çä¿¡æ¯"<<endl;
cout<<"6. éåº"<<endl;
cout<<"请è¾å
¥æ¨çéæ© : ";
cin>>key;
while(1)
{
if((key < 1)||(key > 6))
{
int key;
cout<<"æ¨çè¾å
¥æ误,请éæ°è¾å
¥!"<<endl;
cout<<"请é(1 - 5) : ";
cin>>key;
}
else
{
break;
}
}
switch(key)
{
case 1:
addRecord();
break;
case 2:
deleteRecord();
break;
case 3:
modifyRecord();
break;
case 4:
queryRecord();
break;
case 5:
display();
break;
case 6:
quit();
break;
}
}
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
//å¢å å¦çä¿¡æ¯
void addRecord()
{
if(stuNum == 0)
{
cout<<"åæ¥æ²¡æè®°å½,ç°å¨å»ºç«æ°è¡¨!"<<endl;
stuNum++;
}
else
{
cout<<"ç°å¨å¨å½å表çæ«å°¾æ·»å æ°çä¿¡æ¯!"<<endl;
stuNum++;
}
//å¦ææ°ç»ç©ºé´ä¸å¤,éæ°ç³è¯·ç©ºé´
if(stuNum > INIT_SIZE)
{
cout<<"å
å空é´ä¸å¤,ç°å¨éæ°ç³è¯·æ°çå
å空é´!"<<endl;
record = (STUDENT*)realloc(record,(INIT_SIZE + INCRE_SIZE)*sizeof(STUDENT));
cout<<"空é´ç³è¯·å®æ!"<<endl;
}
cout<<"æ¨ç°å¨è¦æ·»å ä¸ç»æ°çä¿¡æ¯,æ¨ç¡®å®å?"<<endl;
cout<<"请è¾å
¥æ¨çéæ©(Y/N) : ";
char choi;
cin>>choi;
if((choi == 'Y')||(choi == 'y'))
{
cout<<"请è¾å
¥å¦å· : ";
cin>>record[stuNum].num;
cout<<"请è¾å
¥å§å : ";
cin>>record[stuNum].name;
cout<<"请è¾å
¥æ§å«(M为ç·,F为女) : ";
cin>>record[stuNum].sex;
int i;
for(i = 0;i < SUBJECT_NUM;i++)
{
cout<<"请è¾å
¥"<<subject[i]<<"çæ绩 : ";
cin>>record[stuNum].score[i];
}
}
if((choi == 'N')||(choi == 'n'))
{
cout<<"éåºæ·»å æ°å¦çä¿¡æ¯!"<<endl;
cout<<endl;
}
cout<<"ç°å¨å·²ç»æ"<<stuNum<<"æ¡å¦ççä¿¡æ¯äº!"<<endl;
cout<<endl;
}
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//å é¤ä¿¡æ¯ æä¸å®æ...
//æ¾ç¤ºdeleteRecordç表头信æ¯
void Info_delete()
{
cout<<"请è¾å
¥å é¤æ¹å¼ : "<<endl;
cout<<"1. æå¦å·å é¤"<<endl;
cout<<"2. æå§åå é¤"<<endl;
cout<<"3. éåºå é¤"<<endl;
}
//å é¤å¦ççä¿¡æ¯,å
å«ä¸¤ä¸ªåå½æ°
void deleteRecord()
{
int key;
cout<<endl;
Info_delete();
cout<<"请è¾å
¥æ¨çéæ© : ";
cin>>key;
if(key == 1)
{
int targetNum;
cout<<"请è¾å
¥æ¨æ¬²å é¤å¦ççå¦å· : ";
cin>>targetNum;
//æå¦å·å é¤
delete_Num(targetNum);
cout<<endl;
}
if(key == 2)
{
char targetName[20];
cout<<"请è¾å
¥æ¨æ¬²å é¤å¦ççå§å : ";
cin>>targetName;
//æå§åå é¤
delete_Name(targetName);
cout<<endl;
}
if(key == 3)
{
while(1)
{
menu_CMD();
}
}
}
//æå¦å·å é¤å¦çä¿¡æ¯
//åªç¨å®æå é¤æä½,èä¸å¿
è¾åº. è¾åºçæä½å¯ä»¥å¨ä¸»èåä¸è¿è¡
void delete_Num(int tarNum)
{
int i;
for(i = 1;i <= stuNum;i++)
{
if(record[i].num == tarNum)
{
//å é¤è¿è¦å两ç§æ
åµè®¨è®º
//1. 欲å é¤çå¦çä¿¡æ¯æ¯æåä¸ä½
//2. 欲å é¤çå¦çä¿¡æ¯ä¸æ¯æåä¸ä½
//第ä¸ç§æ
åµ,欲å é¤çå¦çæ¯æåä¸ä½
if(i = stuNum)
{
cout<<"æ¨æè¦å é¤çå¦çä¿¡æ¯æ¯ : "<<endl;
show_Table();
cout<<record[i].num<<"\t"<<record[i].name<<"\t"<<record[i].sex<<"\t"
<<record[i].score[0]<<record[i].score[1]<<"\t"<<record[i].score[2];
cout<<endl;
cout<<endl<<"å é¤åå¦çä¿¡æ¯è¡¨ä¸º : "<<endl;
show_Table();
for(int i = 1;i <= stuNum - 1;i++)
{
cout<<record[i].num<<"\t"<<record[i].name<<"\t"<<record[i].sex;
for(int j = 0;j < SUBJECT_NUM;j++)
{
cout<<"\t"<<record[i].score[j];
}
cout<<endl;
}
//æ¾ç¤ºä¿¡æ¯åºè¯¥æ¾å¨åé¢
/*
stuNum--;
cout<<"ç°å¨è¿å©ä¸"<<stuNum<<"æ¡å¦ççä¿¡æ¯";
cout<<endl;
*/
}
//2.第äºç§æ
åµ,欲å é¤çå¦çä¸æ¯æåä¸ä½
if(i != stuNum)
{
cout<<"æ¨æè¦å é¤çå¦çä¿¡ä¿¡æ¯æ¯ : "<<endl;
show_Table();
cout<<record[i].num<<"\t"<<record[i].name<<"\t"<<record[i].sex<<"\t"
<<record[i].score[0]<<"\t"<<record[i].score[1]<<"\t"<<record[i].score[2];
for(int j = i+1;j <= stuNum;j++)
{
record[j-1] = record[j];
}
//æ¥çå®æè¾åº
cout<<endl;
cout<<"å é¤åå¦çä¿¡æ¯è¡¨ä¸º : "<<endl;
show_Table();
for(int i = 1;i <= stuNum-1;i++)
{
cout<<record[i].num<<"\t"<<record[i].name<<"\t"<<record[i].sex;
for(int j = 0;j < SUBJECT_NUM;j++)
{
cout<<"\t"<<record[i].score[j];
}
cout<<endl;
}
/*
stuNum--;
cout<<"ç°å¨è¿å©ä¸"<<stuNum<<"æ¡å¦ççä¿¡æ¯";
cout<<endl;
*/
}
stuNum--;
cout<<"ç°å¨è¿æ¯å©ä¸"<<stuNum<<"æ¡å¦ççä¿¡æ¯";
cout<<endl;
}
}
}
/*
//æ¹æ³åä¸
void delete_Name(char tarName[])
{
int i;
for(i = 1;i <= stuNum;i++)
{
if(strcmp(record[i].name,tarName) == 0)
{
//å é¤è¿è¦å两ç§æ
åµè®¨è®º
//1. 欲å é¤çå¦çä¿¡æ¯æ¯æåä¸ä½
//2. 欲å é¤çå¦çä¿¡æ¯ä¸æ¯æåä¸ä½
//第ä¸ç§æ
åµ : 欲å é¤å¦çæ¯æåä¸ä½
if(i = stuNum)
{
cout<<"æ¨æè¦å é¤çå¦çä¿¡æ¯æ¯ : "<<endl;
show_Table();
cout<<record[i].num<<"\t"<<record[i].name<<"\t"<<record[i].sex<<"\t"
<<record[i].score[0]<<record[i].score[1]<<"\t"<<record[i].score[2];
cout<<endl;
cout<<endl<<"å é¤åå¦çä¿¡æ¯è¡¨ä¸º : "<<endl;
show_Table();
for(int i = 1;i <= stuNum - 1;i++)
{
cout<<record[i].num<<"\t"<<record[i].name<<"\t"<<record[i].sex;
for(int j = 0;j < SUBJECT_NUM;j++)
{
cout<<"\t"<<record[i].score[j];
}
cout<<endl;
}
}
//第äºç§æ
åµ : 欲å é¤å¦çä¸æ¯æåä¸ä½
if(i != stuNum)
{
cout<<"æ¨æè¦å é¤çå¦çä¿¡ä¿¡æ¯æ¯ : "<<endl;
show_Table();
cout<<record[i].num<<"\t"<<record[i].name<<"\t"<<record[i].sex<<"\t"
<<record[i].score[0]<<"\t"<<record[i].score[1]<<"\t"<<record[i].score[2];
//æ´ä½å¾å å移ä¸ä½
for(int j = i+1;j <= stuNum;j++)
{
record[j-1] = record[j];
}
cout<<endl;
//æ¥çå®æè¾åº
cout<<"å é¤åå¦çä¿¡æ¯è¡¨ä¸º : "<<endl;
show_Table();
for(int i = 1;i <= stuNum-1;i++)
{
cout<<record[i].num<<"\t"<<record[i].name<<"\t"<<record[i].sex;
for(int j = 0;j < SUBJECT_NUM;j++)
{
cout<<"\t"<<record[i].score[j];
}
cout<<endl;
}
cout<<endl;
}
}
}
}
*/
void delete_Name(char tarName[])
{
int i;
for(i = 1;i <= stuNum;i++)
{
//å é¤è¿è¦å两ç§æ
åµè®¨è®º
//1. 欲å é¤çå¦çä¿¡æ¯æ¯æåä¸ä½
//2. 欲å é¤çå¦çä¿¡æ¯ä¸æ¯æåä¸ä½
//å½æ¬²å é¤çå¦çæ¯æåä¸ä½,ç´æ¥è¾åºåé¢LEN-1ä½å¦ççä¿¡æ¯
if(strcmp(record[i].name,tarName) == 0)
{
if(i == stuNum)
{
cout<<"æ¨æè¦å é¤çå¦çä¿¡æ¯æ¯ : "<<endl;
show_Table();
cout<<record[i].num<<"\t"<<record[i].name<<"\t"<<record[i].sex<<"\t"
<<record[i].score[0]<<"\t"<<record[i].score[1]<<"\t"<<record[i].score[2];
cout<<endl;
cout<<"å é¤åå¦çä¿¡æ¯è¡¨ä¸º : "<<endl;
show_Table();
for(int i = 1;i <= stuNum-1;i++)
{
cout<<record[i].num<<"\t"<<record[i].name<<"\t"<<record[i].sex;
for(int j = 0;j < SUBJECT_NUM;j++)
{
cout<<"\t"<<record[i].score[j];
}
cout<<endl;
}
/*
stuNum--;
cout<<"ç°å¨è¿å©ä¸"<<stuNum<<"æ¡å¦ççä¿¡æ¯";
cout<<endl;
*/
}
//å½æ¬²å çå¦çä¸æ¯æåä¸ä½,æ´ä½å¾åå移ä¸ä½
if(i != stuNum)
{
cout<<"æ¨æè¦å é¤çå¦çä¿¡æ¯æ¯ : "<<endl;
show_Table();
cout<<record[i].num<<"\t"<<record[i].name<<"\t"<<record[i].sex<<"\t";
cout<<record[i].score[0]<<"\t"<<record[i].score[1]<<"\t"<<record[i].score[2];
cout<<endl;
//æ´ä½å¾åå移ä¸ä½
for(int j = i+1;j <= stuNum;j++)
{
record[j-1] = record[j];
}
//ç¶åè¾åº
cout<<endl;
cout<<"å é¤åå¦çä¿¡æ¯è¡¨ä¸º : "<<endl;
show_Table();
for(int i = 1;i <= stuNum-1;i++)
{
cout<<record[i].num<<"\t"<<record[i].name<<"\t"<<record[i].sex;
for(int j = 0;j < SUBJECT_NUM;j++)
{
cout<<"\t"<<record[i].score[j];
}
cout<<endl;
}
/*
stuNum--;
cout<<"ç°å¨è¿å©ä¸"<<stuNum<<"æ¡å¦ççä¿¡æ¯";
cout<<endl;
*/
}
stuNum--;
cout<<"ç°å¨è¿å©ä¸"<<stuNum<<"æ¡å¦ççä¿¡æ¯";
cout<<endl;
}
}
}
/*****************************************************************************
******************************************************************************/
//æ¾ç¤ºmodifyRecordç表头信æ¯
void Info_modify()
{
cout<<"请è¾å
¥ä¿®æ¹æ¹å¼ : "<<endl;
cout<<"1. æå¦å·ä¿®æ¹"<<endl;
cout<<"2. æå§åä¿®æ¹"<<endl;
cout<<"3. éåºä¿®æ¹"<<endl;
}
//æ¥è¯¢å¦ççæ绩,å½ç¶éé¢å
æ¬ä¸¤ä¸ªåå½æ°
void modifyRecord()
{
int key;
cout<<endl;
Info_modify();
cout<<"请è¾å
¥æ¨çéæ© : ";
cin>>key;
//æå¦å·ä¿®æ¹
if(key == 1)
{
int targetNum;
cout<<"请è¾å
¥æ¨æ¬²ä¿®æ¹çå¦ççå¦å· : ";
cin>>targetNum;
modify_Num(targetNum);
cout<<endl;
//display();
}
//æå§åä¿®æ¹
if(key == 2)
{
char targetName[20];
cout<<"请è¾å
¥æ¨æ¬²ä¿®æ¹å¦ççå§å : ";
cin>>targetName;
modify_Name(targetName);
cout<<endl;
//display();
}
//éåºä¿®æ¹
if(key == 3)
{
while(1)
{
menu_CMD();
}
}
}
//æå¦å·ä¿®æ¹
void modify_Num(int tarNum)
{
int i;
for(i = 1;i <= stuNum;i++)
{
if(record[i].num == tarNum)
{
cout<<endl<<"请修æ¹è¯¥å¦ççä¿¡æ¯"<<endl;
cout<<"请è¾å
¥è¯¥å¦ççå¦å· : ";
cin>>record[i].num;
cout<<"请è¾å
¥è¯¥å¦ççå§å : ";
cin>>record[i].name;
cout<<"请è¾å
¥è¯¥å¦ççæ§å« : ";
cin>>record[i].sex;
cout<<"请è¾å
¥"<<subject[0]<<"çæ绩 : ";
cin>>record[i].score[0];
cout<<"请è¾å
¥"<<subject[1]<<"çæ绩 : ";
cin>>record[i].score[1];
cout<<"请è¾å
¥"<<subject[2]<<"çæ绩 : ";
cin>>record[i].score[2];
}
}
}
//æå§åä¿®æ¹
void modify_Name(char tarName[])
{
int i;
for(i = 1;i <= stuNum;i++)
{
if(strcmp(record[i].name,tarName) == 0)
{
cout<<endl<<"请修æ¹è¯¥å¦ççä¿¡æ¯ : "<<endl;
cout<<"请è¾å
¥è¯¥å¦ççå¦å· : ";
cin>>record[i].num;
cout<<"请è¾å
¥è¯¥å¦ççå§å : ";
cin>>record[i].name;
cout<<"请è¾å
¥è¯¥å¦ççæ§å« : ";
cin>>record[i].sex;
cout<<"请è¾å
¥"<<subject[0]<<"çæ绩 : ";
cin>>record[i].score[0];
cout<<"请è¾å
¥"<<subject[1]<<"çæ绩 : ";
cin>>record[i].score[1];
cout<<"请è¾å
¥"<<subject[2]<<"çæ绩 : ";
cin>>record[i].score[2];
}
}
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
//æ¾ç¤ºqueryRecordç表头信æ¯
void Info_query()
{
cout<<"请è¾å
¥æ¥è¯¢æ¹å¼ : "<<endl;
cout<<"1. æå¦å·æ¥è¯¢"<<endl;
cout<<"2. æå§åæ¥è¯¢"<<endl;
cout<<"3. éåºæ¥è¯¢"<<endl;
}
//æ¥è¯¢å¦çä¿¡æ¯queryRecord
void queryRecord()
{
int key;
cout<<endl;
Info_query();
cout<<"请è¾å
¥æ¨çéæ© : ";
cin>>key;
if(key == 1)
{
int targetNum;
cout<<"请è¾å
¥æ¨æ¬²æ¥è¯¢å¦ççå¦å· : ";
cin>>targetNum;
query_Num(targetNum);
cout<<endl;
}
if(key == 2)
{
char targetName[20];
cout<<"请è¾å
¥æ¨æ¬²æ¥è¯¢å¦ççå¦å· : ";
cin>>targetName;
query_Name(targetName);
cout<<endl;
}
//éåºæ¥è¯¢,éåå°ä¸»èåå§...
if(key == 3)
{
while(1)
{
menu_CMD();
}
}
}
//æå¦å·æ¥è¯¢
void query_Num(int tarNum)
{
int i;
for(i = 1;i <= stuNum;i++)
{
if(record[i].num == tarNum)
{
//å¦æ表ä¸æ该å¦çä¿¡æ¯çè¯,ä»
ç¨è¾åºè¯¥å¦ççä¿¡æ¯å³å¯.
//è¾åºè¯¥å¦ççä¿¡æ¯
cout<<"该å¦ççä¿¡æ¯å¦ä¸ : "<<endl;
//æ¾ç¤ºè¡¨å¤´ä¿¡æ¯
show_Table();
//æ¾ç¤ºè¯¥å¦çå
·ä½çä¿¡æ¯
cout<<record[i].num<<"\t"<<record[i].name<<"\t"<<record[i].sex;
cout<<"\t"<<record[i].score[0]<<"\t"<<record[i].score[1]<<"\t"<<record[i].score[2];
cout<<endl;
}
}
}
//æå§åæ¥è¯¢
void query_Name(char tarName[])
{
int i;
for(i = 1;i <= stuNum;i++)
{
if(strcmp(record[i].name,tarName) == 0)
{
cout<<"该å¦ççä¿¡æ¯å¦ä¸ : "<<endl;
show_Table();
cout<<record[i].num<<"\t"<<record[i].name<<"\t"<<record[i].sex;
cout<<"\t"<<record[i].score[0]<<"\t"<<record[i].score[1]<<"\t"<<record[i].score[2];
cout<<endl;
}
}
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
//å
æ¾ç¤ºææå¦ççä¿¡æ¯å§
//æ¾ç¤ºrecordéææå¦ççæ绩
void display()
{
show_Table();
int i,j;
for(i = 1;i <= stuNum;i++)
{
//cout<<"å¦å·"<<"\t"<<"å§å"<<"\t"<<"æ§å«";
cout<<record[i].num<<"\t"<<record[i].name<<"\t"<<record[i].sex;
for(j = 0;j < SUBJECT_NUM;j++)
{
cout<<"\t"<<record[i].score[j];
}
cout<<endl;
}
cout<<endl;
}
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//éåº
void quit()
{
char choi;
cout<<"æ¨ç¡®å®è¦éåºå?"<<endl;
cout<<"请è¾å
¥æ¨çéæ©(Y/N) : ";
cin>>choi;
if((choi == 'Y')||(choi == 'y'))
{
cout<<"ç°å¨éåºå¦çä¿¡æ¯ç®¡çç³»ç»"<<endl;
exit(0);
}
//å¦æä¸æ¯éåº,åæ¥çéåå°ä¸»çé¢
else
{
cout<<endl;
menu_CMD();
}
}
è¿ä¸ªæ¯ååç... å¨C-Free 4.0éè·è¿ï¼å¯ä»¥æ£å¸¸è¿è¡
ä½ å¯ä»¥è¯çè·ä¸ä¸ï¼å¦ææä»ä¹é®é¢å¯ä»¥åæèç³»
温馨提示:答案为网友推荐,仅供参考