當前位置:股票大全官網 - 資訊咨詢 - 學生信息管理系統的c++源代碼

學生信息管理系統的c++源代碼

# include & ltiostream & gt

# 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中,工作正常。

可以試試跑,有問題可以聯系我。