图书管理系统.docx

上传人:b****7 文档编号:9252226 上传时间:2023-02-03 格式:DOCX 页数:18 大小:17.24KB
下载 相关 举报
图书管理系统.docx_第1页
第1页 / 共18页
图书管理系统.docx_第2页
第2页 / 共18页
图书管理系统.docx_第3页
第3页 / 共18页
图书管理系统.docx_第4页
第4页 / 共18页
图书管理系统.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

图书管理系统.docx

《图书管理系统.docx》由会员分享,可在线阅读,更多相关《图书管理系统.docx(18页珍藏版)》请在冰豆网上搜索。

图书管理系统.docx

图书管理系统

二、图书管理系统

图书管理系统需建立2个表:

图书库和读者库。

设计要求与分析

(1)图书数据库的建立:

按书号有序,使用线性表结构(顺序存储或链式存储),用文件保存;

读者数据库的建立:

按借书证号有序,使用线性表结构(顺序存储或链式存储),用文件保存;

如用链式存储结构,图书和读者结点如下定义:

typedefstructtushu//图书结点

{charnumber[15];//书号

charbook[15];//书名

charname[10];//作者

charpup[15];//出版社

intys;//页数

inttal;//藏书数

intkc;//库存

structtushu*next;

}tushu;

typedefstructshu//只有书名的结点

{charbook[15];//书名

structshu*next;

}shu;

typedefstructduzhe//读者结点

{charnumber[15];//借书证号

charname[10];//姓名

inttal;//可借书总数

intyj;//已借书数

shu*s;//所借书链表,由类型为shu的结点组成,初值为NULL

structduzhe*next;

}duzhe;

(2)程序运行后,出现登录界面,(参考通讯录管理系统)选择管理者和普通读者;

(3)选择普通读者只能做查询类工作;

(4)选择管理者需要密码登录,如连续输错3次密码,则被退出系统;管理员可做所有操作。

(5)菜单设计可分图书管理和读者管理(可参考通讯录管理系统),

而每次执行完相应的功能后能返回主菜单。

(a)图书管理可实现:

1.增加图书记录

2.查询图书信息--a.按书号查询b.按书名查询c.按作者查询

3.删除图书记录

4.修改图书信息

5.显示全部图书信息

0.返回上层菜单

(b)读者管理可实现:

1.增加读者记录

2.查询读者信息--a.按借书证号查询b.按姓名查询

3.删除读者记录

4.修改读者信息

5.显示全部读者信息

6.借还书

0.返回上层菜单

根据以上菜单项设计相应的功能函数。

每次执行完相应的功能后能返回主菜单。

分析:

借还书时需输入借书证号和书号,由借书证号可得到读者信息,由书号可得到图书信息,

修改图书的库存,读者的已借书数,借书链表等,借书时还要求已借书数要小于可借书数。

#include

#include"string.h"

typedefstructstudent

{

intnum;

charname[20];

intchineseScore;

intenglishScore;

intmathScore;

floataverage;

intsum;

structstudent*next;

}student,*stuNode;

voidAppendRecord(stuNodeL)

