當前位置:編程學習大全網 - 源碼下載 - 數據結構 程序設計 用雙向循環鏈表建立壹個學生管理系統,要求實現插入,刪除,排序,修改等功能。

數據結構 程序設計 用雙向循環鏈表建立壹個學生管理系統,要求實現插入,刪除,排序,修改等功能。

用壹下我的吧

是我大壹時寫的

有什麽問題可以追問

#include<iostream.h>

#include<string.h>

typedef struct

{

char name[10];

long num;

float score;

}student;

void creat(student stu[]);

void insert(student stu[]);

void Delete(student stu[]);

void lookup(student stu[]);

void update(student stu[]);

void stat(student stu[]);

int length(student stu[]);

void print(student stu[]);

/*********************************

創建學生信息線性表

*********************************/

void creat(student stu[])

{

cout<<"請輸入學生人數:";

int n;

cin>>n;

cout<<"姓名"<<'\t'<<"學號"<<'\t'<<"成績"<<endl;

for(int i=1;i<=n;i++)

{

char newname[10];

long newnum;

float newscore;

cin>>newname;

strcpy(stu[i].name,newname);

cin>>newnum;

stu[i].num=newnum;

cin>>newscore;

stu[i].score=newscore;

}

strcpy(stu[i].name," ");

stu[i].num=0;

stu[i].score=0;

}

/*************************************

依次輸出線性表中的學生成績信息

*************************************/

void print(student stu[])

{

cout<<"姓名"<<'\t'<<"學號"<<'\t'<<"成績"<<'\n';

int i=1;

while(i<=length(stu))

{

cout<<stu[i].name<<'\t'<<stu[i].num<<'\t'<<stu[i].score<<'\n';

i++;

}

cout<<'\n';

}

/**********************************

根據學號查詢線性表中某個學生成績信息

**********************************/

void lookup(student stu[])

{

cout<<"請輸入妳要查詢的學號:";

long num;

cin>>num;

int i=1;

while(stu[i].num)

{

if(stu[i].num==num)

{

cout<<"姓名"<<'\t'<<"學號"<<'\t'<<"成績"<<'\n';

cout<<stu[i].name<<'\t'<<stu[i].num<<'\t'<<stu[i].score<<'\n';

break;

}

i++;

}

if(!stu[i].num)

{

cout<<"妳要查詢的學號不存在,請重新輸入!"<<'\n';

lookup(stu);

}

cout<<'\n';

}

/********************************

在線性表的某個位置上插入學生信息

********************************/

void insert(student stu[])

{

if(length(stu)==100)

{

cout<<"存儲空間已滿,不能進行插入操作!"<<'\n';

}

else

{

cout<<"請輸入要插入的位置:";

int m;

cin>>m;

int n=length(stu);

if(m>n+1)

{

cout<<"插入位置不正確,請重新插入!"<<'\n';

insert(stu);

}

else

{

for(int i=n+1;i>=m;i--)

{

strcpy(stu[i+1].name,stu[i].name);

stu[i+1].num=stu[i].num;

stu[i+1].score=stu[i].score;

}

cout<<"請依次輸入姓名,學號,成績"<<'\n';

char newname[10];

long newnum;

float newscore;

cin>>newname;

strcpy(stu[m].name,newname);

cin>>newnum;

stu[m].num=newnum;

cin>>newscore;

stu[m].score=newscore;

}

}

}

/*******************************************

查詢線性表中有效數據的長度

*******************************************/

int length(student stu[])

{

int i=1;

while(stu[i].num)

{

i++;

}

return (i-1);

}

/*****************************************

根據學號刪除線性表中對應的學生信息

*****************************************/

void Delete(student stu[])

