图书信息管理系统源程序文档格式.docx
- 文档编号:17020710
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:19
- 大小:18.06KB
图书信息管理系统源程序文档格式.docx
《图书信息管理系统源程序文档格式.docx》由会员分享,可在线阅读,更多相关《图书信息管理系统源程序文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
voidnumsearch(stu*head,longnum);
voidnamesearch(stu*head,charname[]);
intn;
stu*creat(void)
{
stu*head,*p1,*p2;
n=0;
p1=p2=(stu*)malloc(LEN);
printf("
请输入图书信息!
\n"
);
head=NULL;
p1=input(head,p1);
while(p1->
number!
=0)
n=n+1;
if(n==1)head=p1;
elsep2->
next=p1;
p2=p1;
p1=(stu*)malloc(LEN);
}
p2->
next=NULL;
return(head);
stu*input(stu*head,stu*p1)/*输入图书的信息*/
inti,f,k;
stu*p2;
loop:
printf("
图书号(为整数,输入0时返回上一级):
"
scanf("
%ld"
&
p1->
number);
if(p1->
number<
0){
图书号不能为负数,请重新输入!
gotoloop;
else{
number==0)
return(p1);
else{
p2=head;
f=0;
for(i=1;
i<
=n;
i++){
number==p2->
number)
{f=1;
break;
p2=p2->
next;
}
if(f)
{printf("
图书不能重复,请重新输入!
gotoloop;
书名:
%s"
p1->
name);
loop1:
类别:
1.文科2.理科\n"
请选择类别:
%d"
k);
switch(k)
case1:
strcpy(p1->
sex,"
文科"
case2:
理科"
default:
类别只能是“文科”或“理科”,请重新输入!
gotoloop1;
存期:
age);
age<
0||p1->
age>
120){
你输入的存期不符合实际情况,请重新输入!
章数:
%f"
chinese);
while(p1->
chinese<
chinese>
100){
你输入的章数不符合实际情况,请重新输入!
页数:
math);
math<
math>
你输入的页数不符合实际情况,请重新输入!
阅读次数:
english);
english<
english>
你输入的阅读次数不符合实际情况,请重新输入!
p1->
sum=p1->
chinese+p1->
math+p1->
english;
average=p1->
sum/3;
voidsearch(stu*head)
intk;
longnum;
if(n==0)
{printf("
数据库为空,没有图书的记录!
return;
do{
1.按书号查找2.按书名查找0.返回上一级\n"
请选择:
switch(k)
{
case1:
do{
书号(输入0时跳出按书号查找):
num);
if(num==0)break;
if(num>
0)
numsearch(head,num);
else
输入错误,请重新选择!
}while
(1);
break;
case2:
书名(输入0时跳出按书名查找):
name);
书号\t书名\t类别\t存期\t章数\t页数\t阅读次数\t总次数\t平均次数\n"
namesearch(head,name);
}while(strcmp(name,"
0"
)!
=0);
case0:
default:
}while(k!
voidnumsearch(stu*head,longnum)
stu*p1;
p1=head;
while(p1!
=NULL)
if(num==p1->
number){
%ld\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n"
number,p1->
name,p1->
sex,p1->
age,p1->
chinese,p1->
math,p1->
english,p1->
sum,p1->
average);
return;
p1=p1->
没有找到你要查找的图书信息!
voidnamesearch(stu*head,charname[])
inta=1;
if(strcmp(name,p1->
name)==0){
a=0;
if(a)
stu*changes(stu*head)
1.修改2.删除3.插入0.返回上一级\n"
if(n==0){
请输入图书的书号(书号应为整数,输入0时跳出修改数据):
head=modify(head,num);
书号不能为负数,请重新输入!
if(n==0){printf("
数据库为空,没有图书信息!
请输入要删除的图书的书号(书号应为整数,输入0时跳出删除元素):
head=del(head,num);
case3:
{head=insert(head,p1);
print(head);
输入错误,请重新输入!
}while(k!
voidsort(stu*head)
intk;
数据库为空,没有图书记录!
1.按书号排序2.按总次数和平均次数排序3.按章数成绩排序4.按页数排序5.按阅读次数排序0.返回上一级\n"
print(head);
total_average_sort(head);
chinese_sort(head);
case4:
math_sort(head);
case5:
english_sort(head);
voidtotal_average_sort(stu*head)
stu*p1,*p2;
intj=0;
floatmax,k=301;
max=0;
for(p1=head;
p1;
p1=p1->
next)
sum>
max&
&
sum<
k){
max=p1->
sum;
k=max;
for(p1=p2;
sum==max){
j++;
}while(j<
n);
voidchinese_sort(stu*head)
floatk=101,max;
chinese;
chinese==max){
voidmath_sort(stu*head)
math;
math==max){
voidenglish_sort(stu*head)
english==max){
stu*modify(stu*head,longnum)
intk,m;
number==num)
1.书名2.类别3.存期4.章数成绩5.页数6.阅读次数0.返回上一级\n"
scanf("
修改成功!
loop2:
1.文科2.理科\n"
m);
switch(m)
理科"
类别只能是“文科”或“理科”,请重新输入!
gotoloop2;
章数成绩:
你输入的章数成绩不符合实际情况,请重新输入!
case6:
年输入的阅读次数不符合实际情况,请重新输入!
没有找到你要修改的图书的信息!
stu*del(stu*head,longnum)
stu*p1,*p2;
if(head==NULL){printf("
\n"
gotoend;
while(num!
=p1->
number&
next!
if(p1==head){head=p1->
删除成功!
else{p2->
next=p1->
n=n-1;
elseprintf("
没有找到你要删除的图书信息!
num);
end:
;
stu*insert(stu*head,stu*stud)
stu*p0,*p1,*p2;
p0=stud;
if(head==NULL)
{head=p0;
p0->
{while((p0->
number>
number)&
(p1->
=NULL))
if(p0->
if(head==p1)head=p0;
next=p0;
p0->
voidStatistics(stu*head)
inti,c=0,m=0,e=0;
floatcmax=0,mmax=0,emax=0,summax=0,averagemax=0;
=cmax)
cmax=p1->
=mmax)
mmax=p1->
=emax)
emax=p1->
=summax)
su
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 信息管理 系统 源程序