小型图书信息管理系统C语言.docx
《小型图书信息管理系统C语言.docx》由会员分享,可在线阅读,更多相关《小型图书信息管理系统C语言.docx(16页珍藏版)》请在冰点文库上搜索。
![小型图书信息管理系统C语言.docx](https://file1.bingdoc.com/fileroot1/2023-5/6/b988084a-7ad0-4c89-91e6-82ad8b370179/b988084a-7ad0-4c89-91e6-82ad8b3701791.gif)
小型图书信息管理系统C语言
1.题目
《小型图书信息管理系统》的设计与实现
2.功能
(1)每一条记录包括一本图书的书名、ISBN、作者、出版社、定价、出版日期和数量。
(2)输入功能:
可以一次完成无数条记录的输入。
(3)显示功能:
完成全部图书信息的显示。
(4)查找功能:
完成按书名查找图书信息,并显示。
(5)排序功能:
按图书价格进行排序。
(6)插入功能:
按图书价格高低插入一条图书信息。
(7)保存功能:
将图书信息保存在任何自定义的文件中,如保存在:
c:
\book。
(8)读取功能:
将保存在文件中的图书信息读取出来。
(9)有一个清晰美观界面来调用各个功能
3.要求
(1)整个系统均用C语言实现;
(2)利用指针、链表来实现学生成绩的数据结构设计;
(3)系统具有输入、显示、查询、删除、排序、插入,保存、读取基本功能;
(4)系统的各个功能模块都用函数的形式来实现;
(5)可以将图书信息保存在文件中。
(6)可以将图书信息从文件中读取出来。
4.源程序
#include
#include
#include
#include
#include
#defineLLsizeof(BOOK_TYPE)
intmaininterface();
voidinfor_input();
voidrefer();
voidrefer_1();
voidrefer_2();
voidmodify();
voiddelete();
voidfindbook();
voidfindbook1();
voidfindbook2();
voiddevise();
voidmain()
{
inta=0;
do
{
a=maininterface();
switch(a)
{
case1:
system("CLS");infor_input();break;
case2:
system("CLS");refer();break;
case3:
system("CLS");modify();break;
case4:
system("CLS");delete();break;
case5:
exit(0);
default:
system("CLS");printf("\n\n\n\n\t\t\t无此操作,请按任意键返回:
\n");getch();system("CLS");
}
}while(a!
=6);
}
intmaininterface()
{
intn;
printf("\n\n\n\t\t------------小型图书登记管理系统-----------\n");
printf("\n\t\t\t\t1:
<录入图书信息>\n");
printf("\n\t\t\t\t2:
<查询信息>\n");
printf("\n\t\t\t\t3:
<修改图书信息>\n");
printf("\n\t\t\t\t4:
<删除图书信息>\n");
printf("\n\t\t\t\t5:
<退出系统>\n");
printf("\n\t\t\t请输入1--5,其他输入非法!
\n");
scanf("%d",&n);
returnn;
}
typedefstruct
{
intmonth;
intday;
intyear;
}DATES;
DATESday;
typedefstructbooks
{
charbookname[50];
charISBN[50];
charauthor[50];
charpublisher[50];
floatmoney;
DATESday;
intcount;
structbooks*next;
}BOOK_TYPE;
BOOK_TYPEts;
structbooks*head=NULL;
voidinfor_input()
{
FILE*fp;
intn=0;
BOOK_TYPEts;
printf("---------------图书资料基本信息录入--------------\n");
do
{
printf("请输入书名\n");
scanf("%s",ts.bookname);
printf("请输入ISBN\n");
scanf("%s",ts.ISBN);
printf("请输入作者\n");
scanf("%s",ts.author);
printf("请输入出版社\n");
scanf("%s",ts.publisher);
printf("请输入定价\n");
scanf("%f",&ts.money);
printf("请输入出版日期\n");
scanf("%d/%d/%d",&ts.day.month,&ts.day.day,&ts.day.year);
printf("请输入数量\n");
scanf("%d",&ts.count);
printf("\n\t\t\t请选择(1:
确定\t2:
取消\t0:
重新输入):
");
scanf("%d",&n);
}while(n==0);
if(n==1)
{
if((fp=fopen("book.txt","a"))==NULL)/*若"book.txt"文件不存在,则以创建方式打开文件*/
{
fp=fopen("book.txt","w+");
}
fwrite(&ts,LL,1,fp);/*将输入的图书信息写入磁盘文件"book.txt"*/
fclose(fp);
}
system("CLS");
printf("输入成功!
\n");
printf("请选择(1:
返回主界面\t2:
输入另一本图书信息\t0:
退出系统):
\n");
scanf("%d",&n);
switch(n)
{
case1:
system("CLS");break;
case2:
system("CLS");infor_input();break;
case0:
break;
default:
printf("无此操作,按任意键返回\n");getch();system("CLS");break;
}
}
voidrefer()
{
intn;
printf("1:
<根据ISBN号,找出图书信息>\n");
printf("2:
<根据出版社名称,找出所有图书信息>\n");
printf("3:
<根据书名,找出图书信息>\n");
printf("4:
<统计书籍总数>\n");
printf("5:
<统计书籍总金额和平均价格>\n");
printf("0:
<返回>\n");
printf("请输入0--5,其他输入非法!
\n");
scanf("%d",&n);
switch(n)
{
case1:
system("CLS");findbook();break;
case2:
system("CLS");findbook1();break;
case3:
system("CLS");findbook2();break;
case4:
system("CLS");refer_1();break;
case5:
system("CLS");refer_2();break;
case0:
system("CLS");break;
default:
printf("无此操作\n");break;
}
}
structbooks*read_1()
{
FILE*fp;
structbooks*p1,*p2,*head;
fp=fopen("book.txt","r");
head=p1=(BOOK_TYPE*)malloc(LL);
fread(p1,LL,1,fp);
while(feof(fp)==0)
{
p2=(BOOK_TYPE*)malloc(LL);
fread(p2,LL,1,fp);
p1->next=p2;
p1=p2;
}
p1->next=NULL;
fclose(fp);
returnhead;
}
voidrefer_1()
{
structbooks*head,*p,*d;
structbooks*read_1();
inttotal=0;
head=read_1();
for(p=head;p->next!
=NULL;d=p,p=p->next,free(d))
{
total=total+p->count;
}
printf("书籍总数:
%d\n",total);
printf("按任意键返回");getch();system("CLS");
}
voidrefer_2()
{
intnum=0;
structbooks*head,*p1,*p2;
structbooks*read_1();
floattotal=0,average=0;
head=read_1();
for(p1=head;p1->next!
=NULL;p2=p1,p1=p1->next,free(p2))
{
num=num+p1->count;
total=total+p1->money*p1->count;
}
average=total/num;
printf("书籍总金额:
%.2f\n",total);
printf("书籍平均价格:
%.2f\n",average);
printf("按任意键返回");getch();system("CLS");
}
voidfindbook()
{
FILE*fp;
charISBN[50];
inti;
fp=fopen("book.txt","r");
printf("请输入书的ISBN号\n");
scanf("%s",ISBN);
for(i=0;fread(&ts,LL,1,fp)!
=0;i++)
{
if(strcmp(ISBN,ts.ISBN)==0)
printf("这本书的详细资料为:
%s%s%s%s%f%d/%d/%d%d\n按任意键返回\n",ts.bookname,ts.ISBN,ts.author,ts.publisher,ts.money,ts.day.month,ts.day.day,ts.day.year,ts.count);
}
printf("没有你所需要的书籍");
fclose(fp);
}
voidfindbook1()
{
FILE*fp;
charpublisher[50];
inti;
fp=fopen("book.txt","r");
printf("请输入书的publisher\n");
scanf("%s",publisher);
for(i=0;fread(&ts,LL,1,fp)!
=0;i++)
{
if(strcmp(publisher,ts.publisher)==0)
printf("这本书的详细资料为:
%s%s%s%s%f%d/%d/%d%d\n按任意键返回\n",ts.bookname,ts.ISBN,ts.author,ts.publisher,ts.money,ts.day.month,ts.day.day,ts.day.year,ts.count);
}
printf("没有你所需要的书籍");
fclose(fp);
}
voidfindbook2()
{
FILE*fp;
charbookname[50];
inti;
fp=fopen("book.txt","r");
printf("请输入书的bookname\n");
scanf("%s",bookname);
for(i=0;fread(&ts,LL,1,fp)!
=0;i++)
{
if(strcmp(bookname,ts.bookname)==0)
printf("这本书的详细资料为:
%s%s%s%s%f%d/%d/%d%d\n按任意键返回\n",ts.bookname,ts.ISBN,ts.author,ts.publisher,ts.money,ts.day.month,ts.day.day,ts.day.year,ts.count);
}
printf("没有你所需要的书籍");
fclose(fp);
}
voiddelete()
{
structbooks*p1,*p2;
charISBN[50];
inte=0;
if(head==NULL)
{
printf("无书籍记录");
return;
}
printf("请输入您要删除的书籍的ISBN:
\n");
scanf("%s",ISBN);
p1=head;
while(ISBN!
=p1->ISBN&&p1->next!
=NULL)
{
p2=p1;
p1=p1->next;
}
if(ISBN==p1->ISBN)
{
if(p1==head)
head=p1->next;
elsep2->next=p1->next;
free(p1);
e--;
}
else
printf("没有该书籍记录,请核对!
\n");
}
voidmodify()
{
structbooks*p1,*p2;
charISBN[50];
if(head==NULL)
{
printf("无书籍记录!
\n");
return;
}
printf("请输入您要修改的书籍的ISBN\n:
");
scanf("%s",ISBN);
p1=head;
while(ISBN!
=p1->ISBN&&p1->next!
=NULL)
{
p2=p1;
p1=p1->next;
}
if(ISBN==p1->ISBN)
devise(p1);
else
printf("没有该学生记录,请核对!
\n");
}
voiddevise(structbooks*p)
{
intchoice;
choice=-1;
do
{
printf("请选择您要修改的书籍的信息内容:
\n");
printf("+----------------------+\n");
printf("|书名请按1|\n");
printf("|ISBN请按2|\n");
printf("|作者请按3|\n");
printf("|出版社请按4|\n");
printf("|定价请按5|\n");
printf("|出版日期请按6|\n");
printf("|数量请按7|\n");
printf("|取消请按0|\n");
printf("+----------------------+\n");
printf("请输入您的选择:
");
scanf("%d",&choice);
switch(choice)
{
case0:
return;
case1:
printf("请输入新书名:
");
scanf("%s",p->bookname);
break;
case2:
printf("请输入新ISBN:
");
scanf("%s",&p->ISBN);
break;
case3:
printf("请输入新作者:
");
scanf("%s",p->author);
break;
case4:
printf("请输入新出版社:
");
二、问答题:
scanf("%s",p->publisher);
break;
case5:
5、月球在圆缺变化过程中出现的各种形状叫作月相。
月相变化是由于月球公转而发生的。
它其实是人们从地球上看到的月球被太阳照亮的部分。
printf("请输入新定价:
");
scanf("%d",p->money);
break;
5、减少垃圾的数量是从源头上解决问题的办法,我们每个人都可以想出许多减少垃圾数量的方法。
case6:
printf("请输入新出版日期:
");
5、在咀嚼米饭过程中,米饭出现了甜味,说明了什么?
scanf("%ld",&p->day.month,day.day,day.year);
break;
case7:
2、1969年7月,美国的“阿波罗11号”载人飞船成功地在月球上着陆。
printf("请输入新数量:
");
scanf("%s",p->count);
break;
default:
预计未来20年,全球人均供水量还将减少1/3。
printf("\n无效选项!
");
break;
6、月球是一个不发光、不透明的球体,我们看到的月光是它反射太阳的光。
}
}
while(choice!
=0);
}
经过一个多星期的C语言课程设计,感觉自己收获不少!
首先是:
链表本来上课是没有上的,但这个课程设计里面主要都是用链表,因为要达到这样的功能,使用链表相当方便,但不容易理解,所以在这方面我很了很多的时间看课本和参考课外书,使C语言的知识强化了不少。
8、对生活垃圾进行分类和分装,这是我们每个公民应尽的义务。
其次,在做课程设计的过程中,发现了平时很多没有注意到的问题,例如:
返回值函数和不返回值函数两者在主函数中的调用是不同的…………
4、小苏打和白醋混合后,产生了一种新物质——二氧化碳气体,这种气体能使燃着的火焰熄灭,这样的变化属于化学变化。
更重要的是,这次课程设计虽然花了我不少时间,但正是这些时间,让我见识到了C语言的重要性。
这个学生成绩管理系统都是在自己知识范围内完成的,所以界面清晰简单,可能不是很好看,但绝对实用!
答:
当月球运行到地球和太阳的中间,如果月球挡住了太阳射向地球的光,便发生日食。
从这里我也得到一个体会,做一个程序,或者开发一个软件,应该着重从它的后台制作入手,不能做出一个中看不中用的程序或者软件。
相信这次的课程设计为我以后继续从事计算机工作打了一个小小的开头。
由于这是第一次进行设计,写文档,难免会写得不好!