VC综合实验图书馆管理系统.doc
《VC综合实验图书馆管理系统.doc》由会员分享,可在线阅读,更多相关《VC综合实验图书馆管理系统.doc(35页珍藏版)》请在咨信网上搜索。
VC++综合试验 图书馆管理系统.txt都是一种山旳狐狸,你跟我讲什么聊斋,站在离你近来旳地方,眺望你对他人旳微笑,虽然心是百般旳疼痛 只为把你旳一举一动尽收眼底.耀眼旳白色,让我明白什么是纯粹旳伤害。#include<stdio.h> #include<stdlib.h> #include<string.h> #define LENGTH 20 #define SUBJECT 10 char subcall[SUBJECT][LENGTH]; int num_of_stu=0; int num_of_sub=0; struct data { char name[LENGTH]; char num[LENGTH]; float score[SUBJECT]; float sum; float aver; struct data *next; }; void Menu(void); struct data *Append(struct data*); void Check(struct data*); void Modify(struct data*); void List(struct data*); void Search(struct data*); struct data *Delete(struct data*); struct data *Sort1(struct data*,int (*g)(float,float)); void Sort2(struct data*,int (*g)(float,float)); int descend(float,float); int ascend(float,float); void main() { Menu(); } void Menu(void) { char *choice[9]={"1.Append record","2.Check record","3.Modify record","4.List record","5.Search record","6.Delete record","7.Sort score in descending order","8.Sort score in ascending order","0.exit"}; struct data *head=NULL; char reply,c; int n=0,k,i; for(i=0;i<9;i++) { k=strlen(choice[i]); n=(n>k)?n:k; } while(1) { system("cls"); printf("\t\tWelcome to the Students' Score Management System\n"); printf("\t\t\t-----------------------------------\n"); for(i=0;i<9;i++) { printf("\t\t\t| %s",choice[i]); k=strlen(choice[i]); for(;n-k>0;k++) putchar(' '); printf("|\n"); } printf("\t\t\t-----------------------------------\n"); while(1) { printf("Please input your choice:"); reply=getchar(); if(reply=='\n') continue; else c=getchar(); if(reply>='0'&&reply<='8'&&c=='\n') break; else if(c!='\n') while(c=getchar()!='\n'); printf("There is no such choice!\n"); } if(reply>'1'&&head==NULL) printf("There is no data stored!\n"); else { switch(reply) { case'1':head=Append(head);break; case'2':Check(head);break; case'3':Modify(head);break; case'4':List(head);break; case'5':Search(head);break; case'6':head=Delete(head);break; case'7':Sort2(head,descend);break; case'8':Sort2(head,ascend);break; default:while(1) { printf("Do you really want to exit(Y/N or y/n)?"); reply=getchar(); if(reply=='\n') continue; else c=getchar(); if((reply=='Y'||reply=='N'||reply=='y'||reply=='n')&&c=='\n') break; else if(c!='\n') while(c=getchar()!='\n'); } if(reply=='Y'||reply=='y') { free(head); return; } } } while(1) { printf("Press ENTER to continue:"); scanf("%c",&reply); if(reply=='\n') break; else while(c=getchar()!='\n'); } } } struct data *Append(struct data *head) { struct data *p; char reply,c; int i; system("cls"); if(head==NULL) { p=head=(struct data*)malloc(sizeof(struct data)); printf("How many subjects do you want to record(n<=%d)?",SUBJECT); scanf("%d%*c",&num_of_sub); for(i=0;i<num_of_sub;i++) { printf("Please input subject%d's name:",i+1); scanf("%s%*c",subcall[i]); } } else { for(p=head;p->next!=NULL;p=p->next); p->next=(struct data*)malloc(sizeof(struct data)); p=p->next; } loop:printf("Please input the student's name:"); scanf("%s%*c",p->name); printf("Please input the student's number:"); scanf("%s%*c",p->num); p->sum=0; for(i=0;i<num_of_sub;i++) { printf("Please input the student's %s score:",subcall[i]); scanf("%f%*c",&p->score[i]); p->sum+=p->score[i]; } p->aver=p->sum/num_of_sub; num_of_stu++; while(1) { printf("Do you want to go on appending(Y/N or y/n)?"); reply=getchar(); if(reply=='\n') continue; else c=getchar(); if((reply=='Y'||reply=='N'||reply=='y'||reply=='n')&&c=='\n') break; else if(c!='\n') while(c=getchar()!='\n'); } if(reply=='Y'||reply=='y') { p->next=(struct data*)malloc(sizeof(struct data)); p=p->next; goto loop; } else { p->next=NULL; return head; } } void Check(struct data *head) { struct data *p,*q; struct data **t=(struct data**)malloc(num_of_stu/2*sizeof(struct data*)); int minlim,maxlim,n=0,i; system("cls"); for(p=head;p!=NULL;p=p->next) { for(i=0;i<n;i++) { if(strcmp(p->name,(*(t+i))->name)==0) break; } if(i<n) continue; for(q=p->next;q!=NULL;q=q->next) { if(strcmp(p->name,q->name)==0) { printf("Name %s has been inputed repeatedly!\n",p->name); *(t+n)=p; n++; break; } } } printf("Altogether %d name has been repeatedly inputed.\n",n); n=0; for(p=head;p!=NULL;p=p->next) { for(i=0;i<n;i++) { if(strcmp(p->num,(*(t+i))->num)==0) break; } if(i<n) continue; for(q=p->next;q!=NULL;q=q->next) { if(strcmp(p->num,q->num)==0) { printf("Student's number %s has been inputed repeatedly!\n",p->num); *(t+n)=p; n++; break; } } } printf("Altogether %d number has been repeatedly inputed.\n",n); free(t); n=0; printf("Now check data\n"); printf("Please input the minimum limit:"); scanf("%d%*c",&minlim); printf("Please input the maximum limit:"); scanf("%d%*c",&maxlim); if(maxlim<minlim) { printf("Input error!\n"); return; } for(p=head;p!=NULL;p=p->next) { for(i=0;i<num_of_sub;i++) { if(p->score[i]<minlim||p->score[i]>maxlim) { if(!n) printf("These data has been wrongly inputed:\n"); printf("%s's %s score.\n",p->name,subcall[i]); n++; } } } printf("Altogether %d wrong data.\n",n); } void Modify(struct data *head) { struct data *p; char modname[LENGTH],modscore[LENGTH]; char reply,c; int i; system("cls"); do { printf("Please input the name of the student whose data you want to modify:"); scanf("%s%*c",modname); for(p=head;p!=NULL&&strcmp(p->name,modname)!=0;p=p->next); if(p==NULL) printf("The student doesn't exist!\n"); else { printf("Successfully found!\n"); while(1) { printf("Do you want to modify the student's number(Y/N or y/n)?"); reply=getchar(); if(reply=='\n') continue; else c=getchar(); if((reply=='Y'||reply=='N'||reply=='y'||reply=='n')&&c=='\n') break; else if(c!='\n') while(c=getchar()!='\n'); } if(reply=='Y'||reply=='y') { printf("Please input the student's new number:"); scanf("%s%*c",p->num); } while(1) { printf("Do you want to modify the student's score(Y/N or y/n)?"); reply=getchar(); if(reply=='\n') continue; else c=getchar(); if((reply=='Y'||reply=='N'||reply=='y'||reply=='n')&&c=='\n') break; else if(c!='\n') while(c=getchar()!='\n'); } if(reply=='Y'||reply=='y') { do { printf("Please input the name of the subject whose score you want to modify:"); scanf("%s%*c",modscore); for(i=0;i<num_of_sub;i++) { if(strcmp(subcall[i],modscore)==0) { p->sum-=p->score[i]; printf("Please input %s's new %s score:",p->name,modscore); scanf("%f%*c",&p->score[i]); p->sum+=p->score[i]; break; } } if(i==num_of_sub) printf("The subject doesn't exist!\n"); while(1) { printf("Do you want to go on modifying the student's other scores of subject(Y/N or y/n)?"); reply=getchar(); if(reply=='\n') continue; else c=getchar(); if((reply=='Y'||reply=='N'||reply=='y'||reply=='n')&&c=='\n') break; else if(c!='\n') while(c=getchar()!='\n'); } } while(reply=='Y'||reply=='y'); p->aver=p->sum/num_of_sub; } } while(1) { printf("Do you want to go on modifying other students' data(Y/N or y/n)?"); reply=getchar(); if(reply=='\n') continue; else c=getchar(); if((reply=='Y'||reply=='N'||reply=='y'||reply=='n')&&c=='\n') break; else if(c!='\n') while(c=getchar()!='\n'); } } while(reply=='Y'||reply=='y'); } void List(struct data *head) { struct data *p; int n1=0,n2=0,k,i; system("cls"); printf("name "); for(p=head;p!=NULL;p=p->next) { k=strlen(p->name); n1=(n1>k)?n1:k; } n1=(n1>4)?n1:4; for(i=0;i<n1-4;i++) putchar(' '); printf("number "); for(p=head;p!=NULL;p=p->next) { k=strlen(p->num); n2=(n2>k)?n2:k; } n2=(n2>6)?n2:6; for(i=0;i<n2-6;i++) putchar(' '); for(i=0;i<num_of_sub;i++) printf("%s ",subcall[i]); if(num_of_sub>0) printf("sum aver"); putchar('\n'); for(p=head;p!=NULL;p=p->next) { printf("%s ",p->name); k=strlen(p->name); for(i=0;i<n1-k;i++) putchar(' '); printf("%s ",p->num); k=strlen(p->num); for(i=0;i<n2-k;i++) putchar(' '); for(i=0;i<num_of_sub;i++) { printf("%.1f ",p->score[i]); k=strlen(subcall[i]); for(;k-4>0;k--) putchar(' '); } if(num_of_sub>0) printf("%.2f %.2f",p->sum,p->aver); putchar('\n'); } printf("Altogether %d records.\n",num_of_stu); } void Search(struct data *head) { struct data *p; char findname[LENGTH]={'\0'}; char findnum[LENGTH]={'\0'}; char reply,c; int flag,n1,n2,k,i; system("cls"); do { printf("Do you want to search the student by name(enter 1) or by number(enter 2)?"); scanf("%d%*c",&flag); } while(flag!=1&&flag!=2); do { if(flag==1) { printf("Please input the name of the student you are finding:"); scanf("%s%*c",findname); } else { printf("Please input the number of the student you are finding:"); scanf("%s%*c",findnum); } for(p=head;p!=NULL;p=p->next) { if(strcmp(p->name,findname)==0||strcmp(p->num,findnum)==0) { printf("successfully found:\nname "); n1=strlen(p->name); n1=(n1>4)?n1:4; for(i=0;i<n1-4;i++) putchar(' '); printf("number "); n2=strlen(p->num); n2=(n2>6)?n2:6; for(i=0;i<n2-6;i++) putchar(' '); for(i=0;i<num_of_sub;i++) printf("%s ",subcall[i]); if(num_of_sub>0) printf("sum aver"); putchar('\n'); printf("%s ",p->name); k=strlen(p->name); for(i=0;i<n1-k;i++) putchar(' '); printf("%s ",p->num); k=strlen(p->num); for(i=0;i<n2-k;i++) putchar(' '); for(i=0;i<num_of_sub;i++) { printf("%.1f ",p->score[i]); k=strlen(subcall[i]); for(;k-4>0;k--) putchar(' '); } if(num_of_sub>0) printf("%.2f %.2f",p->sum,p->aver); putchar('\n'); break; } } if(p==NULL) printf("The student doesn't exist!\n"); while(1) { printf("Do you want to go on searching(Y/N or y/n)?"); reply=getchar(); if(reply=='\n') continue; else c=getchar(); if((reply=='Y'||reply=='N'||reply=='y'||reply=='n')&&c=='\n') break; else if(c!='\n') while(c=getchar()!='\n'); } } while(reply=='Y'||reply=='y'); } struct data *Delete(struct data *head) { struct data *p,*q; char delname[LENGTH]={'\0'}; char delnum[LENGTH]={'\0'}; char reply,c; int flag; system("cls"); do { printf("Do you want to delete all the data(enter 1) or just one student's data(enter 2)?"); scanf("%d%*c",&flag); } while(flag!=1&&flag!=2); if(flag==1) { num_of_stu=0; free(head); printf("Successfully deleted!\n"); return NULL; } else { do { printf("Do you want to delete the data by name(enter 1) or by number(enter 2)?"); scanf("%d%*c",&flag); } while(flag!=1&&flag!=2); do { if(flag==1) { printf("Please input the name of the student whose data you want to delete:"); scanf("%s%*c",delname); } else { printf("Please input the number of the student whose data you want to delete:"); scanf("%s%*c",delnum); } for(p=head;p!=NULL;q=p,p=p->next) { if(strcmp(p->name,delname)==0||strcmp(p->num,delnum)==0) { if(p==head) head=p->next; else q->next=p->next; num_of_stu--; free(p); printf("Successfully deleted!\n"); break; } } if(p==NULL) printf("The student doesn't exist!\n"); if(num_of_stu==0) reply='N'; else { while(1) { printf("Do you want to go on deleting(Y/N or y/n)?"); reply=getchar(); if(reply=='\n') continue; else c=getchar(); if((reply=='Y'||reply=='N'||reply=='y'||reply=='n')&&c=='\n') break; else if(c!='\n') while(c=getchar()!='\n'); } } } while(reply=='Y'||reply=='y'); return head; } } struct data *Sort1(struct data *head,int (*g)(float,float)) { struct data *p,*q,*t,*pf=NULL,*qf=NULL,*tf=NULL,*temp; system("cls"); for(p=head;p!=NULL;pf=t,p=t->next) { t=p; for(q=p->next;q!=NULL;qf=q,q=q->next) { if((*g)(q->sum,t->sum)) { t=q; tf=qf; } } if(t!=p) { if(p==head) head=t; else pf->next=t; if(t==p->next) { p->next=t->next; t->next=p; } else { temp=p->next; p->next=t->next; t->next=temp; tf->next=p; } } } List(head); return head; } void Sort2(struct data *head,int (*g)(float,float)) { struct data **queue=(struct data**)malloc(num_of_stu*sizeof(struct data*)); struct data *p,*t; int n1=0,n2=0,k,i,j; system("cls"); if(queue==NULL) { printf("No enough memory!\n"); return; } while(n1<num_of_stu) { for(t=head;t!=NULL;t=t->next) { for(i=0;i<n1;i++) { if(t==queue[i]) break; } if(i==n1) break; } for(p=t->next;p!=NULL;p=p->next) { for(i=0;i<n1;i++) { if(p==queue[i]) break; } if(i<n1) continue; if((*g)(p->sum,t->sum)) t=p; } queue[n1]=t; n1++; } n1=0; printf("name "); for(i=0;i<num_of_stu;i++) { k=strlen(queue[i]->name); n1=(n1>- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 综合 实验 图书馆 管理 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文