C語言鏈表式圖書管理系統(tǒng)優(yōu)質(zhì)資料_第1頁
C語言鏈表式圖書管理系統(tǒng)優(yōu)質(zhì)資料_第2頁
C語言鏈表式圖書管理系統(tǒng)優(yōu)質(zhì)資料_第3頁
C語言鏈表式圖書管理系統(tǒng)優(yōu)質(zhì)資料_第4頁
C語言鏈表式圖書管理系統(tǒng)優(yōu)質(zhì)資料_第5頁
已閱讀5頁,還剩80頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

C語言鏈表式圖書管理系統(tǒng)優(yōu)質(zhì)資料(可以直接使用,可編輯優(yōu)質(zhì)資料,歡迎下載)

#include<stdio.h>C語言鏈表式圖書管理系統(tǒng)優(yōu)質(zhì)資料(可以直接使用,可編輯優(yōu)質(zhì)資料,歡迎下載)#include<stdlib.h>#include<string.h>structbook{intnum;charbname[50];charwname[20];charpress[50];charsort[50];inttime;floatprice;structbook*next;};structbook*creatbook();//創(chuàng)建鏈表structbook*addbook(structbook*head);//添加圖書intyanzheng(structbook*head,intm);//驗證新添加的圖書編碼是否已存在voiddeletebook(structbook*head);//刪除圖書voidfprint(structbook*head);//將鏈表寫入文件structbook*load();//從文件中讀取信息并建成鏈表voidprint_book(structbook*head);//將鏈表信息輸出voidchaxun(structbook*head);//查詢圖書信息voidnum_chaxun(structbook*head);//按圖書編號查詢圖書voidwname_chaxun(structbook*head);//按作者名查詢圖書voidsort_chaxun(structbook*head);//按類別查詢圖書voidtime_chaxun(structbook*head);//按出版時間查詢圖書voidbname_chaxun(structbook*head);//按圖書名查詢圖書voidxiugai(structbook*head);//修改圖書信息voidpaixu(structbook*head);//對圖書進行排序voidnum_paixu(structbook*head);//按圖書編號排序voidtime_paixu(structbook*head);//按圖書出版時間排序voidprice_paixu(structbook*head);//按圖書價格排序voidbname_paixu(structbook*head);//按圖書名排序voidwname_paixu(structbook*head);//按作者名排序intmain(){intchoice,n,x,y=1,c,c1=1234560;chara,d,b[20],b1[20]="124567890";structbook*head=NULL;while(y){system("cls");printf("\n\n\n\n\n\n\n");printf("**********歡迎光臨**********\n\n");printf("**********************圖書信息管理系統(tǒng)************************\n\n\n");printf("\n\n");printf("============1-用戶登錄===========\n");printf("============0-退出系統(tǒng)===========\n");printf("請輸入您的選擇:");scanf("%d",&n);printf("\n");getchar();switch(n){case0:y=0;break;case1:printf("請輸入您的用戶名:");gets(b);printf("\n");printf("請輸入您的密碼:");scanf("%d",&c);printf("\n");if(strcmp(b,b1)!=0||c!=c1){printf("驗證失敗,請重新輸入!\n");scanf("%c",&d);getchar();system("cls");}else{printf("驗證通過!請按Enter鍵進入!\n");scanf("%c",&d);getchar();x=1;while(x){system("cls");printf("\n");printf("*圖書信息管理系統(tǒng)*\n");printf("\n\n");printf("**********************************************\n\n");printf("**********************************************\n\n");printf("||1-添加圖書2-刪除圖書||\n\n");printf("||3-圖書列表4-圖書排序||\n\n");printf("||5-查詢圖書6-修改圖書||\n\n");printf("||7-錄入數(shù)據(jù)0-退出系統(tǒng)||\n\n");printf("**********************************************\n\n");printf("**********************************************\n\n");printf("請輸入所選擇的序號:");scanf("%d",&choice);getchar();system("cls");switch(choice){case0:x=0;break;case1:head=load();if(head==NULL){printf("文件為空,請先錄入數(shù)據(jù)!\n");getchar();break;}else{head=addbook(head);printf("添加成功!\n");printf("是否將新信息保存到文件?(y/n)\n");scanf("%c",&a);getchar();switch(a){case'n':break;case'y':fprint(head);printf("保存成功!\n");getchar();break;}break;}case2:head=load();if(head==NULL){printf("文件為空,請先錄入數(shù)據(jù)!\n");getchar();break;}else{deletebook(head);getchar();break;}break;case3:head=load();if(head==NULL){printf("文件為空,請先錄入數(shù)據(jù)!\n");getchar();break;}else{print_book(head);getchar();break;}case4:head=load();if(head==NULL){printf("文件為空,請先錄入數(shù)據(jù)!\n");getchar();break;}else{paixu(head);getchar();}break;case5:head=load();if(head==NULL){printf("文件為空,請先錄入數(shù)據(jù)!\n");getchar();break;}else{chaxun(head);getchar();}break;case6:head=load();if(head==NULL){printf("文件為空,請先錄入數(shù)據(jù)!\n");getchar();break;}else{xiugai(head);getchar();break;}break;case7:printf("注意:輸入圖書編碼為0時結(jié)束!\n");head=creatbook();printf("是否將輸入的信息保存到文件以覆蓋文件中已存在的信息?(y/n)\n");getchar();scanf("%c",&a);getchar();switch(a){case'n':break;case'y':fprint(head);printf("保存成功!\n");getchar();break;}break;default:printf("您的輸入有誤,請重新輸入!\n");getchar();break;}}}break;default:printf("您的輸入有誤!請重新輸入!\n");getchar();break;}}}//錄入數(shù)據(jù)并形成鏈表structbook*creatbook(){structbook*head,*tail,*p;intnum,time,n;charbname[50],wname[20],press[50],sort[50];floatprice;intsize=sizeof(structbook);head=tail=NULL;printf("請輸入圖書編號:");scanf("%d",&num);printf("請輸入圖書名:");scanf("%s",bname);getchar();printf("請輸入作者名:");scanf("%s",wname);getchar();printf("請輸入出版社:");scanf("%s",press);getchar();printf("請輸入類別:");scanf("%s",sort);getchar();printf("請輸入出版時間:");scanf("%d",&time);getchar();printf("請輸入價格:");scanf("%f",&price);getchar();while(1){p=(structbook*)malloc(size);p->num=num;strcpy(p->bname,bname);strcpy(p->wname,wname);strcpy(p->press,press);strcpy(p->sort,sort);p->time=time;p->price=price;p->next=NULL;if(head==NULL)head=p;elsetail->next=p;tail=p;do{printf("請輸入圖書編號:");scanf("%d",&num);n=yanzheng(head,num);if(n==0)break;elseprintf("您輸入的編號已存在,請重新輸入!\n");}while(1);if(num==0)break;else{printf("請輸入圖書名:");scanf("%s",bname);getchar();printf("請輸入作者名:");scanf("%s",wname);getchar();printf("請輸入出版社:");scanf("%s",press);getchar();printf("請輸入類別:");scanf("%s",sort);getchar();printf("請輸入出版時間:");scanf("%d",&time);getchar();printf("請輸入價格:");scanf("%f",&price);getchar();}}returnhead;}//插入結(jié)點,并且插入后仍按一定順序structbook*addbook(structbook*head){structbook*ptr,*p1,*p2,*p;charbname[50],wname[20],press[50],sort[50];intsize=sizeof(structbook);intnum,time,n=1;floatprice;do{printf("請輸入圖書編號:");scanf("%d",&num);n=yanzheng(head,num);if(n==0)break;elseprintf("您輸入的編號已存在,請重新輸入!\n");}while(1);printf("請輸入圖書名:");scanf("%s",bname);getchar();printf("請輸入作者名:");scanf("%s",wname);getchar();printf("請輸入出版社:");scanf("%s",press);getchar();printf("請輸入類別:");scanf("%s",sort);getchar();printf("請輸入出版時間:");scanf("%d",&time);getchar();printf("請輸入價格:");scanf("%f",&price);getchar();p=(structbook*)malloc(size);p->num=num;strcpy(p->bname,bname);strcpy(p->wname,wname);strcpy(p->press,press);strcpy(p->sort,sort);p->time=time;p->price=price;p2=head;ptr=p;while((ptr->num>p2->num)&&(p2->next!=NULL)){p1=p2;p2=p2->next;}if(ptr->num<=p2->num){if(head==p2)head=ptr;else{p1->next=ptr;p->next=p2;}}else{p2->next=ptr;p->next=NULL;}returnhead;}//驗證添加的圖書編號是否已存在intyanzheng(structbook*head,intm){structbook*p;p=head;while(p!=NULL){if(p->num==m)break;p=p->next;}if(p==NULL)return0;elsereturn1;}//將新鏈表寫入文件中voidfprint(structbook*head){FILE*fp;charch='1';structbook*p1;if((fp=fopen("f1.txt","w"))==NULL){printf("Fileopenerror!\n");exit(0);}fputc(ch,fp);for(p1=head;p1;p1=p1->next){fprintf(fp,"%d%s%s%s%s%d%f\n",p1->num,p1->bname,p1->wname,p1->press,p1->sort,p1->time,p1->price);}fclose(fp);}//從文件中讀取圖書信息structbook*load(){FILE*fp;charch;structbook*head,*tail,*p1;head=tail=NULL;if((fp=fopen("f1.txt","r"))==NULL){printf("Fileopenerror!\n");exit(0);}ch=fgetc(fp);if(ch=='1'){while(!feof(fp)){p1=(structbook*)malloc(sizeof(structbook));fscanf(fp,"%d%s%s%s%s%d%f\n",&p1->num,p1->bname,p1->wname,p1->press,p1->sort,&p1->time,&p1->price);if(head==NULL)head=p1;elsetail->next=p1;tail=p1;}tail->next=NULL;fclose(fp);returnhead;}elsereturnNULL;}//將整個鏈表的信息輸出voidprint_book(structbook*head){structbook*ptr;if(head==NULL){printf("\n沒有信息!\n");return;}printf("圖書信息列表如下\n");printf("==========================================================\n");printf("編號圖書名作者名出版社類別出版時間價格\n");for(ptr=head;ptr;ptr=ptr->next)printf("%d%s%s%s%s%d%.2f\n",ptr->num,ptr->bname,ptr->wname,ptr->press,ptr->sort,ptr->time,ptr->price);printf("==========================================================\n");}//刪除圖書信息voiddeletebook(structbook*head){inta;charb,ch='1';structbook*p1,*p2;FILE*fp;printf("請輸入要刪除的圖書編號:");scanf("%d",&a);p1=head;if(p1->num==a&&p1->next==NULL){//對于文件中只有一組數(shù)據(jù)printf("是否清空文件!(y/n)\n");getchar();scanf("%c",&b);getchar();switch(b){case'n':break;case'y':if((fp=fopen("f1.txt","w"))==NULL){printf("Fileopenerror!\n");exit(0);}fclose(fp);printf("文件已清空!\n");}}else{while(p1->num!=a&&p1->next!=NULL){p2=p1;p1=p1->next;}if(p1->next==NULL){if(p1->num==a){p2->next=NULL;printf("是否確定從文件中徹底刪除該圖書?(y/n)\n");getchar();scanf("%c",&b);switch(b){case'n':break;case'y':fprint(head);printf("刪除成功!\n");getchar();break;}}else{printf("沒有找到要刪除的數(shù)據(jù)!\n");getchar();}}elseif(p1==head){head=p1->next;printf("是否確定從文件中徹底刪除該圖書?(y/n)\n");getchar();scanf("%c",&b);switch(b){case'n':break;case'y':fprint(head);printf("刪除成功!\n");getchar();break;}}else{p2->next=p1->next;printf("是否確定從文件中徹底刪除該圖書?(y/n)\n");getchar();scanf("%c",&b);switch(b){case'n':break;case'y':fprint(head);printf("刪除成功!\n");getchar();break;}}}}//圖書查詢voidchaxun(structbook*head){inta;printf("==========================================================\n");printf("**1-按圖書編號查詢2-按圖書名查詢**\n");printf("**3-按圖書類別查詢4-按作者名查詢**\n");printf("**5-按出版時間查詢0-退出查詢**\n");printf("==========================================================\n");printf("請輸入所選擇的編號:");scanf("%d",&a);getchar();switch(a){case0:break;case1:num_chaxun(head);break;case2:bname_chaxun(head);break;case3:sort_chaxun(head);break;case4:wname_chaxun(head);break;case5:time_chaxun(head);break;default:printf("您的輸入有誤!\n");break;}}//按編號查詢圖書信息voidnum_chaxun(structbook*head){inta;structbook*p;printf("請選擇您要查詢的圖書編號:");scanf("%d",&a);getchar();p=head;while(p!=NULL){if(p->num==a)break;p=p->next;}if(p==NULL){printf("沒有找到該編號的圖書!\n");}else{printf("你所查詢的圖書信息如下\n");printf("=========================================================================\n");printf("**編號圖書名作者名出版社類別出版時間價格**\n");printf("**%d%s%s%s%s%d%.2f**\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);printf("=========================================================================\n");}}//按圖書名查詢圖書信息voidbname_chaxun(structbook*head){chara[50];intflag=0;structbook*p;printf("請選擇您要查詢的圖書名:");gets(a);p=head;while(p!=NULL){if(strcmp(p->bname,a)==0){flag=1;break;}p=p->next;}if(flag==0){printf("沒有找到該圖書名的圖書!\n");}else{printf("你所查詢的圖書信息如下\n");printf("=========================================================================\n");printf("**編號圖書名作者名出版社類別出版時間價格**\n");while(p!=NULL){if(strcmp(p->bname,a)==0){printf("**%d%s%s%s%s%d%.2f**\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);}p=p->next;}printf("=========================================================================\n");}}//按作者名查詢圖書信息voidwname_chaxun(structbook*head){chara[50];intflag=0;structbook*p;printf("請選擇您要查詢的圖書作者名:");gets(a);p=head;while(p!=NULL){if(strcmp(p->wname,a)==0){flag=1;break;}p=p->next;}if(flag==0){printf("沒有找到該圖書名的圖書!\n");}else{printf("你所查詢的圖書信息如下\n");printf("=========================================================================\n");printf("**編號圖書名作者名出版社類別出版時間價格**\n");while(p!=NULL){if(strcmp(p->wname,a)==0){printf("**%d%s%s%s%s%d%.2f**\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);flag=1;}p=p->next;}printf("=========================================================================\n");}}//按圖書類別查詢圖書信息voidsort_chaxun(structbook*head){chara[50];intflag=0;structbook*p;printf("請選擇您要查詢的圖書類別:");gets(a);p=head;while(p!=NULL){if(strcmp(p->sort,a)==0){flag=1;break;}p=p->next;}if(flag==0){printf("沒有找到該圖書名的圖書!\n");}else{printf("你所查詢的圖書信息如下\n");printf("=========================================================================\n");printf("**編號圖書名作者名出版社類別出版時間價格**\n");while(p!=NULL){if(strcmp(p->sort,a)==0){printf("**%d%s%s%s%s%d%.2f**\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);flag=1;}p=p->next;}printf("=========================================================================\n");}}//按圖書出版時間查詢圖書信息voidtime_chaxun(structbook*head){inta,flag=0;structbook*p;printf("請選擇您要查詢的圖書出版時間:");scanf("%d",&a);getchar();p=head;while(p!=NULL){if(p->time==a){flag=1;break;}p=p->next;}if(flag==0){printf("沒有找到該圖書名的圖書!\n");}else{printf("你所查詢的圖書信息如下\n");printf("=========================================================================\n");printf("**編號圖書名作者名出版社類別出版時間價格**\n");while(p!=NULL){if(p->time==a){printf("**%d%s%s%s%s%d%.2f**\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);flag=1;}p=p->next;}printf("=========================================================================\n");}}//修改圖書信息voidxiugai(structbook*head){inta,b;charc;structbook*p;printf("請輸入要修改的圖書編號:");scanf("%d",&a);p=head;while(p!=NULL){if(p->num==a)break;p=p->next;}if(p==NULL){printf("沒有找到該編號的圖書!\n");getchar();}else{printf("============================================================\n");printf("**1-編號2-圖書名3-作者名**\n");printf("**4-出版社5-類別6-出版時間**\n");printf("**7-價格8-修改全部0-放棄修改**\n");printf("============================================================\n");printf("請選擇你要修改的信息編號:");scanf("%d",&b);getchar();switch(b){case1:printf("請輸入新編號:");scanf("%d",&p->num);printf("修改成功!\n");getchar();break;case2:printf("請輸入新圖書名:");gets(p->bname);printf("修改成功!\n");break;case3:printf("請輸入新作者名:");gets(p->wname);printf("修改成功!\n");break;case4:printf("請輸入新出版社:");gets(p->press);printf("修改成功!\n");break;case5:printf("請輸入新類別:");gets(p->sort);printf("修改成功!\n");break;case6:printf("請輸入新出版時間:");scanf("%d",&p->time);printf("修改成功!\n");getchar();break;case7:printf("請輸入新價格:");scanf("%f",&p->price);printf("修改成功!\n");getchar();break;case8:printf("請輸入新圖書編號:");scanf("%d",&p->num);printf("請輸入新圖書名:");scanf("%s",p->bname);getchar();printf("請輸入新作者名:");scanf("%s",p->wname);getchar();printf("請輸入新出版社:");scanf("%s",p->press);getchar();printf("請輸入新類別:");scanf("%s",p->sort);getchar();printf("請輸入新出版時間:");scanf("%d",&p->time);getchar();printf("請輸入新價格:");scanf("%f",&p->price);getchar();printf("修改成功!\n");getchar();break;case0:break;default:printf("您的輸入有誤!\n");break;}printf("是否將修改后的信息保存到文件中?(y/n)\n");scanf("%c",&c);getchar();switch(c){case'n':break;case'y':fprint(head);printf("保存成功!\n");getchar();break;}}}//圖書排序voidpaixu(structbook*head){inta;printf("================================================================\n");printf("**1-按圖書編號排序2-按出版時間排序**\n");printf("**3-按圖書價格排序4-按圖書名排序**\n");printf("**5-按作者名排序0-取消排序操作**\n");printf("================================================================\n");printf("請輸入您選擇的編號:");scanf("%d",&a);getchar();switch(a){case0:break;case1:num_paixu(head);break;case2:time_paixu(head);break;case3:price_paixu(head);break;case4:bname_paixu(head);break;case5:wname_paixu(head);break;default:printf("您的輸入有誤!\n");break;}}//按圖書編號排序voidnum_paixu(structbook*head){structbook*a[1000],*p,*p1,*temp;inti,k,index,n=0;charb;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(a[i]->num<a[index]->num)index=i;}temp=a[index];a[index]=a[k];a[k]=temp;}printf("排序成功!\n");printf("是否顯示排序結(jié)果?(y/n)\n");scanf("%s",&b);getchar();switch(b){case'n':break;case'y':printf("================================================================\n");printf("**編號圖書名作者名出版社類別出版時間價格**\n");for(i=0;i<n;i++){printf("**%d%s%s%s%s%d%.2f**\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}printf("================================================================\n");break;default:printf("您的輸入有誤!\n");break;}}//按出版時間排序voidtime_paixu(structbook*head){structbook*a[1000],*p,*p1,*temp;inti,k,index,n=0;charb;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(a[i]->time<a[index]->time)index=i;}temp=a[index];a[index]=a[k];a[k]=temp;}printf("排序成功!\n");printf("是否顯示排序結(jié)果?(y/n)\n");scanf("%s",&b);getchar();switch(b){case'n':break;case'y':printf("===============================================================\n");printf("**編號圖書名作者名出版社類別出版時間價格**\n");for(i=0;i<n;i++){printf("**%d%s%s%s%s%d%.2f**\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}printf("===============================================================\n");break;default:printf("您的輸入有誤!\n");break;}}//按圖書價格排序voidprice_paixu(structbook*head){structbook*a[1000],*p,*p1,*temp;inti,k,index,n=0;charb;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(a[i]->price<a[index]->price)index=i;}temp=a[index];a[index]=a[k];a[k]=temp;}printf("排序成功!\n");printf("是否顯示排序結(jié)果?(y/n)\n");scanf("%s",&b);getchar();switch(b){case'n':break;case'y':printf("===============================================================\n");printf("**編號圖書名作者名出版社類別出版時間價格**\n");for(i=0;i<n;i++){printf("**%d%s%s%s%s%d%.2f**\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}printf("===============================================================\n");break;default:printf("您的輸入有誤!\n");break;}}//按圖書名排序voidbname_paixu(structbook*head){structbook*a[1000],*p,*p1,*temp;inti,k,index,n=0;charb;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(strcmp(a[index]->bname,a[i]->bname)>0)index=i;}temp=a[index];a[index]=a[k];a[k]=temp;}printf("排序成功!\n");printf("是否顯示排序結(jié)果?(y/n)\n");scanf("%s",&b);getchar();switch(b){case'n':break;case'y':printf("===============================================================\n");printf("**編號圖書名作者名出版社類別出版時間價格**\n");for(i=0;i<n;i++){printf("**%d%s%s%s%s%d%.2f**\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}printf("===============================================================\n");break;default:printf("您的輸入有誤!\n");break;}}//按作者名排序voidwname_paixu(structbook*head){structbook*a[1000],*p,*p1,*temp;inti,k,index,n=0;charb;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(strcmp(a[index]->wname,a[i]->wname)>0)index=i;}temp=a[index];a[index]=a[k];a[k]=temp;}printf("排序成功!\n");printf("是否顯示排序結(jié)果?(y/n)\n");scanf("%s",&b);getchar();switch(b){case'n':break;case'y':printf("===============================================================\n");printf("**編號圖書名作者名出版社類別出版時間價格**\n");for(i=0;i<n;i++){printf("**%d%s%s%s%s%d%.2f**\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}printf("===============================================================\n");break;default:printf("您的輸入有誤!\n");break;}}PAGE57福建工程學(xué)院計算機與信息科學(xué)系實驗報告2012–2013學(xué)年第1學(xué)期任課老師:章靜課程名稱結(jié)構(gòu)化程序綜合設(shè)計班級計算機1001座號3100301114姓名張揚文實驗題目學(xué)生成績管理系統(tǒng)實驗時間實驗開始日期:2012/2/24報告提交日期:2012/3/10實驗?zāi)康?、要?.該實驗的課內(nèi)學(xué)時是4個課時.2。程序完成后應(yīng)該完成如下基本功能:1)用自定義結(jié)構(gòu)體typedefstruct設(shè)計該軟件的數(shù)據(jù)結(jié)構(gòu);2)用數(shù)組或指針鏈表將所有學(xué)生的數(shù)據(jù)按照學(xué)號順序鏈接起來;3)程序能夠按照學(xué)號順序輸入學(xué)生的三門成績,并計算平均成績和總成績。4)程序能夠顯示已經(jīng)輸入的指定學(xué)號的學(xué)生成績以及平均成績和總成績.5)程序能夠按要求顯示指定分數(shù)段的學(xué)生成績以及平均成績和總成績。6)能夠統(tǒng)計班級總?cè)藬?shù)、班級平均成績.7)能夠增加和刪除指定學(xué)生的成績。8)按照指定的要求以及順序(升序或降序)顯示學(xué)生成績以及平均成績和總成績。實驗步驟與內(nèi)容按如下順序?qū)懀褐饕O(shè)計思想;學(xué)生成績管理系統(tǒng)包含多種功能,可以輸入學(xué)生成績,刪除,插入,排序,查找等等。。。輸入的信息又包含學(xué)生姓名,學(xué)號,各科成績。。所以首先要定義一個結(jié)構(gòu)體:typedefstructnode{charid[20];charname[15];intscore[MAXCOURSE];intsum;doubleaverage;structnode*next;}Student;根據(jù)結(jié)構(gòu)體中的內(nèi)容飆血程序。主要數(shù)據(jù)結(jié)構(gòu)及其解釋在此次程序設(shè)計中用了鏈表來實現(xiàn)對數(shù)據(jù)的處理,并設(shè)計了菜單界面如圖,根據(jù)switch語句來對用戶的選擇:模塊關(guān)系圖;主函數(shù)主函數(shù)輸入學(xué)生信息打印成績計算平均分和總分查找學(xué)生成績插入學(xué)生成績顯示分數(shù)段的學(xué)生按總分平均分降序排列菜單所有函數(shù)的簡要說明;插入函數(shù)Insert_Before();主要是要重新加入學(xué)生的信息,通過頭插法.計算平均分和總分Count_Score();將輸入的數(shù)據(jù)計算出學(xué)生的平均分和總分.刪除學(xué)生信息Del_Student();刪除某個學(xué)生的成績。按姓名查找Searchname_Student();通過輸入學(xué)生的姓名找到學(xué)生的成績。計算班級總?cè)藬?shù)people=Count_People();將總的輸入學(xué)生人數(shù)打印出來。顯示某分數(shù)段學(xué)生信息Section_Score();首先選擇你要某科目的成績并輸入成績的范圍,按條件輸出學(xué)生成績。按總分,平均分降序排列Descend_English();將輸入的全部學(xué)生成績按總分排序.所有源代碼;/*學(xué)生成績管理系統(tǒng)C語言*/#include〈stdio。h〉#include<stdlib.h>#include〈string.h〉#defineMAXID10#defineMAXNAME20#defineMAXCOURSE3/*學(xué)生數(shù)據(jù)結(jié)構(gòu)*/typedefstructnode{charid[20];charname[15];intscore[MAXCOURSE];intsum;doubleaverage;structnode*next;}Student;/*頭指針*/Student*head=NULL;/*課程名稱*/charClassName[MAXCOURSE][20]={"數(shù)學(xué)”,"英語","計算機”};/*菜單*/intMenu(){system(”cls");fflush(stdin);printf("計算機1001張揚文3100301114\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("************學(xué)生成績管理系統(tǒng)****************\n");printf(”~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("1-初始化\n”);printf(”2-輸入學(xué)生信息\n”);printf("3—計算所有學(xué)生的總分和平均分\n");printf("4-打印全部學(xué)生信息\n”);printf("5-查找學(xué)號或姓名刪除學(xué)生信息\n”);printf(”6—按姓名查找學(xué)生信息\n”);printf("7—按學(xué)號查找學(xué)生信息\n”);printf(”8-查找某一科成績段學(xué)生信息\n”);printf(”9-插入學(xué)生信息到鏈表中\(zhòng)n");printf(”10-按總分或平均分降序排列學(xué)生成績\n");printf("0—退出\n");return0;}/*初始化*/Student*Init(){inti;Student*head;head=(Student*)malloc(sizeof(Student));head—>next=NULL;returnhead;}/*檢查學(xué)號*/charCheck_ID(char*s){inti;if(strlen(s)==0||strlen(s)>MAXID)return0;for(i=0;i〈strlen(s);i++){if(s[i]〉'0'&&s[i]<’9')return1;}return0;}/*檢查姓名*/charCheck_Name(char*s){inti;if(strlen(s)==0||strlen(s)>MAXNAME)return0;for(i=0;i〈strlen(s);i++){if((s[i]>=’a'&&s[i]<’z')||(s[i]>='A'&&s[i]〈='Z’))return1;}return0;}/*檢查分數(shù)*/intCheck_Score(ints){if(s〉=0&&s<=100)return1;return0;}/*檢查學(xué)號是否相同*/charIs_SameID(char*s){Student*p=head—>next;while(p!=NULL){if(strcmp(s,p—〉id)==0)return1;p=p—>next;}return0;}/*輸入學(xué)生信息*/voidInput_Score(Student*p){/*學(xué)號*/printf(”\n請輸入學(xué)號:");do{gets(p-〉id);if(!Check_ID(p—>id)){printf("輸入不正確!請重新輸入學(xué)號:");??}??elseif(Is_SameID(p—>id))? { ?printf("存在已學(xué)號!請重新輸入學(xué)號:”); ?}}while(!(Check_ID(p->id)&&!Is_SameID(p—〉id)));/*姓名*/printf(”請輸入姓名:”);do{gets(p-〉name);if(!Check_Name(p->name)){printf("輸入不正確!請重新輸入姓名:”);}}while(!Check_Name(p-〉name));//輸入成績inti;for(i=0;i<MAXCOURSE;i++){do{printf(”請輸入%s成績:",ClassName[i]);scanf(”%d”,&p—>score[i]);if(!Check_Score(p->score[i]))printf("輸入成績不正確!\n請重新輸入%s成績:”,ClassName[i]);}while(!Check_Score(p—>score[i]));}p->average=-1;p—>sum=—1;}/*頭插法插入節(jié)點*/voidInsert_Before(){Student*s=(Student*)malloc(sizeof(Student));Input_Score(s);s->next=head—>next;head->next=s;}/*輸出學(xué)生成績信息*/voidOutput_Score(Student*p){inti;printf(”\n姓名:%s,學(xué)號:%s\n",p-〉name,p->id);for(i=0;i<MAXCOURSE;i++){printf("%s成績:%d”,ClassName[i],p-〉score[i]);}printf(”總分:%d平均分:%.2f\n”,p->sum,p-〉average);}/*刪除節(jié)點q*/voidDel_Node(Student*q){Student*p=head;while(p-〉next!=q){p=p->next;}p->next=q—>next;free(q);}/*插入學(xué)生成績*/voidInsert_List(){intx;printf(”輸入你要插入的學(xué)生數(shù):");scanf("%d",&x);while(x!=0){getchar();Student*p=(Student*)malloc(sizeof(Student));printf("\n請輸入學(xué)號:”);do{gets(p-〉id);if(?。胔eck_ID(p—>id)){printf("輸入不正確!請重新輸入學(xué)號:"); ?}??elseif(Is_SameID(p-〉id)) {? printf("存在已學(xué)號!請重新輸入學(xué)號:");? }}while(?。–heck_ID(p-〉id)&&!Is_SameID(p—>id)));/*姓名*/printf(”請輸入姓名:”);do{gets(p—>name);if(!Check_Name(p->name)){

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論