图书馆管理系统文档含源代码免费.docx
- 文档编号:24306095
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:56
- 大小:229.41KB
图书馆管理系统文档含源代码免费.docx
《图书馆管理系统文档含源代码免费.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统文档含源代码免费.docx(56页珍藏版)》请在冰豆网上搜索。
图书馆管理系统文档含源代码免费
程序设计综合训练
<图书馆管理系统>
设计报告
院系:
材料科学与工程学院
专业班级:
材料成型一班
姓名:
张成智
学号:
20111402128
指导老师:
肖老师
一、程序功能简介
图书排序功能
1)按图书编号排序
可以按图书编号的大小排序,显示到屏幕上。
(从小到大)
2)按图书出版时间排序
可以按图书出版时间的前后排序,显示到屏幕上。
(从近到远)
3)按图书价格排序
可以按图书价格的贵宜排序,显示到屏幕上。
(从便宜到贵)
4)按图书书名排序
可以按图书书名字符的大小排序,显示到屏幕上。
(从小到大)
5)按图书作者名排序
可以按图书作者名字符的大小排序,显示到屏幕上。
(从小到大)
二、本人完成的主要工作
图书排序功能(排序比较简单只要做出来一个,其他都和它雷同。
)
三、设计方案
1.设计分析;
1)序功能简介:
进入系统
s
按照编号、书名、作者名、出版社、类别、出版时间、
价格进行删除。
按照编号、书名、作者名、出版社、类别、出版时间、
价格进行排列。
选择编号、书名、作者名、出版社、类别、出版时间、
价格进行修改。
来。
输入0返回原始菜单。
||
2)各个功能流程图
1、按图书编号排序
2、按图书出版时间排序
3、按图书价格排序
输入排序的功能序号3
是
开始
输入y/n进,输入n的话返回到主菜单
Y/n
是(y)
显示排序
否(n)
按Enter
4、按图书书名排序
5、按图书作者名排序
2.操作方法简介;
1)主面板
输入密码9进入系统。
2)主菜单
按4进入排序功能。
2)排序功能目录
3)选择功能(比如3)
按价格的大小排序
3.实验结果(包括输入数据和输出结果)
四、设计体会
在期末课程设计中,我们所选择的是设计一个图书管理系统,这对我们来说是一次尝试与创新的过程,也可以说是一个挑战的过程,毕竟以前没有作过,缺少经验。
现在利用自己学到的知识设计并制作一个图书管理系统,这本身就是一个知识转化为生产力的过程,所以大家都很兴奋,不同程度的投入了很高的热情与努力。
在具体的设计与实施中,我们看到并感受到了一个管理系统从无到有的过程,对具体的设计步骤、思路、方法、技巧都有了进一步的了解,并感受深刻。
在设计中我们基本能按照规范的方法和步骤进行,首先对现有的系统进行调查,并查阅有关资料,最后确定设计方案,然后设计并制作,实施过程中我们深刻的认识到认真执行管理系统软件标准的重要性,我们由于对管理系统软件相关的标准和规范不太了解,缺少行为操作准则,所以在设计中手法比较生硬,主与次也没能很好把握住,这些方面通过这次我们都要加强了解。
在这次课程设计中,我们被分配以小组为单位去完成图书管理系统的设计与制作,所以小组内的分工和相互协调很重要,大家可以在分工中扬长避短,个及所长,这样可以很好的提高大家的积极性,和合作意识,并有效的缩短开发时间。
在其中我掌握了结构体的应用、链表的建立文件的操作、还有一个小的地方就是case'n'的应用。
五、参考资料
C/c++语言程序设计教程——从模块化到面向对象
六、附录
1.程序中主要变量、自定义函数的功能说明
voidpaixu(structbook*head);//对图书进行排序
voidnum_paixu(structbook*head);//按图书编号排序
voidtime_paixu(structbook*head);//按图书出版时间排序
voidprice_paixu(structbook*head);//按图书价格排序
voidbname_paixu(structbook*head);//按图书名排序
voidwname_paixu(structbook*head);//按作者名排序
While()循环提供可连续的选择操作
Switch()分支选择进行的操作。
system("cls");清空输入缓冲区,通常是为了确保不影响后面的数据读取。
输入0即可返回或停止输入。
●主要数据
intnum;编号;
charbname[50];书名;
charwname[20];作者名;
charpress[50];出版社;
charsort[50];图书类别;
inttime;出版时间;
floatprice;图书价格;
2.源程序代码
#include
#include
#include
structbook{
intnum;
charbname[50];
charwname[20];
charpress[50];
charsort[50];
inttime;
floatprice;
structbook*next;
};
structbook*creatbook();//创建链表
structbook*addbook(structbook*head);//添加图书
intyanzheng(structbook*head,intm);//验证新添加的图书编码是否已存在
voiddeletebook(structbook*head);//删除图书
voidfprint(structbook*head);//将链表写入文件
structbook*load();//从文件中读取信息并建成链表
voidprint_book(structbook*head);//将链表信息输出
voidchaxun(structbook*head);//查询图书信息
voidnum_chaxun(structbook*head);//按图书编号查询图书
voidwname_chaxun(structbook*head);//按作者名查询图书
voidsort_chaxun(structbook*head);//按类别查询图书
voidtime_chaxun(structbook*head);//按出版时间查询图书
voidbname_chaxun(structbook*head);//按图书名查询图书
voidxiugai(structbook*head);//修改图书信息
voidpaixu(structbook*head);//对图书进行排序
voidnum_paixu(structbook*head);//按图书编号排序
voidtime_paixu(structbook*head);//按图书出版时间排序
voidprice_paixu(structbook*head);//按图书价格排序
voidbname_paixu(structbook*head);//按图书名排序
voidwname_paixu(structbook*head);//按作者名排序
intmain()
{
intchoice,n,x,y=1,c,c1=1234;
chara,d,b[10],b1[10]="yjk";
structbook*head=NULL;
while(y){
system("cls");
printf("\n\n\n\n\n\n\n");
printf("**********欢迎光临**********\n\n");
printf("**********************图书信息管理系统************************\n\n\n");
printf("\n\n");
printf("============1-用户登录===========\n");
printf("============0-退出系统===========\n");
printf("请输入您的选择:
");
scanf("%d",&n);
printf("\n");
getchar();
switch(n){
case0:
y=0;
break;
case1:
printf("请输入您的用户名:
");
gets(b);
printf("\n");
printf("请输入您的密码:
");
scanf("%d",&c);
printf("\n");
if(c>=0&&c<=8){
printf("验证失败,请重新输入!
\n");
scanf("%c",&d);
getchar();
system("cls");
}
else{
printf("验证通过!
请按Enter键进入!
\n");
scanf("%c",&d);
getchar();
x=1;
while(x){
system("cls");
printf("------------------\n");
printf("*图书信息管理系统*\n");
printf("------------------\n\n");
printf("**********************************************\n\n");
printf("**********************************************\n\n");
printf("||1-添加图书2-删除图书||\n\n");
printf("||3-图书列表4-图书排序||\n\n");
printf("||5-查询图书6-修改图书||\n\n");
printf("||7-录入数据0-退出系统||\n\n");
printf("**********************************************\n\n");
printf("**********************************************\n\n");
printf("请输入所选择的序号:
");
scanf("%d",&choice);
getchar();
system("cls");
switch(choice)
{
case0:
x=0;break;
case1:
head=load();
if(head==NULL){
printf("文件为空,请先录入数据!
\n");
getchar();
break;
}
else{
head=addbook(head);
printf("添加成功!
\n");
printf("是否将新信息保存到文件?
(y/n)\n");
scanf("%c",&a);
getchar();
switch(a){
case'n':
break;
case'y':
fprint(head);
printf("保存成功!
\n");
getchar();
break;
}
break;
}
case2:
head=load();
if(head==NULL){
printf("文件为空,请先录入数据!
\n");
getchar();
break;
}
else{
deletebook(head);
getchar();
break;
}
break;
case3:
head=load();
if(head==NULL){
printf("文件为空,请先录入数据!
\n");
getchar();
break;
}
else{
print_book(head);
getchar();
break;
}
case4:
head=load();
if(head==NULL){
printf("文件为空,请先录入数据!
\n");
getchar();
break;
}
else{
paixu(head);
getchar();
}
break;
case5:
head=load();
if(head==NULL){
printf("文件为空,请先录入数据!
\n");
getchar();
break;
}
else{
chaxun(head);
getchar();
}
break;
case6:
head=load();
if(head==NULL){
printf("文件为空,请先录入数据!
\n");
getchar();
break;
}
else{
xiugai(head);
getchar();
break;
}
break;
case7:
printf("注意:
输入图书编码为0时结束!
\n");
head=creatbook();
printf("是否将输入的信息保存到文件以覆盖文件中已存在的信息?
(y/n)\n");
getchar();
scanf("%c",&a);
getchar();
switch(a){
case'n':
break;
case'y':
fprint(head);
printf("保存成功!
\n");
getchar();
break;
}
break;
default:
printf("您的输入有误,请重新输入!
\n");
getchar();
break;
}
}
}
break;
default:
printf("您的输入有误!
请重新输入!
\n");
getchar();
break;
}
}
}
//录入数据并形成链表
structbook*creatbook()
{
structbook*head,*tail,*p;
intnum,time,n;
charbname[50],wname[20],press[50],sort[50];
floatprice;
intsize=sizeof(structbook);
head=tail=NULL;
printf("请输入图书编号:
");
scanf("%d",&num);
printf("请输入图书名:
");
scanf("%s",bname);
getchar();
printf("请输入作者名:
");
scanf("%s",wname);
getchar();
printf("请输入出版社:
");
scanf("%s",press);
getchar();
printf("请输入类别:
");
scanf("%s",sort);
getchar();
printf("请输入出版时间:
");
scanf("%d",&time);
getchar();
printf("请输入价格:
");
scanf("%f",&price);
getchar();
while
(1){
p=(structbook*)malloc(size);
p->num=num;
strcpy(p->bname,bname);
strcpy(p->wname,wname);
strcpy(p->press,press);
strcpy(p->sort,sort);
p->time=time;
p->price=price;
p->next=NULL;
if(head==NULL)
head=p;
else
tail->next=p;
tail=p;
do{
printf("请输入图书编号:
");
scanf("%d",&num);
n=yanzheng(head,num);
if(n==0)
break;
else
printf("您输入的编号已存在,请重新输入!
\n");
}while
(1);
if(num==0)
break;
else
{
printf("请输入图书名:
");
scanf("%s",bname);
getchar();
printf("请输入作者名:
");
scanf("%s",wname);
getchar();
printf("请输入出版社:
");
scanf("%s",press);
getchar();
printf("请输入类别:
");
scanf("%s",sort);
getchar();
printf("请输入出版时间:
");
scanf("%d",&time);
getchar();
printf("请输入价格:
");
scanf("%f",&price);
getchar();
}
}
returnhead;
}
//插入结点,并且插入后仍按一定顺序
structbook*addbook(structbook*head)
{
structbook*ptr,*p1,*p2,*p;
charbname[50],wname[20],press[50],sort[50];
intsize=sizeof(structbook);
intnum,time,n=1;
floatprice;
do{
printf("请输入图书编号:
");
scanf("%d",&num);
n=yanzheng(head,num);
if(n==0)
break;
else
printf("您输入的编号已存在,请重新输入!
\n");
}while
(1);
printf("请输入图书名:
");
scanf("%s",bname);
getchar();
printf("请输入作者名:
");
scanf("%s",wname);
getchar();
printf("请输入出版社:
");
scanf("%s",press);
getchar();
printf("请输入类别:
");
scanf("%s",sort);
getchar();
printf("请输入出版时间:
");
scanf("%d",&time);
getchar();
printf("请输入价格:
");
scanf("%f",&price);
getchar();
p=(structbook*)malloc(size);
p->num=num;
strcpy(p->bname,bname);
strcpy(p->wname,wname);
strcpy(p->press,press);
strcpy(p->sort,sort);
p->time=time;
p->price=price;
p2=head;
ptr=p;
while((ptr->num>p2->num)&&(p2->next!
=NULL)){
p1=p2;
p2=p2->next;
}
if(ptr->num<=p2->num){
if(head==p2)
head=ptr;
else{
p1->next=ptr;
p->next=p2;
}
}
else{
p2->next=ptr;
p->next=NULL;
}
returnhead;
}
//验证添加的图书编号是否已存在
intyanzheng(structbook*head,intm)
{
structbook*p;
p=head;
while(p!
=NULL){
if(p->num==m)
break;
p=p->next;
}
if(p==NULL)
return0;
else
return1;
}
//将新链表写入文件中
voidfprint(structbook*head)
{
FILE*fp;
charch='1';
structbook*p1;
if((fp=fopen("f1.txt","w"))==NULL){
printf("Fileopenerror!
\n");
exit(0);
}
fputc(ch,fp);
for(p1=head;p1;p1=p1->next){
fprintf(fp,"%d%s%s%s%s%d%f\n",p1->num,p1->bname,p1->wname,p1->press,p1->sort,p1->time,p1->price);
}
fclose(fp);
}
//从文件中读取图书信息
structbook*load()
{
FILE*fp;
charch;
structbook*head,*tail,*p1;
head=tail=NULL;
if((fp=fopen("f1.txt","r"))==NULL){
printf("Fileopenerror!
\n");
exit(0);
}
ch=fgetc(fp);
if(ch=='1'){
while(!
feof(fp)){
p1=(structbook*)malloc(sizeof(structbook));
fscanf(fp,"%d%s%s%s%s%d%f\n",&p1->num,p1->bname,p1->wname,p1->press,p1->sort,&p1->time,&p1->pr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书馆 管理 系统 文档 源代码 免费