#include stdio.h
公司主營業(yè)務(wù):網(wǎng)站制作、成都做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出長豐免費(fèi)做網(wǎng)站回饋大家。
#include malloc.h
#include stdlib.h
#include string.h
#include conio.h
#include windows.h
#define null '\0'
int shoudsave=0;
struct student /*聲明一個結(jié)構(gòu)體類型struct student*/
{
char clas[20]; /*定義成員班級號*/
char name[20]; /*定義成員學(xué)生姓名*/
char classnum[20]; /*定義成員學(xué)生學(xué)號*/
float basis; /*定義成員基礎(chǔ)學(xué)分*/
float major; /*定義成員專業(yè)學(xué)分*/
float elective; /*定義成員選修學(xué)分*/
float humanity; /*定義成員人文學(xué)分*/
float laboratory; /*定義成員實(shí)驗(yàn)學(xué)分*/
float sum; /*定義成員學(xué)分總和*/
float average; /*定義成員平均學(xué)分*/
};
typedef struct node /*聲明一個節(jié)點(diǎn)類型struct node*/
{
struct student data; /*定義節(jié)點(diǎn)數(shù)據(jù)*/
struct node *next; /*定義節(jié)點(diǎn)指針*/
}Node,*Link;
void menu1() /*輸出系統(tǒng)名稱及簡介*/
{
printf("\n 學(xué)生學(xué)分管理系統(tǒng) \n");
printf("********************************************************************************");
printf("說明:本系統(tǒng)旨在幫助師生方便,快捷地統(tǒng)計(jì),管理學(xué)分。您可以進(jìn)行輸入,修改,查看,排序等操作,界面清爽,操作簡單,歡迎您的使用。\n");
printf("********************************************************************************");
}//menu1
void menu2() /*輸出主菜單*/
{
printf(" 菜 單 \n");
printf("\t\t0:退出本次登入\t\t\t5:清除屏幕內(nèi)容\n");
printf("\t\t1:輸入學(xué)生信息\t\t\t6:修改學(xué)生學(xué)分\n");
printf("\t\t2:刪除學(xué)生信息\t\t\t7:顯示學(xué)生學(xué)分\n");
printf("\t\t3:查詢學(xué)生學(xué)分\t\t\t8:統(tǒng)計(jì)學(xué)生信息\n");
printf("\t\t4:排序?qū)W生學(xué)分\t\t\t9:保存學(xué)生學(xué)分\n");
}//menu2
void menu3() /*輸出排序菜單,供void sort(Link l)函數(shù)調(diào)用*/
{
printf("\n\t\tA:基礎(chǔ)學(xué)分\t\t\tB:專業(yè)學(xué)分\n");
printf("\t\tC:選修學(xué)分\t\t\tD:人文學(xué)分\n");
printf("\t\tE:實(shí)驗(yàn)學(xué)分\t\t\tF:學(xué)分總和\n");
printf("\t\tG:平均學(xué)分\t\t\t\n");
printf("\n請選則您要排序的課程代碼:");
}//menu3
void menu4() /*輸出菜單上下限制符*/
{
printf("================================================================================");
}//menu4
void title() /*輸出顯示菜單,供void display(Link l)函數(shù)調(diào)用*/
{
printf(" 班級\t學(xué)號\t姓名\t基礎(chǔ)\t專業(yè)\t選修\t人文\t試驗(yàn)\t總分\t平均\n");
}//title
void data(Node *p,char find[]) /*輸出按姓名查找的結(jié)果,供void search(Link l)函數(shù)調(diào)用*/
{
if(strcmp(p-data.name,find)==0)
printf(" %s\t %s\t%s\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\n",p-data.clas,p-data.classnum,p-data.name,p-data.basis,p-data.major,p-data.elective,p-data.humanity,p-data.laboratory,p-data.sum,p-data.average);
}//data
void data1(Node *p) /*輸出按學(xué)號查找的結(jié)果,供void search(Link l)函數(shù)調(diào)用*/
{
printf(" %s\t %s\t%s\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\n",p-data.clas,p-data.classnum,p-data.name,p-data.basis,p-data.major,p-data.elective,p-data.humanity,p-data.laboratory,p-data.sum,p-data.average);
}//data1
void data2(Node *p,char find[]) /*輸出按班級查找的結(jié)果,供void search(Link l)函數(shù)調(diào)用*/
{
if(strcmp(p-data.clas,find)==0)
printf(" %s\t %s\t%s\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\n",p-data.clas,p-data.classnum,p-data.name,p-data.basis,p-data.major,p-data.elective,p-data.humanity,p-data.laboratory,p-data.sum,p-data.average);
}//data2
Node* Locate(Link l,char find[],char match[]) /*查找匹配函數(shù)定義,該函數(shù)用于定位鏈表中符合要求的節(jié)點(diǎn),并返回該指針*/
{
Node *r; /*定義節(jié)點(diǎn)指針r*/
if(strcmp(match,"classnum")==0) /*按學(xué)號查詢*/
{
r=l-next; /*初始化r,指向第一個節(jié)點(diǎn)*/
while(r!=NULL) /*r非空*/
{
if(strcmp(r-data.classnum,find)==0) /*查詢成功*/
return r;
r=r-next; /*節(jié)點(diǎn)后移*/
} //while
} //if
else if(strcmp(match,"name")==0) /*按姓名查詢*/
{
r=l-next; /*初始化r,指向第一個節(jié)點(diǎn)*/
while(r!=NULL) /*r非空*/
{
if(strcmp(r-data.name,find)==0) /*查詢成功*/
return r;
r=r-next; /*節(jié)點(diǎn)后移*/
} //while
} //else if
else if(strcmp(match,"clas")==0) /*按班級號查詢*/
{
r=l-next; /*初始化r,指向第一個節(jié)點(diǎn)*/
while(r!=NULL) /*r非空*/
{
if(strcmp(r-data.clas,find)==0) /*查詢成功*/
return r;
r=r-next; /*節(jié)點(diǎn)后移*/
}//while
}//else if
return 0;
}//Locate
void input(Link l) /*輸入函數(shù)定義,用于增加學(xué)生信息*/
{
char clas[10];
Node *r,*p; /*定義節(jié)點(diǎn)r和p*/
r=l; /*將r指向頭結(jié)點(diǎn)*/
while(r-next!=NULL)
r=r-next; /*將指針置于最末尾*/
while(l)
{
printf("\n友情提示:輸入'#'返回上一菜單\n");
printf("\n輸入學(xué)生的班級號:");
scanf("%s",clas);
if(strcmp(clas,"#")==0)
break;
p=(Node *)malloc(sizeof(Node)); /*生成新的節(jié)點(diǎn)*/
strcpy(p-data.clas,clas); /*將clas字符串復(fù)制到p-data.clas中*/
printf("輸入學(xué)生的學(xué) 號:");
scanf("%s",p-data.classnum);
getchar();
printf("輸入學(xué)生的姓 名:");
scanf("%s",p-data.name);
getchar();
printf("輸入學(xué)生的基礎(chǔ)分:");
scanf("%3.1f",p-data.basis);
getchar();
printf("輸入學(xué)生的專業(yè)分:");
scanf("%3.1f",p-data.major);
getchar();
printf("輸入學(xué)生的選修分:");
scanf("%3.1f",p-data.elective);
getchar();
printf("輸入學(xué)生的人文分:");
scanf("%3.1f",p-data.humanity);
getchar();
printf("輸入學(xué)生的實(shí)驗(yàn)分:");
scanf("%3.1f",p-data.laboratory);
getchar();
p-data.sum=p-data.basis+p-data.major+p-data.elective+p-data.humanity+p-data.laboratory; /*計(jì)算學(xué)分總和*/
p-data.average=p-data.sum/5; /*計(jì)算平均學(xué)分*/
p-next=NULL; /*p節(jié)點(diǎn)的下一個節(jié)點(diǎn)為空*/
r-next=p; /*節(jié)點(diǎn)前移*/
r=p;
}//while
}//input
void delet(Link l) /*刪除函數(shù)定義*/
{
char find[10];
Node *p,*r; /*定義節(jié)點(diǎn)r和p*/
if(!l-next) /*刪除位置不合理*/
{ printf("\n\a對不起,無信息可刪除!");
printf("\n");
return;
}//if
printf("\n請輸入要刪除學(xué)生的學(xué)號:");
scanf("%s",find);
p=Locate(l,find,"classnum");
if(p)
{ r=l; /*r指向頭結(jié)點(diǎn)*/
while(r-next!=p) /*r的下一個節(jié)點(diǎn)不是p,一直循環(huán)*/
r=r-next; /*順指針向后查找,直到r指向p的前一個節(jié)點(diǎn)*/
r-next=p-next; /*刪除節(jié)點(diǎn)p*/
free(p); /*釋放節(jié)點(diǎn)p*/
printf("\n\a系統(tǒng)提示:信息刪除成功!\n");
shoudsave=1; /*保存資料*/
}//if
else
{ printf("\n\a對不起,無信息可刪除!");
printf("\n");
}//else
}//delet
void search(Link l) /*查詢函數(shù)定義*/
{
char temp; /*定義單字符temp*/
char find[10]; /*定義字符串find[]*/
Node *p; /*定義節(jié)點(diǎn)p*/
if(!l-next)
{
printf("\n\a對不起,無信息可查詢!");
printf("\n");
return;
}//if
printf("\n\t\t1:按學(xué)號查詢\t 2:按姓名查詢\t 3:按班級查詢\n");
printf("\n請輸入您要查詢的方式:");
scanf("%s",temp);
if(temp!='1' temp!='2' temp!='3')
printf("\n\a\a系統(tǒng)提示:您輸入錯誤!\n");
else if(temp=='1')
{
printf("\n請輸入要查詢的學(xué)號:");
scanf("%s",find);
p=Locate(l,find,"classnum"); /*按學(xué)號進(jìn)行查找匹配*/
}//else if
else if(temp=='2')
{
printf("\n請輸入要查詢的姓名:");
scanf("%s",find);
p=Locate(l,find,"name"); /*按名字進(jìn)行查找匹配*/
}//else if
else if(temp=='3')
{
printf("\n請輸入您要查詢的班級:");
scanf("%s",find);
p=Locate(l,find,"clas"); /*按班級號進(jìn)行查找匹配*/
}//else if
if(p)
{
printf("\n ==============查詢結(jié)果==============\n");
menu4();
title();
if(temp=='1')
data1(p); /*輸出按學(xué)號查找的結(jié)果*/
else if(temp=='2')
while(p)
{
data(p,find); /*輸出按名字查找的結(jié)果*/
p=p-next; /*節(jié)點(diǎn)后移*/
}//while
else if(temp=='3')
while(p)
{
data2(p,find); /*輸出按班級號查找的結(jié)果*/
p=p-next; /*節(jié)點(diǎn)后移*/
}//while
menu4();
}//if
else
{
printf("\n\a對不起,無信息可查詢!");
printf("\n");
}//else
}//search
Link sortH(Link l,char ch) /*分類排序函數(shù)定義*/
{
Node *p,*q,*wei,*s,*p1; /*定義節(jié)點(diǎn)p,q,wei,s,p1*/
wei=NULL; /*將尾節(jié)點(diǎn)置空*/
char temp;
temp=ch;
if(!l-next)
{
printf("\n\a對不起,無信息可排序!");
printf("\n");
return 0;
}//if
while(l-next!=wei)
{
p=l;
q=p-next;
while(q-next!=wei)
{
if(temp=='A') /*按基礎(chǔ)學(xué)分由高到低進(jìn)行排序*/
{
if(p-next-data.basisq-next-data.basis)
{
s=q-next;
p-next=q-next;
q-next=q-next-next;
p-next-next=q;
q=s;
}//if
}//if
else if(temp=='B') /*按專業(yè)學(xué)分由高到低進(jìn)行排序*/
{
if(p-next-data.majorq-next-data.major)
{
s=q-next;
p-next=q-next;
q-next=q-next-next;
p-next-next=q;
q=s;
}//if
}//else if
else if(temp=='C') /*按選修學(xué)分由高到低進(jìn)行排序*/
{
if(p-next-data.electiveq-next-data.elective)
{
s=q-next;
p-next=q-next;
q-next=q-next-next;
p-next-next=q;
q=s;
}//if
}//else if
else if(temp=='D') /*按人文學(xué)分由高到低進(jìn)行排序*/
{
if(p-next-data.humanityq-next-data.humanity)
{
s=q-next;
p-next=q-next;
q-next=q-next-next;
p-next-next=q;
q=s;
}//if
}//else if
else if(temp=='E') /*按實(shí)驗(yàn)學(xué)分由高到低進(jìn)行排序*/
{
if(p-next-data.laboratoryq-next-data.laboratory)
{
s=q-next;
p-next=q-next;
q-next=q-next-next;
p-next-next=q;
q=s;
}//if
}//else if
else if(temp=='F') /*按學(xué)分總和由高到低進(jìn)行排序*/
{ if(p-next-data.sumq-next-data.sum)
{
s=q-next;
p-next=q-next;
q-next=q-next-next;
p-next-next=q;
q=s;
}//if
}//else if
else if(temp=='G') /*按平均學(xué)分由高到低進(jìn)行排序*/
{
if(p-next-data.averageq-next-data.average)
{
s=q-next;
p-next=q-next;
q-next=q-next-next;
p-next-next=q;
q=s;
}//if
}//else if
p=p-next;
q=q-next;
}//while
wei=q;
}//while
p1=l-next;
printf("\n ==============排序結(jié)果==============\n");
menu4();
if(temp=='A') /*輸出按基礎(chǔ)學(xué)分排序的結(jié)果*/
{ printf("\t\t\t班級\t學(xué)號\t姓名\t基礎(chǔ)學(xué)分\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1-data.clas,p1-data.classnum,p1-data.name,p1-data.basis);
p1=p1-next;
}//while
}//if
if(temp=='B') /*輸出按專業(yè)學(xué)分排序的結(jié)果*/
{
printf("\t\t\t班級\t學(xué)號\t姓名\t專業(yè)學(xué)分\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1-data.clas,p1-data.classnum,p1-data.name,p1-data.major);
p1=p1-next;
}//while
}//if
if(temp=='C') /*輸出按選修學(xué)分排序的結(jié)果*/
{
printf("\t\t\t班級\t學(xué)號\t姓名\t選修學(xué)分\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1-data.clas,p1-data.classnum,p1-data.name,p1-data.elective);
p1=p1-next;
}//while
}//if
if(temp=='D') /*輸出按人文學(xué)分排序的結(jié)果*/
{
printf("\t\t\t班級\t學(xué)號\t姓名\t人文學(xué)分\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1-data.clas,p1-data.classnum,p1-data.name,p1-data.humanity);
p1=p1-next;
}//while
}//if
if(temp=='E') /*輸出按實(shí)驗(yàn)學(xué)分排序的結(jié)果*/
{
printf("\t\t\t班級\t學(xué)號\t姓名\t實(shí)驗(yàn)學(xué)分\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1-data.clas,p1-data.classnum,p1-data.name,p1-data.laboratory);
p1=p1-next;
}//while
}//if
if(temp=='F') /*輸出按學(xué)分總和排序的結(jié)果*/
{
printf("\t\t\t班級\t學(xué)號\t姓名\t學(xué)分總和\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1-data.clas,p1-data.classnum,p1-data.name,p1-data.sum);
p1=p1-next;
}//while
}//if
if(temp=='G') /*輸出按平均學(xué)分排序的結(jié)果*/
{
printf("\t\t\t班級\t學(xué)號\t姓名\t平均學(xué)分\n");
while(p1)
{
printf("\n\t\t\t %s\t %s\t%s\t %3.1f",p1-data.clas,p1-data.classnum,p1-data.name,p1-data.average);
p1=p1-next;
}//while
}//if
printf("\n");
menu4();
printf("\n");
return l;
}//sortH
void sort(Link l) /*排序函數(shù)定義*/
{
menu3();
char temp;
scanf("%s",temp);
switch(temp) /*對要排序的類別進(jìn)行選擇*/
{
case 'A':sortH(l,'A');break;
case 'B':sortH(l,'B');break;
case 'C':sortH(l,'C');break;
case 'D':sortH(l,'D');break;
case 'E':sortH(l,'E');break;
case 'F':sortH(l,'F');break;
case 'G':sortH(l,'G');break;
default:printf("\n\a\a系統(tǒng)提示:您輸入錯誤!\n");getchar();break;
}//switch
}//sort
void modify(Link l) /*修改函數(shù)定義*/
{
char temp;
char find[10];
Node *p; /*定義節(jié)點(diǎn)p*/
if(!l-next)
{
printf("\n\a\a對不起,無信息可修改!");
printf("\n");
return;
}//if
printf("\n\t\t1:按學(xué)號修改\t 2:按姓名修改\n");
printf("\n請輸入您要修改的方式:");
scanf("%s",temp);
if(temp!='1'temp!='2')
{
printf("\n\a\a系統(tǒng)提示:您輸入錯誤!\n");
return;
}//if
else if(temp=='1') /*按學(xué)號修改*/
{
printf("請輸入要修改的學(xué)號:");
scanf("%s",find);
p=Locate(l,find,"classnum"); /*按學(xué)號查找匹配*/
}//else if
沒有空間了 郵箱給我 發(fā)你郵箱去
以上回答你滿意么?
AddStudent和DisplayStudents函數(shù)要先聲明噻,放到你調(diào)用函數(shù)的前面聲明哈
#includeiostream.h
#includestring.h
#includefstream.h
#includeiomanip.h
class stu
{
char name[20];
double age,homephone,telphone;
char sex;
public:
stu(){}
stu(char n[20],char se,double ag,double ho,double te)
{
strcpy(name, n);
age=ag;
homephone=ho;
telphone=te;
}
friend void main();
};
void main()
{
cout"請選擇您需要的操作!"endl;
cout"操作:"endl;
cout"(0)通訊錄錄入"endl;
cout"(1)增加人員"endl;
cout"(2)刪除人員"endl;
cout"(3)修改數(shù)據(jù)"endl;
cout"(4)顯示記錄"endl;
cout"(5)退出"endl;
cout"選擇相關(guān)操作請輸入相對的括號里的阿拉伯?dāng)?shù)字!"endl;
stu *s[50];
int i=0;
int j=0;
bool flag2=0;
char p;
do
{
cinp;
if((p='0'p='5'))
flag2=1;
else
cout"指令錯誤!請重新輸入:"endl;
}while(flag2==0);
switch(p)
{
case '0': //(0)通訊錄錄入
{
char name[20];
double age,homephone,telphone;
char sex,c;
do{
cout"請輸入姓名:"endl;
cinname;
cout"請輸入性別:"endl;
cinsex;
cout"請輸入年齡:"endl;
cinage;
cout"請輸入家里的電話號碼:"endl;
cinhomephone;
cout"請輸入移動電話號碼:"endl;
cintelphone;
j++;
s[i]=new stu(name, sex, age, homephone , telphone);
i++;
cout"數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎(y/n)"endl;
cinc;
flag2=0;
do
{
if(c!='y'c!='n')
{
cout"指令錯誤!請重新輸入!"endl;
cinc;
}
else
flag2=1;
}while(flag2==0);
}while(c=='y');
break; }
////////////////////////////////////////////////////////////////////
case '1': //(1)增加人員(Add)
{
char name[20];
double age,homephone,telphone;
char sex,c;
do{
cout"請輸入姓名:"endl;
cinname;
cout"請輸入性別:"endl;
cinsex;
cout"請輸入年齡:"endl;
cinage;
cout"請輸入家里的電話號碼:"endl;
cinhomephone;
cout"請輸入移動電話號碼:"endl;
cintelphone;
j++;
s[i]=new stu(name, sex, age, homephone , telphone);
i++;
cout"數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎(y/n)"endl;
cinc;
flag2=0;
do
{
if(c!='y'c!='n')
{
cout"指令錯誤!請重新輸入!"endl;
cinc;
}
else
flag2=1;
}while(flag2==0);
}while(c=='y');
break; }
case '2': //(2)刪除人員(Delete)
{
char name[20];bool flag3=0;char c;
do{
cout"請輸入您要刪除的學(xué)生姓名:"endl;
cinname;
for(int h=0;hi;h++)
{
if(strcmp(name,s[h]-name)==0)
{
flag3=1;
i--;
do{
s[h]=s[h+1];
h++;
}while(h=i);
}
}
if(flag3==0)
cout"您要求刪除的對象本來就不存在!請檢查輸入的正確性!";
cout"要繼續(xù)刪除嗎?(y/n)"endl;
cinc;
if(c!='y'c!='n')
{
cout"指令錯誤!請重新輸入!"endl;
cinc;
}
}while(c=='y');
break; }
case '3': //(3)修改數(shù)據(jù)(Alter)
{
char name[20],se;double ag,ho,te;flag2=0;
char c;
do
{
cout"請輸入您要修改的學(xué)生的姓名:"endl;
cinname;
for(int h=0;hi;h++)
{
if(strcmp(name,s[h]-name)==0)
{
flag2=1;
cout"請輸入性別:"endl;
cinse;
cout"請輸入年齡:"endl;
cinag;
cout"請輸入家里的電話號碼:"endl;
cinho;
cout"請輸入移動電話號碼:"endl;
cinte;
s[h]-sex=se;
s[h]-age=ag;
s[h]-homephone=ho;
s[h]-telphone=te;
cout"數(shù)據(jù)修改成功!";
}
}
if(flag2==0)
{
cout"您要修改的學(xué)生本來就不存在!請檢查重新輸入!"endl;
}
cout"想繼續(xù)修改嗎(y/n)"endl;
cinc;
if(c!='y'c!='n')
{
cout"指令錯誤!請重新輸入!"endl;
cinc;
}
}while(c=='y');
break; }
case '4': //(4)顯示記錄(List)
{
cout"本系統(tǒng)所有通訊錄的數(shù)據(jù)如下:"endl;
if(i==0)
cout"管理系統(tǒng)中沒有錄入數(shù)據(jù)或者數(shù)據(jù)已經(jīng)被刪除!"endl;
for(int k=0;ki;k++)
{
coutk+1" ""姓名:"" "s[k]-name
"性別:"" "s[k]-sex"年齡:"" "s[k]-age
"家里的電話號碼:"" "s[k]-homephone"移動電話號碼:"
" "s[k]-telphoneendl;
}
break; } }
cout"您想繼續(xù)進(jìn)行其他操作嗎?(y/n)"endl;
bool flag4=0;
do
{
cinp;
if(p!='y'p!='n')
cout"指令錯誤!請重新輸入!"endl;
else
flag4=1;
}while(flag4==0);
if(p=='y')
cout"請輸入操作代碼(0 通訊錄錄入/1 增加人員(Add)/2 刪除人員(Delete)/3 修改數(shù)據(jù)(Alter)/4 顯示記錄(List)/ 5 退出(Exit))"endl;
cinp;
for(int x=0;xi;x++)
{
delete s[x];
cout"刪除所有成員!"endl;
}
}
回答者:little_goblin - 初入江湖 三級 7-11 09:35
評價已經(jīng)被關(guān)閉 目前有 1 個人評價
好
100% (1) 不好
0% (0)
對最佳答案的評論 共 1 條
看不懂
評論者: hanrenhui88 - 試用期 一級
其他回答 共 1 條
我自己前不久編寫的一個通訊錄,呵呵.
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
struct student
{
int no; /*學(xué)號*/
char name[20]; /*姓名*/
char acdamic[20]; /*院系*/
char major[20]; /*專業(yè)*/
char province[20]; /*籍貫*/
char address[40]; /*家庭地址*/
long phone; /*聯(lián)系電話*/
struct student *next;
};
struct student *input();
void print(struct student *h);
struct student *insert(struct student *h);
struct student *del(struct student *h);
void find4(struct student *h);
void find3(struct student *h);
void find2(struct student *h);
void find1(struct student *h);
struct student *head=NULL;
char ch,*menu[]={"------------------通訊錄菜單------------",
"1.----------建立學(xué)生通訊錄---------------",
"2.----------輸出全部學(xué)生通訊錄---------------",
"3.----------增加的學(xué)生的個數(shù)---------------",
"4.----------刪除指定學(xué)號的學(xué)生--------------",
"5.----------按系別查找學(xué)生信息-------------",
"6.----------按專業(yè)查找學(xué)生信息-------------",
"7.----------按姓名查找學(xué)生信息-------------",
"8.----------按學(xué)號查找學(xué)生信息--------------",
"9.----------退出通訊錄-----------------------"};
struct student *input() /*輸入函數(shù)*/
{
int n;
printf("請輸入你要建立的學(xué)生通訊錄的學(xué)生個數(shù):\n");
scanf("%d",n);
struct student *h=NULL,*p,*q;
int i;
for(i=1;i=n;i++)
{
printf("請依次輸入第%d個學(xué)生的學(xué)號,姓名,系別,專業(yè),籍貫,家庭住址和聯(lián)系電話:\n",i);
p=(struct student *)malloc(sizeof(struct student));
if(p==NULL)
{
printf("內(nèi)存不足!\n");
exit(0);
}
scanf("%d%s%s%s%s%s%ld",p-no,p-name,p-acdamic,p-major,p-province,p-address,p-phone);
if(i==1)h=p;
else q-next=p;
q=p;
}
q-next=NULL;
return h;
}
void print(struct student *h) /*輸出函數(shù)*/
{
struct student *p=h;
while(p)
{
printf("學(xué)生信息:\n%d,%s,%s,%s,%s,%s,%ld\n",p-no,p-name,p-acdamic,p-major,p-province,p-address,p-phone);
p=p-next;
}
}
struct student *insert(struct student *h) /*增加學(xué)生信息*/
{
int n;
printf("請輸入你要增加的學(xué)生的個數(shù):\n");
scanf("%d",n);
struct student *p,*r;
int i;
for(i=1;i=n;i++)
{
r=(struct student *)malloc(sizeof(struct student));
printf("請輸入第%d個你要插入的學(xué)生的信息:\n",i);
scanf("%d%s%s%s%s%s%ld",r-no,r-name,r-acdamic,r-major,r-province,r-address,r-phone);
p=h;
h=r;
r-next=p;
}
return h;
}
struct student *del(struct student *h) /*按學(xué)號進(jìn)行刪除*/
{
int n;
printf("請輸入要刪除的學(xué)生的學(xué)號:\n");
scanf("%d",n);
struct student *p,*q;
if(h=NULL)printf("empty list!\n");
else
{
p=h;
while(p-no!=np-next)
{q=p;p=p-next;}
if(p-no==n)
{
if(h==p)h=p-next;
else q-next=p-next;
}
else printf("%d is not found!\n");
}
return h;
}
void find1(struct student *h) /*按院系查找學(xué)生信息*/
{
char s[40];
printf("請輸入要查找的學(xué)生的院系:\n");
scanf("%s",s);
struct student *p;
if(h==NULL)printf("empty list!\n");
else
{
p=h;
while(p)
{
if(strcmp(p-acdamic,s)==0)
printf("學(xué)生信息:\n%d %s %s %s %s %s %ld\n",p-no,p-name,p-acdamic,p-major,p-province,p-address,p-phone);
p=p-next;
}
}
}
void find2(struct student *h) /*按專業(yè)查找*/
{
char s[20];
printf("請輸入要查找的學(xué)生的專業(yè)名:\n");
scanf("%s",s);
struct student *p;
if(h==NULL)printf("empty list!\n");
else
{
p=h;
while(p)
{
if(strcmp(p-major,s)==0)
printf("學(xué)生信息:\n%d %s %s %s %s %s %ld\n",p-no,p-name,p-acdamic,p-major,p-province,p-address,p-phone);
p=p-next;
}
}
}
void find3(struct student *h) /*按姓名查找*/
{
char ss[10];
printf("請輸入要查找的學(xué)生的姓名:\n");
scanf("%s",ss);
struct student *p;
if(h==NULL)printf("empty list!\n");
else
{
p=h;
while(p)
{
if(strcmp(p-name,ss)==0)
printf("學(xué)生信息:\n%d %s %s %s %s %s %ld\n",p-no,p-name,p-acdamic,p-major,p-province,p-address,p-phone);
p=p-next;
}
}
}
void find4(struct student *h) /*按學(xué)號查找*/
{
int num;
printf("請輸入要查找的學(xué)生的學(xué)號:\n");
scanf("%d",num);
struct student *p;
if(h==NULL)printf("empty list!\n");
else
{
p=h;
while(p)
{
if(p-no==num)
printf("學(xué)生信息:\n%d %s %s %s %s %s %ld\n",p-no,p-name,p-acdamic,p-major,p-province,p-address,p-phone);
else
printf("沒有你要查找的學(xué)生信息!\n");
p=p-next;
}
}
}
int menu_select()
{
int i,s;
char c[3];
for(i=0;i10;i++)
printf("%s\n",menu[i]);
do
{
scanf("%s",c);
s=atoi(c);
}while(s0||s9);
return s;
}
main()
{
for(;;)
{
switch(menu_select())
{
case 1:head=input();break;
case 2:print(head);break;
case 3:head=insert(head);break;
case 4:head=del(head);break;
case 5:find1(head);break;
case 6:find2(head);break;
case 7:find3(head);break;
case 8:find4(head);break;
case 9:exit(0);
}
}
}