1、VC++综合试验 图书馆管理系统.txt都是一种山旳狐狸,你跟我讲什么聊斋,站在离你近来旳地方,眺望你对他人旳微笑,虽然心是百般旳疼痛 只为把你旳一举一动尽收眼底.耀眼旳白色,让我明白什么是纯粹旳伤害。#include
2、TH]; 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*);
3、 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.S
4、earch 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 S
5、tudents' 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-----------------
6、\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 n
7、o 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;
8、 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();
9、 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;
10、 } } } 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=
11、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 12、
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 13、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')
14、 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 15、>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 16、))->name)==0)
break;
}
if(i 17、y inputed.\n",n);
n=0;
for(p=head;p!=NULL;p=p->next)
{
for(i=0;i 18、peatedly!\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 19、");
scanf("%d%*c",&maxlim);
if(maxlim 20、f("%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 21、 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( 22、"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') 23、
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 24、);
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')
{
25、 do
{
printf("Please input the name of the subject whose score you want to modify:");
scanf("%s%*c",modscore);
for(i=0;i 26、ntf("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)
{
27、 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== 28、'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 29、 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');
30、
}
}
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 31、"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 32、t)
{
printf("%s ",p->name);
k=strlen(p->name);
for(i=0;i 33、 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, 34、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:");
35、 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 36、");
n1=strlen(p->name);
n1=(n1>4)?n1:4;
for(i=0;i 37、 if(num_of_sub>0)
printf("sum aver");
putchar('\n');
printf("%s ",p->name);
k=strlen(p->name);
for(i=0;i 38、0;i 39、
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== 40、'\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
41、 {
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
{
42、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",de 43、lname);
}
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; 44、
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)
{
45、 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;
46、 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! 47、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;
}
el 48、se
{
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,n 49、2=0,k,i,j;
system("cls");
if(queue==NULL)
{
printf("No enough memory!\n");
return;
}
while(n1 50、)
{
for(i=0;i