{

stuNodeq,p=L;

while(p->next!

=NULL)p=p->next;

q=(stuNode)malloc(sizeof(student));

printf("请输入学号:

");

scanf("%d",&q->num);

printf("请输入姓名:

");

scanf("%s",q->name);

A:

printf("请输入语文成绩:

");

scanf("%d",&q->chineseScore);

if(q->chineseScore>100||q->chineseScore<0){printf("输入不正确!

请重新输入!

\n");gotoA;}

B:

printf("请输入英语成绩:

");

scanf("%d",&q->englishScore);

if(q->chineseScore>100||q->chineseScore<0){printf("输入不正确!

请重新输入\n!

");gotoB;}

C:

printf("请输入数学成绩:

");

scanf("%d",&q->mathScore);

if(q->chineseScore>100||q->chineseScore<0){printf("输入不正确!

请重新输入\n!

");gotoC;}

q->sum=q->chineseScore+q->englishScore+q->mathScore;

q->average=((float)q->sum)/3;

p->next=q;

q->next=NULL;

printf("添加成功!

\n");

}

voidListRecord(stuNodeL)

{

stuNodeq=L;

if(q->next==NULL)printf("没有任何学生成绩记录!

\n");

else

{

q=q->next;

while(q!

=NULL)

{

printf("学号:

%d姓名:

%s语文:

%d数学:

%d英语:

%d总分:

%d平均分:

%.2f\n",q->num,q->name,q->chineseScore,q->mathScore,q->englishScore,q->sum,q->average);

q=q->next;

}

}

}

voidDeleteRecord(stuNodeL)

{

stuNodep,q=L;

intflag=0;

intdeletenum;

printf("输入要删除的学生学号:

");

scanf("%d",&deletenum);

while(q->next!

=NULL)

{

if(q->next->num==deletenum)

{

p=q->next;

q->next=q->next->next;

free(p);

flag=1;

break;

}

q=q->next;

}

if(flag==0)

printf("没有找到该记录!

\n");

else

printf("删除成功!

");

}

voidModifyRecord(stuNodeL)

{

stuNodeq=L;

intNumToModify,flag=0;

printf("输入要修改的学号:

");

scanf("%d",&NumToModify);

while(q->next!

=NULL)

{

if(q->next->num==NumToModify)

{

printf("请输入学号:

");

scanf("%d",&q->next->num);

printf("请输入姓名:

");

scanf("%s",q->next->name);

printf("请输入语文成绩:

");

scanf("%d",&q->next->chineseScore);

printf("请输入英语成绩:

");

scanf("%d",&q->next->englishScore);

printf("请输入数学成绩:

");

scanf("%d",&q->next->mathScore);

q->next->sum=q->next->chineseScore+q->next->englishScore+q->next->mathScore;

q->next->average=q->next->sum/3;

flag=1;

break;

}

q=q->next;

}

if(flag==1)

printf("修改成功!

\n");

else

printf("找不到该学号!

\n");

}

voidSearchRecord(stuNodeL)

{

stuNodeq=L;

intNumToSearch,flag=0;

printf("输入要查询的学号:

");

scanf("%d",&NumToSearch);

while(q->next!

=NULL)

{

if(q->next->num==NumToSearch)

{

q=q->next;

printf("学号:

%d姓名:

%s语文:

%d数学:

%d英语:

%d总分:

%d平均分:

%.2f\n",q->num,q->name,q->chineseScore,q->mathScore,q->englishScore,q->sum,q->average);

flag=1;

break;

}

q=q->next;

}

if(flag==0)

printf("没有找到该记录!

\n");

}

voidDescendOrderByNum(stuNodeL)

{

stuNodep,q;

inttemp;

chartempstr[20];

for(p=L->next;p!

=NULL;p=p->next)

{

for(q=p->next;q!

=NULL;q=q->next)

{

if(p->numnum)

{

temp=q->num;

q->num=p->num;

p->num=temp;

temp=q->chineseScore;

q->chineseScore=p->chineseScore;

p->chineseScore=temp;

temp=q->englishScore;

q->englishScore=p->englishScore;

p->englishScore=temp;

temp=q->mathScore;

q->mathScore=p->mathScore;

p->mathScore=temp;

temp=q->average;

q->average=p->average;

p->average=temp;

temp=q->sum;

q->sum=p->sum;

p->sum=temp;

strcpy(tempstr,q->name);

strcpy(q->name,p->name);

strcpy(p->name,tempstr);

}

}

}

}

voidAscendOrderByNum(stuNodeL)

{

stuNodep,q;

inttemp;

chartempstr[20];

for(p=L->next;p!

=NULL;p=p->next)

{

for(q=p->next;q!

=NULL;q=q->next)

{

if(p->num>q->num)

{

temp=q->num;

q->num=p->num;

p->num=temp;

temp=q->chineseScore;

q->chineseScore=p->chineseScore;

p->chineseScore=temp;

temp=q->englishScore;

q->englishScore=p->englishScore;

p->englishScore=temp;

temp=q->mathScore;

q->mathScore=p->mathScore;

p->mathScore=temp;

temp=q->average;

q->average=p->average;

p->average=temp;

temp=q->sum;

q->sum=p->sum;

p->sum=temp;

strcpy(tempstr,q->name);

strcpy(q->name,p->name);

strcpy(p->name,tempstr);

}

}

}

}

voidDescendOrderBySum(stuNodeL)

{

stuNodep,q;

inttemp;

chartempstr[20];

for(p=L->next;p!

=NULL;p=p->next)

{

for(q=p->next;q!

=NULL;q=q->next)

{

if(p->sumsum)

{

temp=q->num;

q->num=p->num;

p->num=temp;

temp=q->chineseScore;

q->chineseScore=p->chineseScore;

p->chineseScore=temp;

temp=q->englishScore;

q->englishScore=p->englishScore;

p->englishScore=temp;

temp=q->mathScore;

q->mathScore=p->mathScore;

p->mathScore=temp;

temp=q->average;

q->average=p->average;

p->average=temp;

temp=q->sum;

q->sum=p->sum;

p->sum=temp;

strcpy(tempstr,q->name);

strcpy(q->name,p->name);

strcpy(p->name,tempstr);

}

}

}

}

voidAscendOrderBySum(stuNodeL)

{

stuNodep,q;

inttemp;

chartempstr[20];

for(p=L->next;p!

=NULL;p=p->next)

{

for(q=p->next;q!

=NULL;q=q->next)

{

if(p->sum>q->sum)

{

temp=q->num;

q->num=p->num;

p->num=temp;

temp=q->chineseScore;

q->chineseScore=p->chineseScore;

p->chineseScore=temp;

temp=q->englishScore;

q->englishScore=p->englishScore;

p->englishScore=temp;

temp=q->mathScore;

q->mathScore=p->mathScore;

p->mathScore=temp;

temp=q->average;

q->average=p->average;

p->average=temp;

temp=q->sum;

q->sum=p->sum;

p->sum=temp;

strcpy(tempstr,q->name);

strcpy(q->name,p->name);

strcpy(p->name,tempstr);

}

}

}

}

voidWriteToFile(stuNodeL)

{

stuNodeq=L;

FILE*fp;

fp=fopen("d:

\\student.txt","w");

if(fp==NULL)

{

printf("无法创建文件!

");

return;

}

while(q->next!

=NULL)

{

fprintf(fp,"%d%s%d%d%d%d%.2f\n",q->next->num,q->next->name,q->next->chineseScore,q->next->mathScore,q->next->englishScore,q->next->sum,q->next->average);

q=q->next;

}

fclose(fp);

printf("写入成功!

");

}

voidReadFromFile(stuNodeL)

{

stuNodep,q=L;

FILE*fp;

fp=fopen("d:

\\student.txt","r");

if(fp==NULL)

{

printf("无法读取文件!

");

return;

}

while(!

feof(fp))

{

while(q->next!

=NULL)q=q->next;

p=(stuNode)malloc(sizeof(student));

fscanf(fp,"%d%s%d%d%d%d%f\n",&p->num,p->name,&p->chineseScore,&p->mathScore,&p->englishScore,&p->sum,&p->average);

q->next=p;

p->next=NULL;

}

fclose(fp);

printf("读入成功!

");

}

intmain(intargc,char*argv[])

{

charoption;

stuNodestuHead;

stuHead=(stuNode)malloc(sizeof(student));

stuHead->next=NULL;

while

(1)

{

printf("ManagementforStudents'scores\n");

printf("1.Appendrecord\n");

printf("2.Listrecord\n");

printf("3.Deleterecord\n");

printf("4.Modifyrecord\n");

printf("5.Searchrecord\n");

printf("6.Sortindescendingorderbysum\n");

printf("7.Sortinascendingorderbysum\n");

printf("8.Sortindescendingorderbynum\n");

printf("9.Sortinascendingorderbynum\n");

printf("W.WritetoaFile\n");

printf("R.ReadfromaFile\n");

printf("0.Exit\n");

printf("Pleaseinputyourchoice:

");

scanf("%c",&option);

switch(option)

{

case'1':

AppendRecord(stuHead);break;

case'2':

ListRecord(stuHead);break;

case'3':

DeleteRecord(stuHead);break;

case'4':

ModifyRecord(stuHead);break;

case'5':

SearchRecord(stuHead);break;

case'6':

DescendOrderBySum(stuHead);break;

case'7':

AscendOrderBySum(stuHead);break;

case'8':

DescendOrderByNum(stuHead);break;

case'9':

AscendOrderByNum(stuHead);break;

case'w':

WriteToFile(stuHead);break;

case'r':

ReadFromFile(stuHead);break;

default:

printf("errorinput\n");

}

system("PAUSE");

}

system("PAUSE");

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1