{

cout<<"請輸入妳要刪除的學號:";

long num;

cin>>num;

int i=1;

while(stu[i].num)

{

if(stu[i].num==num)

{

int n=length(stu);

for(int j=i;j<n;j++)

{

strcpy(stu[i].name,stu[i+1].name);

stu[i].num=stu[i+1].num;

stu[i].score=stu[i+1].score;

}

strcpy(stu[j].name," ");

stu[j].num=0;

stu[j].score=0;

break;

}

i++;

}

if(!stu[i].num)

{

cout<<"妳要刪除的學號不存在,請重新輸入!"<<'\n';

Delete(stu);

}

}

/*****************************************

統計各成績段的學生信息

*****************************************/

void stat(student stu[])

{

cout<<"不及格的學生是:"<<'\n';

cout<<"姓名"<<'\t'<<"學號"<<'\t'<<"成績"<<'\n';

int i=1;

while(stu[i].num)

{

if(stu[i].score<60)

{

cout<<stu[i].name<<'\t'<<stu[i].num<<'\t'<<stu[i].score<<'\n';

}

i++;

}

cout<<'\n';

cout<<"成績為‘良’的學生是:"<<'\n';

cout<<"姓名"<<'\t'<<"學號"<<'\t'<<"成績"<<'\n';

i=1;

while(stu[i].num)

{

if(stu[i].score>=60 && stu[i].score<75)

{

cout<<stu[i].name<<'\t'<<stu[i].num<<'\t'<<stu[i].score<<'\n';

}

i++;

}

cout<<'\n';

cout<<"成績為‘中’的學生是:"<<'\n';

cout<<"姓名"<<'\t'<<"學號"<<'\t'<<"成績"<<'\n';

i=1;

while(stu[i].num)

{

if(stu[i].score>=75 && stu[i].score<90)

{

cout<<stu[i].name<<'\t'<<stu[i].num<<'\t'<<stu[i].score<<'\n';

}

i++;

}

cout<<'\n';

cout<<"成績為‘優’的學生是:"<<'\n';

cout<<"姓名"<<'\t'<<"學號"<<'\t'<<"成績"<<'\n';

i=1;

while(stu[i].num)

{

if(stu[i].score>=90)

{

cout<<stu[i].name<<'\t'<<stu[i].num<<'\t'<<stu[i].score<<'\n';

}

i++;

}

cout<<'\n';

}

/********************************************

修改線性表中某個位置的學生信息

********************************************/

void update(student stu[])

{

cout<<"請輸入要修改的位置:";

int m;

cin>>m;

if(m>length(stu))

{

cout<<"妳要修改的位置不存在,請重新輸入!"<<'\n';

update(stu);

}

else

{

cout<<"請依次輸入更改後的姓名,學號,成績"<<'\n';

char newname[10];

long newnum;

float newscore;

cin>>newname;

strcpy(stu[m].name,newname);

cin>>newnum;

stu[m].num=newnum;

cin>>newscore;

stu[m].score=newscore;

}

}

/******************************************************

主函數,調用類student的成員函數以實現相應功能

******************************************************/

void main()

{

cout<<"首先建立學生管理系統!"<<'\n';

student stu[101];

creat(stu);

print(stu);

cout<<"len:"<<length(stu)<<endl;

int j=100;

cout<<"請選擇您要進行的操作(1為插入,2為刪除,3為查找,4為修改,5為統計,0為取消操作)";

while(j)

{

cout<<"請您選擇要進行的操作:";

cin>>j;

switch(j)

{

case 1:

{

insert(stu);

print(stu);

break;

}

case 2:

{

Delete(stu);

print(stu);

break;

}

case 3:

{

lookup(stu);

break;

}

case 4:

{

update(stu);

print(stu);

break;

}

case 5:

{

stat(stu);

break;

}

default:

break;

}

}

cout<<"線性表中***有"<<length(stu)<<"個學生";

}

  • 上一篇:《劍俠世界》iOS版遊戲蜂窩輔助教程
  • 下一篇:開發壹個小程序需要多少錢_開發壹個小程序需要多少錢聚頂科技好
  • copyright 2024編程學習大全網