c语言课程设计报告图书管理系统.docx
- 文档编号:10941990
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:47
- 大小:173.94KB
c语言课程设计报告图书管理系统.docx
《c语言课程设计报告图书管理系统.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告图书管理系统.docx(47页珍藏版)》请在冰豆网上搜索。
c语言课程设计报告图书管理系统
第一章
§1.1题目描述
图书管理系统设计:
【要求】图书管理信息包括:
图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。
试设计一图书管理系统,使之能提供以下功能:
(1)新图书基本信息的输入;
(2)图书基本信息的查询;
(3)对撤销图书信息的删除;
(4)办理借书手续;
(5)办理还书手续;
【提示】建立图书馆里信息结构体,结构体成员包括图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号。
存在状态设为整型,可用不同数字代表借还状态。
借书和还书手续要注意修改结构体的成员变量存在状态的值。
§1.2算法设计
1.设计思想:
在整个系统编写的过程中,涉及了较多C语言知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯通。
由此进一步加深、巩固了所学的课程的基本理论知识,培养了综合分析问题、解决问题的能力。
在设计程序时,参考了学校图书馆的图书管理系统,实现了程序的模块化、结构化。
在主函数中调用各种函数,操作界面简单,易操作,人机互动性较强。
2.实现注释:
这个实用的小型图书管理系统程序以结构体数组指针操作完成,并实现文件信息的录入、修改和保存等功能,所有信息以磁盘文件方式保存,方便用户使用。
本图书管理系统分为管理员和学生两个部分,其基本功能包括了对图书信息的存储、查询、添加、删除和借书、还书手续办理等。
查询时可按书名、编号等方式查询,找到后输出这本书的所有信息。
可查询图书的在库状态,方便用户进行借书、还书操作。
在借书还书成功后图书的在库状态自动改变,并更新信息到数据库。
系统中主要的数据结构就是图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。
在处理过程中各项可以作为一本图书的不同属性来进行处理。
3.结构体系设计
图1.1:
主函数结构;图1.2:
新书信息录入流程;图1.3:
图书信息查询(管理员)流程;图1.4:
图书信息查询(学生)流程;图1.5:
图书信息删除流程;图1.6:
办理借书手续流程;图1.7:
办理还书手续流程;
§1.3程序设计及代码分析
1.程序设计:
下面,我大致介绍一下我的系统的主要功能和注意事项:
当运行此程序时,首先进入系统主界面,然后可以选择[1].管理员登陆(密码:
123),[2].学生登陆,[0].退出系统;
选择[1]后进入管理员系统,验证密码成功后显示管理员功能菜单,按数字键选择所需服务。
管理员功能菜单中,[1].新书信息录入,[2].图书信息查询,[3].图书信息删除,[4].返回主菜单,[0].退出系统;当出现“请选择”时,输入选项前的数字,输完之后按回车(下同)。
首次运行系统需要先选择[1]录入库存书籍信息,图书各信息项须用空格键隔开,输入完毕后信息自动储存并更新至数据库,然后再选择其他操作。
当选择[3]时会进入图书信息删除,在这里可以选择删除图书信息等操作,需要注意的是每次执行删除操作需要手动选择保存图书信息的操作,不然磁盘文件信息不会改变。
选择[2]后进入学生系统,然后显示学生功能菜单,按数字键选择所需服务。
学生功能菜单中,[1].图书信息查询,[2].办理借书手续,[3].办理函数手续,[4].返回主菜单,[0].退出系统;当出现“请选择”时,输入选项前的数字。
当进入办理借书和还书手续功能时需要注意的是每次执行操作需要手动选择确认等操作,否子磁盘文件信息不会改变。
所有信息最后均以磁盘文件方式保存,而且格式固定,输入和输出均按这种格式,用户在使用时必须要按这种格式输入,否则会出现文件信息错误。
2.代码分析:
/**********源程序代码**********/
#include
#include
#include
#defineLONGsizeof(structBook)
structBook
{
chartitle[100];
charauthor[50];
charpress[100];
charyear[5];
charclaim_number[30];
intcollection;
intcan_borrow;
charunit_price[10];
charstudent_name[50];
charsex[5];
charstudent_id[20];
longlongintnumber;
};
/**********函数声明**********/
voidmain_meun();//【主界面函数】
voidmanager_menu();//【管理员功能界面函数】
voidstudent_meun();//【学生功能界面函数】
intbook_add(intback);//【新书信息录入函数】
intsearch_2(intback);//【图书信息查询(学生版)】
intsearch_1(intback);//【图书信息查询函数(管理员版)】
intsearch_number(intback);//【按编号查询函数(管理员版)】
intsearch_title(intback);//【按书名查询函数(管理员版)】
voidsearch_menu();//【图书查询函数界面(管理员版)】
intbook_delete(intback);//【图书信息删除函数】
intborrow(intback);//【办理借书手续函数】
intreturn_book(intback);//【办理还书手续函数】
/**********主函数**********/
intmain()
{
inta,b,c,z;
intback=0,back2=0,back3=0;
A:
system("cls");//A为一个标志位,用于从子函数返回主界面
back=0;back2=0;back3=0;
main_meun();//【主界面函数】
while
(1)//主程序循环运行
{
scanf("%d",&a);
switch(a)
{
case1:
//进入管理员界面
{
printf("登陆密码【123】:
");
scanf("%d",&z);
if(z!
=123)gotoA;
B:
system("cls");//B为一个标志位,用于从子函数返回管理员功能界面
back=0;back2=0;back3=0;
manager_menu();//【管理员功能界面函数】
while
(1)
{
scanf("%d",&b);
switch(b)
{
case1:
{back2=book_add(back2);if(back2==1)gotoB;}//进入新书信息录入
case2:
{back2=search_1(back2);if(back2==1)gotoB;}//进入图书信息查询
case_3:
{back2=book_delete(back2);if(back2==1)gotoB;}//进入图书信息删除
case4:
gotoA;//返回主菜单
case0:
//退出系统
{
system("cls");
printf("------------------------------------------------------------\n");
printf("-=感谢使用,再见!
=-\n");
printf("------------------------------------------------------------\n");
exit(0);
}
}
}
}break;
case2:
//进入学生界面
{
C:
system("cls");//C为一个标志位,用于从子函数返回学生功能界面
back=0;back2=0;back3=0;
student_meun();//【学生功能界面函数】
while
(1)
{
scanf("%d",&c);
switch(c)
{
case1:
{back3=search_2(back3);if(back3==1)gotoC;}//进入图书信息查询
case2:
{back3=borrow(back3);if(back3==1)gotoC;}//办理借书手续
case3:
{back3=return_book(back3);if(back3==1)gotoC;}//办理还书手续
case4:
gotoA;//返回主菜单
case0:
//退出系统
{
system("cls");
printf("------------------------------------------------------------\n");
printf("-=感谢使用,再见!
=-\n");
printf("------------------------------------------------------------\n");
exit(0);
}
}
}
}break;
case0:
//退出系统
{
system("cls");
printf("------------------------------------------------------------\n");
printf("-=感谢使用,再见!
=-\n");
printf("------------------------------------------------------------\n");
exit(0);
}
}
}
}
/**********其他函数**********/
voidmain_meun()//【主界面函数】
{
printf("============================================================\n");
printf("||\n");
printf("|欢迎使用图书管理系统|\n");
printf("||\n");
printf("||\n");
printf("|[1].管理员登陆[2].学生登陆[0].退出系统|\n");
printf("||\n");
printf("============================================================\n");
printf("请选择:
");
}
voidmanager_menu()//【管理员功能界面函数】
{
printf("============================================================\n");
printf("||\n");
printf("|[1].新书信息录入|\n");
printf("||\n");
printf("|[2].图书信息查询|\n");
printf("||\n");
printf("|[3].图书信息删除|\n");
printf("||\n");
printf("|[4].返回主菜单|\n");
printf("||\n");
printf("|[0].退出系统|\n");
printf("||\n");
printf("============================================================\n");
printf("请选择:
");
}
voidstudent_meun()//【学生功能界面函数】
{
printf("============================================================\n");
printf("||\n");
printf("|[1].图书信息查询|\n");
printf("||\n");
printf("|[2].办理借书手续|\n");
printf("||\n");
printf("|[3].办理还书手续|\n");
printf("||\n");
printf("|[4].返回主菜单|\n");
printf("||\n");
printf("|[0].退出系统|\n");
printf("||\n");
printf("============================================================\n");
printf("请选择:
");
}
intbook_add(intback)//【新书信息录入函数】
{
FILE*fp;
structBook*p1;
longlonginta,b;
intn;
fp=fopen("图书信息数据库.txt","a+");
if(fp==NULL){printf("数据库打开错误!
请检查...\n");exit(0);}
while
(1)
{
A:
system("cls");//A为一个标志位,用于返回本函数首界面
p1=(structBook*)malloc(LONG);
fseek(fp,-11,SEEK_END);
fscanf(fp,"%lld",&a);
if(a<0)a=20011001;
fseek(fp,0,SEEK_END);
printf("上一本图书编号:
%lld\n",a);
printf("请输入新图书信息:
\n");
printf("===============================================================================\n");
printf("书名作者出版社年份索取号单价数量\n");printf("-------------------------------------------------------------------------------\n");
p1->number=a+1;
strcpy(p1->student_id,"未知");
strcpy(p1->student_name,"未知");
strcpy(p1->sex,"未知");
scanf("%s%s%s%s%s%s%d",p1->title,p1->author,p1->press,p1->year,p1->claim_number,p1->unit_price,&p1->collection);
p1->can_borrow=p1->collection;
fprintf(fp,"%s%s%s%s%s%s%d%d%s%s%s%lld\n",p1->title,p1->author,p1->press,p1->year,p1->claim_number,p1->unit_price,p1->collection,p1->can_borrow,p1->student_name,p1->sex,p1->student_id,p1->number);
fflush(fp);
if(1
{
for(b=2;b<=p1->collection;b++)
{
p1->number=a+b;
fprintf(fp,"%s%s%s%s%s%s%d%d%s%s%s%lld\n",p1->title,p1->author,p1->press,p1->year,p1->claim_number,p1->unit_price,p1->collection,p1->can_borrow,p1->student_name,p1->sex,p1->student_id,p1->number);
fflush(fp);
}
}
printf("\a");
printf("-------------------------------------------------------\n");
printf("[1].继续录入[2].结束录入\n");
printf("-------------------------------------------------------\n");
printf("请选择:
");
scanf("%d",&n);
switch(n)
{
case1:
gotoA;
case2:
{fclose(fp);back=1;return(back);}
}
}
}
intsearch_2(intback)//【进入图书信息查询(学生版)】
{
FILE*fp;
chartitle[100];
structBook*p;
inta1=0,b1;
A:
system("cls");//A为一个标志位,用于返回本函数首界面
back=0;
printf("请输入书名:
");
scanf("%s",title);
fp=fopen("图书信息数据库.txt","r");
if(fp==NULL){printf("数据库打开错误!
请检查...\n");exit(0);}
p=(structBook*)malloc(LONG);
while(!
feof(fp))
{
fscanf(fp,"%s%s%s%s%s%s%d%d%s%s%s%lld\n",p->title,p->author,p->press,p->year,p->claim_number,p->unit_price,&p->collection,&p->can_borrow,p->student_name,p->sex,p->student_id,&p->number);
if(strcmp(title,p->title)==0)
{
a1=1;printf("===============================================================================\n");
printf("书名作者出版社年份索取号馆藏可借\n");printf("-------------------------------------------------------------------------------\n");printf("%-28s%-8s%-19s%-6s%-11s%-5d%d\n",p->title,p->author,p->press,p->year,p->claim_number,p->collection,p->can_borrow);
break;
}
}
if(a1==1)
{
fclose(fp);
printf("\n");
printf("-------------------------------------------------------\n");
printf("[1].继续搜索[2].返回学生功能菜单[0].退出系统\n");
printf("-------------------------------------------------------\n");
printf("请选择:
");
scanf("%d",&b1);
while
(1)
{
switch(b1)
{
case1:
gotoA;break;
case2:
return(back=1);
case0:
{
system("cls");
printf("------------------------------------------------------------\n");
printf("-=感谢使用,再见!
=-\n");
printf("------------------------------------------------------------\n");
exit(0);
}
}
}
}
if(a1==0)
{
fclose(fp);
printf("\a\n未找到与条件相符的图书!
\n\n");
printf("-------------------------------------------------------\n");
printf("[1].继续搜索[2].返回学生功能菜单[0].退出系统\n");
printf("-------------------------------------------------------\n");
printf("请选择:
");
scanf("%d",&b1);
while
(1)
{
switch(b1)
{
case1:
gotoA;break;
case2:
return(back=1);
case0:
{
system("cls");
printf("------------------------------------------------------------\n");
printf("-=感谢使用,再见!
=-\n");
printf("------------------------------------------------------------\n");
exit(0);
}
}
}
}
}
intsearch_1(intback)//
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 图书 管理 系统