# include & ltstdlib.h & gt
# include & ltstring.h & gt
# include & ltmalloc.h & gt
#define INIT_SIZE 10
#定義incr _ SIZE 10
#定義主題_編號3
#定義鏡頭3
void show _ Start();
void show _ Table();
void add record();
void Info _ delete();
void deleteRecord();
void delete _ Num(int);
void delete _ Name(char tarName[]);
void Info _ modify();
void modify record();
void modify _ Num(int);
void modify _ Name(char[]);
void Info _ query();
void query record();
void query _ Num(int);
void query _ Name(char[]);
void顯示();
void quit();
void menu _ CMD();
Char *subject[SUBJECT_NUM] = { "高代","淑芬"," C語言" };
結構學生
{
int num
char name[20];
迷人的性愛;
浮動分數[SUBJECT _ NUM];
};
//struct STUDENT stu[LEN+1];
//STUDENT * record =(STUDENT *)malloc(sizeof(STUDENT)* INIT _ SIZE);
int static stuNum = 0;
//我們暫時定義三個學生。...
學生*記錄=(學生*)malloc(sizeof(學生)* INIT _ SIZE);;
int main()
{
//record =(STUDENT *)malloc(SIZE of(STUDENT)* INIT _ SIZE);
//STUDENT * record =(STUDENT *)malloc(sizeof(STUDENT)* INIT _ SIZE);
/*
記錄[1]。num = 1001;
strcpy(記錄[1])。姓名,“傑森”);
記錄[1]。sex = ' M
記錄[1]。得分[0]= 85.0;
記錄[1]。得分[1]= 90.0;
記錄[1]。得分[2]= 95.0;
記錄[2]。num = 1002;
strcpy(記錄[2])。姓名,“傑瑞”);
記錄[2]。sex = ' M
記錄[2]。得分[0]= 85.0;
記錄[2]。得分[1]= 90.0;
記錄[2]。得分[2]= 95.0;
記錄[3]。num = 1003;
strcpy(記錄[3])。姓名,“傑西”);
記錄[3]。性別= ' F
記錄[3]。得分[0]= 85.0;
記錄[3]。得分[1]= 90.0;
記錄[3]。得分[2]= 95.0;
*/
/*
info _ modify();
int鍵;
cout & lt& lt"請輸入您的選擇:";
CIN & gt;& gt關鍵;
if(key == 1)
{
int targetNum
cout & lt& lt"請輸入您要修改的學生的學號:";
CIN & gt;& gttargetNum
modify _ Num(target Num);
cout & lt& ltendl
顯示();
}
if(key == 2)
{
char target name[20];
cout & lt& lt請輸入您要修改的學生姓名:
CIN & gt;& gttargetName
modify_Name(目標名稱);
cout & lt& ltendl
顯示();
}
if(key == 3)
{
退出(0);
}
*/
show _ Start();
menu _ CMD();
返回0;
}
//修改後也要顯示。
void show_Start()
{
//cout & lt;& ltendl
cout & lt& lt“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *”& lt;& ltendl
cout & lt& lt“這是壹個”
cout & lt& lt“學生成績管理系統”
cout & lt& lt“學生成績可以管理”
cout & lt& lt“歡迎使用”< & ltendl
cout & lt& lt“傑森制造”& lt& ltendl
cout & lt& lt“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *”& lt;& ltendl
}
//顯示表頭信息,即:學號、姓名、性別、學長代、分數、C語言。
void show_Table()
{
cout & lt& lt“學號”< & lt" \ t " & lt& lt"名稱"
cout & lt& lt" \ t " & lt& lt主題[0]& lt;& lt" \ t " & lt& ltsubject[1]& lt;& lt" \ t " & lt& lt主題[2];
cout & lt& ltendl
}
void menu_CMD()
{
int鍵;
while(1)
{
cout & lt& lt"1.添加學生信息"
cout & lt& lt"2.刪除學生信息"
cout & lt& lt"3.修改學生信息"
cout & lt& lt"4.查詢學生信息”
cout & lt& lt"5.顯示學生信息"
cout & lt& lt"6.退出”
cout & lt& lt"請輸入您的選擇:";
CIN & gt;& gt關鍵;
while(1)
{
如果((key & lt1)| |(key & gt;6))
{
int鍵;
cout & lt& lt“您輸入錯誤,請重新輸入!”& lt& ltendl
cout & lt& lt請選擇(1-5):;
CIN & gt;& gt關鍵;
}
其他
{
打破;
}
}
開關(鑰匙)
{
案例1:
add record();
打破;
案例二:
deleteRecord();
打破;
案例三:
modify record();
打破;
案例4:
query record();
打破;
案例5:
顯示();
打破;
案例6:
quit();
打破;
}
}
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
//添加學生信息
void addRecord()
{
if(stuNum == 0)
{
cout & lt& lt“沒有記錄。現在創建壹個新表!”& lt& ltendl
stun um++;
}
其他
{
cout & lt& lt"現在在當前表格的末尾添加新的信息!"& lt& ltendl
stun um++;
}
//如果數組空間不足,重新申請空間。
if(stuNum & gt;初始化大小)
{
cout & lt& lt"內存空間不夠,現在申請壹個新的內存空間!"& lt& ltendl
record =(STUDENT *)realloc(record,(INIT _ SIZE+incr _ SIZE)* sizeof(STUDENT));
cout & lt& lt“空間申請完成!”& lt& ltendl
}
cout & lt& lt您現在想添加壹組新的信息,確定嗎?& lt& ltendl
cout & lt& lt"請輸入您的選擇(是/否):";
char choi
CIN & gt;& gt崔;
if((choi == 'Y')||(choi == 'y '))
{
cout & lt& lt"請輸入您的學號:";
CIN & gt;& gt記錄[stuNum]。num
cout & lt& lt請輸入壹個名稱:“;
CIN & gt;& gt記錄[stuNum]。姓名;
cout & lt& lt“請輸入性別(m為男性,f為女性):”;
CIN & gt;& gt記錄[stuNum]。性;
int I;
for(I = 0;我& lt主題數量;i++)
{
cout & lt& lt"請輸入"
CIN & gt;& gt記錄[stuNum]。得分[I];
}
}
if((choi == 'N')||(choi == 'n '))
{
cout & lt& lt"停止添加新的學生信息!"& lt& ltendl
cout & lt& ltendl
}
cout & lt& lt“已經有了”
cout & lt& ltendl
}
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//晚上完成刪除信息。...
//顯示deleteRecord的頭信息。
void Info_delete()
{
cout & lt& lt"請輸入刪除方法:"
cout & lt& lt"1.按學號刪除”
cout & lt& lt"2.按名稱刪除"
cout & lt& lt"3.退出並刪除"
}
//刪除學生信息,包括兩個子功能。
void deleteRecord()
{
int鍵;
cout & lt& ltendl
info _ delete();
cout & lt& lt"請輸入您的選擇:";
CIN & gt;& gt關鍵;
if(key == 1)
{
int targetNum
cout & lt& lt"請輸入您要刪除的學生的學號:";
CIN & gt;& gttargetNum
//按學號刪除
delete _ Num(target Num);
cout & lt& ltendl
}
if(key == 2)
{
char target name[20];
cout & lt& lt請輸入您要刪除的學生的姓名:
CIN & gt;& gttargetName
//按名稱刪除
delete _ Name(target Name);
cout & lt& ltendl
}
if(key == 3)
{
while(1)
{
menu _ CMD();
}
}
}
//根據學號刪除學生信息。
//只需要完成刪除操作,不需要輸出。輸出操作可以在主菜單中執行。
void delete_Num(int tarNum)
{
int I;
for(I = 1;我& lt= stuNumi++)
{
如果(記錄[i]。num == tarNum)
{
//刪除將在兩種情況下討論。
//1.要刪除的學生信息是最後壹條。
//2.要刪除的學生信息不是最後壹個。
//第壹種情況,要刪除的學生是最後壹個。
if(i = stuNum)
{
cout & lt& lt"您要刪除的學生信息是:"
show _ Table();
cout & lt& lt記錄[i]。num & lt& lt" \ t " & lt& lt記錄[i]。名稱& lt& lt" \ t " & lt& lt記錄[i]。性& lt& lt" \t "
& lt& lt記錄[i]。分數[0]& lt;& lt記錄[i]。分數[1]& lt;& lt" \ t " & lt& lt記錄[i]。得分[2];
cout & lt& ltendl
cout & lt& ltendl & lt& lt"刪除的學生信息表是:"
show _ Table();
for(int I = 1;我& lt= stuNum-1;i++)
{
cout & lt& lt記錄[i]。num & lt& lt" \ t " & lt& lt記錄[i]。名稱& lt& lt" \ t " & lt& lt記錄[i]。性;
for(int j = 0;j & lt主題數量;j++)
{
cout & lt& lt" \ t " & lt& lt記錄[i]。score[j];
}
cout & lt& ltendl
}
//顯示信息要放在後面。
/*
stuNum-;
cout & lt& lt“現在只剩下”
cout & lt& ltendl
*/
}
//2.第二種情況,要刪除的學生不是最後壹個。
如果(我!= stuNum)
{
cout & lt& lt"您要刪除的學生信信息是:"
show _ Table();
cout & lt& lt記錄[i]。num & lt& lt" \ t " & lt& lt記錄[i]。名稱& lt& lt" \ t " & lt& lt記錄[i]。性& lt& lt" \t "
& lt& lt記錄[i]。分數[0]& lt;& lt" \ t " & lt& lt記錄[i]。分數[1]& lt;& lt" \ t " & lt& lt記錄[i]。得分[2];
for(int j = I+1;j & lt= stuNumj++)
{
記錄[j-1] =記錄[j];
}
//然後完成輸出。
cout & lt& ltendl
cout & lt& lt"刪除的學生信息表是:"
show _ Table();
for(int I = 1;我& lt= stuNum-1;i++)
{
cout & lt& lt記錄[i]。num & lt& lt" \ t " & lt& lt記錄[i]。名稱& lt& lt" \ t " & lt& lt記錄[i]。性;
for(int j = 0;j & lt主題數量;j++)
{
cout & lt& lt" \ t " & lt& lt記錄[i]。score[j];
}
cout & lt& ltendl
}
/*
stuNum-;
cout & lt& lt“現在只剩下”
cout & lt& ltendl
*/
}
stuNum-;
cout & lt& lt“現在還剩下”
cout & lt& ltendl
}
}
}
/*
//方法同上
void delete_Name(char tarName[])
{
int I;
for(I = 1;我& lt= stuNumi++)
{
if(strcmp(record[i])。name,tarName) == 0)
{
//刪除將在兩種情況下討論。
//1.要刪除的學生信息是最後壹條。
//2.要刪除的學生信息不是最後壹個。
//情況壹:要刪除的學生是最後壹個。
if(i = stuNum)
{
cout & lt& lt"您要刪除的學生信息是:"
show _ Table();
cout & lt& lt記錄[i]。num & lt& lt" \ t " & lt& lt記錄[i]。名稱& lt& lt" \ t " & lt& lt記錄[i]。性& lt& lt" \t "
& lt& lt記錄[i]。分數[0]& lt;& lt記錄[i]。分數[1]& lt;& lt" \ t " & lt& lt記錄[i]。得分[2];
cout & lt& ltendl
cout & lt& ltendl & lt& lt"刪除的學生信息表是:"
show _ Table();
for(int I = 1;我& lt= stuNum-1;i++)
{
cout & lt& lt記錄[i]。num & lt& lt" \ t " & lt& lt記錄[i]。名稱& lt& lt" \ t " & lt& lt記錄[i]。性;
for(int j = 0;j & lt主題數量;j++)
{
cout & lt& lt" \ t " & lt& lt記錄[i]。score[j];
}
cout & lt& ltendl
}
}
//第二種情況,要刪除的學生不是最後壹個。
如果(我!= stuNum)
{
cout & lt& lt"您要刪除的學生信信息是:"
show _ Table();
cout & lt& lt記錄[i]。num & lt& lt" \ t " & lt& lt記錄[i]。名稱& lt& lt" \ t " & lt& lt記錄[i]。性& lt& lt" \t "
& lt& lt記錄[i]。分數[0]& lt;& lt" \ t " & lt& lt記錄[i]。分數[1]& lt;& lt" \ t " & lt& lt記錄[i]。得分[2];
//整體前移壹位。
for(int j = I+1;j & lt= stuNumj++)
{
記錄[j-1] =記錄[j];
}
cout & lt& ltendl
//然後完成輸出。
cout & lt& lt"刪除的學生信息表是:"
show _ Table();
for(int I = 1;我& lt= stuNum-1;i++)
{
cout & lt& lt記錄[i]。num & lt& lt" \ t " & lt& lt記錄[i]。名稱& lt& lt" \ t " & lt& lt記錄[i]。性;
for(int j = 0;j & lt主題數量;j++)
{
cout & lt& lt" \ t " & lt& lt記錄[i]。score[j];
}
cout & lt& ltendl
}
cout & lt& ltendl
}
}
}
}
*/
void delete_Name(char tarName[])
{
int I;
for(I = 1;我& lt= stuNumi++)
{
//刪除將在兩種情況下討論。
//1.要刪除的學生信息是最後壹條。
//2.要刪除的學生信息不是最後壹個。
//當要刪除的學生是最後壹個時,直接輸出之前LEN-1學生的信息。
if(strcmp(record[i])。name,tarName) == 0)
{
if(i == stuNum)
{
cout & lt& lt"您要刪除的學生信息是:"
show _ Table();
cout & lt& lt記錄[i]。num & lt& lt" \ t " & lt& lt記錄[i]。名稱& lt& lt" \ t " & lt& lt記錄[i]。性& lt& lt" \t "
& lt& lt記錄[i]。分數[0]& lt;& lt" \ t " & lt& lt記錄[i]。分數[1]& lt;& lt" \ t " & lt& lt記錄[i]。得分[2];
cout & lt& ltendl
cout & lt& lt"刪除的學生信息表是:"
show _ Table();
for(int I = 1;我& lt= stuNum-1;i++)
{
cout & lt& lt記錄[i]。num & lt& lt" \ t " & lt& lt記錄[i]。名稱& lt& lt" \ t " & lt& lt記錄[i]。性;
for(int j = 0;j & lt主題數量;j++)
{
cout & lt& lt" \ t " & lt& lt記錄[i]。score[j];
}
cout & lt& ltendl
}
/*
stuNum-;
cout & lt& lt“現在只剩下”
cout & lt& ltendl
*/
}
//當要刪除的學生不是最後壹個時,整體前移壹位。
如果(我!= stuNum)
{
cout & lt& lt"您要刪除的學生信息是:"
show _ Table();
cout & lt& lt記錄[i]。num & lt& lt" \ t " & lt& lt記錄[i]。名稱& lt& lt" \ t " & lt& lt記錄[i]。性& lt& lt”\ t”;
cout & lt& lt記錄[i]。分數[0]& lt;& lt" \ t " & lt& lt記錄[i]。分數[1]& lt;& lt" \ t " & lt& lt記錄[i]。得分[2];
cout & lt& ltendl
//整體前移壹位。
for(int j = I+1;j & lt= stuNumj++)
{
記錄[j-1] =記錄[j];
}
//然後輸出
cout & lt& ltendl
cout & lt& lt"刪除的學生信息表是:"
show _ Table();
for(int I = 1;我& lt= stuNum-1;i++)
{
cout & lt& lt記錄[i]。num & lt& lt" \ t " & lt& lt記錄[i]。名稱& lt& lt" \ t " & lt& lt記錄[i]。性;
for(int j = 0;j & lt主題數量;j++)
{
cout & lt& lt" \ t " & lt& lt記錄[i]。score[j];
}
cout & lt& ltendl
}
/*
stuNum-;
cout & lt& lt“現在只剩下”
cout & lt& ltendl
*/
}
stuNum-;
cout & lt& lt“現在只剩下”
cout & lt& ltendl
}
}
}
/*****************************************************************************
******************************************************************************/
//顯示modifyRecord的頭信息。
void Info_modify()
{
cout & lt& lt"請輸入修改方法:"
cout & lt& lt"1.根據學號修改"
cout & lt& lt"2.按名稱修改"
cout & lt& lt"3.退出修改"
}
//查詢學生成績,當然包括兩個子功能。
void modifyRecord()
{
int鍵;
cout & lt& ltendl
info _ modify();
cout & lt& lt"請輸入您的選擇:";
CIN & gt;& gt關鍵;
//根據學號修改
if(key == 1)
{
int targetNum
cout & lt& lt"請輸入您要修改的學生的學號:";
CIN & gt;& gttargetNum
modify _ Num(target Num);
cout & lt& ltendl
//顯示();
}
//按名稱修改
if(key == 2)
{
char target name[20];
cout & lt& lt請輸入您要修改的學生姓名:
CIN & gt;& gttargetName
modify_Name(目標名稱);
cout & lt& ltendl
//顯示();
}
//退出修改
if(key == 3)
{
while(1)
{
menu _ CMD();
}
}
}
//根據學號修改
void modify_Num(整數)
{
int I;
for(I = 1;我& lt= stuNumi++)
{
如果(記錄[i]。num == tarNum)
{
cout & lt& ltendl & lt& lt"請修改該學生的信息"
cout & lt& lt"請輸入學號:";
CIN & gt;& gt記錄[i]。num
cout & lt& lt"請輸入學生的姓名:";
CIN & gt;& gt記錄[i]。姓名;
cout & lt& lt"請輸入學生的性別:";
CIN & gt;& gt記錄[i]。性;
cout & lt& lt"請輸入"
CIN & gt;& gt記錄[i]。得分[0];
cout & lt& lt"請輸入"
CIN & gt;& gt記錄[i]。得分[1];
cout & lt& lt"請輸入"
CIN & gt;& gt記錄[i]。得分[2];
}
}
}
//按名稱修改
void modify_Name(char tarName[])
{
int I;
for(I = 1;我& lt= stuNumi++)
{
if(strcmp(record[i])。name,tarName) == 0)
{
cout & lt& ltendl & lt& lt"請修改該學生的信息:"
cout & lt& lt"請輸入學號:";
CIN & gt;& gt記錄[i]。num
cout & lt& lt"請輸入學生的姓名:";
CIN & gt;& gt記錄[i]。姓名;
cout & lt& lt"請輸入學生的性別:";
CIN & gt;& gt記錄[i]。性;
cout & lt& lt"請輸入"
CIN & gt;& gt記錄[i]。得分[0];
cout & lt& lt"請輸入"
CIN & gt;& gt記錄[i]。得分[1];
cout & lt& lt"請輸入"
CIN & gt;& gt記錄[i]。得分[2];
}
}
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
//顯示queryRecord的頭信息。
void Info_query()
{
cout & lt& lt"請輸入查詢方法:"
cout & lt& lt"1.按學號查詢"
cout & lt& lt"2.按名稱查詢"
cout & lt& lt"3.退出查詢"
}
//查詢學生信息queryRecord
void queryRecord()
{
int鍵;
cout & lt& ltendl
info _ query();
cout & lt& lt"請輸入您的選擇:";
CIN & gt;& gt關鍵;
if(key == 1)
{
int targetNum
cout & lt& lt"請輸入您要查詢的學生的學號:";
CIN & gt;& gttargetNum
query _ Num(target Num);
cout & lt& ltendl
}
if(key == 2)
{
char target name[20];
cout & lt& lt"請輸入您要查詢的學生的學號:";
CIN & gt;& gttargetName
query _ Name(target Name);
cout & lt& ltendl
}
//退出查詢並返回主菜單。...
if(key == 3)
{
while(1)
{
menu _ CMD();
}
}
}
//按學號查詢
void query_Num(int tarNum)
{
int I;
for(I = 1;我& lt= stuNumi++)
{
如果(記錄[i]。num == tarNum)
{
//如果表中有該學生的信息,就輸出該學生的信息。
//輸出學生的信息。
cout & lt& lt"學生的信息如下:"
//顯示標題信息
show _ Table();
//顯示學生的具體信息。
cout & lt& lt記錄[i]。num & lt& lt" \ t " & lt& lt記錄[i]。名稱& lt& lt" \ t " & lt& lt記錄[i]。性;
cout & lt& lt" \ t " & lt& lt記錄[i]。分數[0]& lt;& lt" \ t " & lt& lt記錄[i]。分數[1]& lt;& lt" \ t " & lt& lt記錄[i]。得分[2];
cout & lt& ltendl
}
}
}
//按名稱查詢
void query_Name(char tarName[])
{
int I;
for(I = 1;我& lt= stuNumi++)
{
if(strcmp(record[i])。name,tarName) == 0)
{
cout & lt& lt"學生的信息如下:"
show _ Table();
cout & lt& lt記錄[i]。num & lt& lt" \ t " & lt& lt記錄[i]。名稱& lt& lt" \ t " & lt& lt記錄[i]。性;
cout & lt& lt" \ t " & lt& lt記錄[i]。分數[0]& lt;& lt" \ t " & lt& lt記錄[i]。分數[1]& lt;& lt" \ t " & lt& lt記錄[i]。得分[2];
cout & lt& ltendl
}
}
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
//首先顯示所有學生的信息。
//顯示記錄中所有學生的分數。
空顯示()
{
show _ Table();
int i,j;
for(I = 1;我& lt= stuNumi++)
{
//cout & lt;& lt“學號”< & lt" \ t " & lt& lt"名稱"
cout & lt& lt記錄[i]。num & lt& lt" \ t " & lt& lt記錄[i]。名稱& lt& lt" \ t " & lt& lt記錄[i]。性;
for(j = 0;j & lt主題數量;j++)
{
cout & lt& lt" \ t " & lt& lt記錄[i]。score[j];
}
cout & lt& ltendl
}
cout & lt& ltendl
}
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//退出
void退出()
{
char choi
cout & lt& lt“妳確定要退出嗎?”& lt& ltendl
cout & lt& lt"請輸入您的選擇(是/否):";
CIN & gt;& gt崔;
if((choi == 'Y')||(choi == 'y '))
{
cout & lt& lt“現在退出學生信息管理系統”< & ltendl
退出(0);
}
//如果不是,則返回主界面。
其他
{
cout & lt& ltendl
menu _ CMD();
}
}
這個是原創的...運行在C-Free 4.0中,工作正常。
可以試試跑,有問題可以聯系我。