完整word版C语言课程设计图书管理系统.docx
- 文档编号:10830557
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:32
- 大小:237.36KB
完整word版C语言课程设计图书管理系统.docx
《完整word版C语言课程设计图书管理系统.docx》由会员分享,可在线阅读,更多相关《完整word版C语言课程设计图书管理系统.docx(32页珍藏版)》请在冰豆网上搜索。
完整word版C语言课程设计图书管理系统
C语言课程设计
姓名:
莫方民
班级:
计算机1403
学号:
144030318
《图书管理系统》
一、题目要求及能实现的功能·······················2
二、程序总体设计·································2
三、详细设计
1、主函数···································4
2、各功能模块设计·····························5
四、附录····································26
题目要求及能实现的功能
图书管理信息包括:
图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等,使之能提供以下功能:
1、新进图书基本信息的输入。
2、图书基本信息的查询。
3、对撤消图书信息的删除。
4、办理借书手续。
5、办理还书手续
【提示】
建立图书管理信息结构体,结构体成员包括图书馆名称、图书编号、单价啊、作者、存在状态、借书人姓名、性别、学号。
存在状态设为整型,可用不同的数字代表借还状态。
借书和还书手续要注意修改结构题的成员变量存在状态的值。
总体设计
详细设计
1、主函数
[说明]
主函数较多、较复杂,已经和主菜单函数合并,主菜单函数里还包括了各自的二级菜单,并已经开始了对各个函数的调用。
为了程序显示的清晰可读,应先清屏之后调用菜单函数。
[流程]
2、各功能模块设计
(2)查阅模块
[说明]
输入个员工信息后,浏览、查找、排序时同一个员工的所有信息都要同时显示,所以运用结构体运行。
数据信息存放在文件中,一条记录对应一条学生信息,方便管理。
[流程]
(3)借阅模块
[说明]
查阅完图书记录后,用户要借阅图书,系统要在操作过程中提示用户输入流程,根据用户所输入的指令,帮助其完成借阅。
[流程]
(4)管理模块
[说明]
管理模块最为复杂,管理所有的图书及职工、学生的信息。
先进入总体的管理系统,在这个系统中重点的操作是图书的管理,为其中的1至4项(分别是增加图书、删除图书、修改图书资料、书籍统计),同时系统还连接了职工、学生管理两个系统,为下一步的操作提供了条件。
职工管理系统主要有增加图书、删除图书、修改图书资料、书籍统计,学生管理系统主要有申请新卡、删除卡号、借书统计、卡号统计四个模块,用于管理学生登录信息。
[流程]
(5)还书模块
[说明]
需要根据输入员工的姓名及工号查找相应的记录,找到后增加删除和修改功能。
附录
——图书馆管理系统设计源程序清单
#include
#include
#include
#include
#defineSTACK_INIT_SIZE10
#defineOK1
#defineTRUE1
#defineERROR0
structstudent{
intcarnum;
charlendbook[10];
}student[1000];
structbook
{
intbooknum;
charbookname[20];
floatbookprice;
charbookcreat[20];
intturefalse;
}book[1000];
structcar
{
intcarnum;
charsex[5];
charstudentname[20];
intstudentclass;
}car[1000];
findbook()
{
FILE*fp;
charbookname[10];
inti;
fp=fopen("book.txt","r");
printf("请输入你要查找的书名:
\n");
scanf("%s",bookname);
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!
=0;i++)
{
if(strcmp(bookname,book[i].bookname)==0)
{
if(book[i].turefalse==1)
{
printf("书号书名作者\n%d%s%s\n",book[i].booknum,book[i].bookname,book[i].bookcreat);
printf("此书现在无人借阅\n按任意键返回\n");}
else{printf("这本书已经有人借出\n");fclose(fp);return0;}
fclose(fp);
return0;
}
}
printf("没有你要查询的书籍!
\n");
fclose(fp);
return0;
}
findbook1()
{
FILE*fp;
charbookcreat[10];
inti;
fp=fopen("book.txt","r");
printf("请输入你要查找的作者名:
\n");
scanf("%s",bookcreat);
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!
=0;i++)
{
if(strcmp(bookcreat,book[i].bookcreat)==0)
{
if(book[i].turefalse==1)
{
printf("书号书名作者\n%d%s%s\n",book[i].booknum,book[i].bookname,book[i].bookcreat);
printf("此书现在无人借阅\n按任意键返回\n");
}
else{printf("这本书已经有人借出!
\n");
fclose(fp);
return0;
}
fclose(fp);
return0;
}
}
printf("没有你要查询的书籍\n");
fclose(fp);
return0;
}
chabook()
{
charch5;
do
{
printf("1:
按书名查找\n");
printf("2:
按作者查找\n");
printf("0:
返回\n");
printf("请输入0━2:
\n");
ch5=getch();
switch(ch5)
{
case'1':
findbook();getch();break;
case'2':
findbook1();getch();break;
case'0':
break;
default:
printf("无此操作!
\n");getch();break;
}
}while(ch5!
='0');
return0;
}
lendbook()
{
FILE*fp,*fp2;
inti,n;
intcarnum;
printf("请输入借书人的:
\n卡号:
\n");
scanf("%d",&carnum);
fp=fopen("car.txt","r");
for(i=0;fread(&car[i],sizeof(structcar),1,fp)!
=0;i++)
{
if(car[i].carnum==carnum)
{
n=i;
fclose(fp);
printf("书名:
\n");
scanf("%s",student[n].lendbook);
fp=fopen("book.txt","r");
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!
=0;i++)
{
if(strcmp(book[i].bookname,student[n].lendbook)==0)
{
if(book[i].turefalse==0){printf("对不起,此书有人借出,请借其他书\n");fclose(fp);getch();return0;}
else
fclose(fp);
fp=fopen("record.txt","a+");
student[n].carnum=carnum;
fwrite(&student[n],sizeof(structstudent),1,fp);
fclose(fp);
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!
=0;i++)
{
if(strcmp(book[i].bookname,student[n].lendbook)==0)
{
book[i].turefalse=0;
fwrite(&book[i],sizeof(structbook),1,fp2);
continue;
}
fwrite(&book[i],sizeof(structbook),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(structbook),1,fp2)!
=0;i++)
{
fwrite(&book[i],sizeof(structbook),1,fp);
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w");
fclose(fp2);
printf("借书完毕,按任意键返回...\n");
getch();
return0;
}
}
printf("不存在这样的书,任意键返回...\n");
fclose(fp);
getch();
return0;
}
}
printf("你的卡号不存在,请申请新卡,按任意键返回...\n");
fclose(fp);
getch();
return0;}
huanbook()
{
FILE*fp,*fp2;
inti,n;
intcarnum;
charlendbook[10];
printf("\t\t(^_^)欢迎进入还书界面(^_^)");
printf("\n请你输入你的\n卡号:
\n");
scanf("%d",&carnum);
fp=fopen("car.txt","r");
for(i=0;fread(&car[i],sizeof(structcar),1,fp)!
=0;i++)
{
if(car[i].carnum==carnum)
{
n=i;
fclose(fp);
printf("请输入你要还的书的名字:
\n");
scanf("%s",lendbook);
fp=fopen("record.txt","r");
for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!
=0;i++)
{
if(strcmp(student[i].lendbook,lendbook)==0)
{
fclose(fp);
fp=fopen("record.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!
=0;i++)
{
if(strcmp(student[i].lendbook,lendbook)==0)
{
continue;
}
fwrite(&student[i],sizeof(structstudent),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("record.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&student[i],sizeof(structstudent),1,fp2)!
=0;i++)
{
fwrite(&student[i],sizeof(structstudent),1,fp);
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w");
fclose(fp2);
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!
=0;i++)
{
if(i==n)
{
book[i].turefalse=1;
fwrite(&book[i],sizeof(structbook),1,fp2);
continue;
}
fwrite(&book[i],sizeof(structbook),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(structbook),1,fp2)!
=0;i++)
{
fwrite(&book[i],sizeof(structbook),1,fp);
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w");
fclose(fp2);
printf("还书完毕,按任意键返回...\n");
getch();
return1;
}
}
printf("你没有借这样的书,任意键返回...\n");
fclose(fp);
getch();
return0;
}
}
printf("没这样的卡,和管理员联系,按任意键返回...\n");
fclose(fp);
getch();
return0;}
lendcount()
{
FILE*fp;
inti,n=0;
fp=fopen("record.txt","r");
if((fp=fopen("record.txt","r"))==0)
{printf("文件中没有数据!
\n");
printf("按任意键返回...\n");
getch();
return(0);
}
for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!
=0;i++)
{
printf("卡号借出的书籍\n");
printf("%d%s\n",student[i].carnum,student[i].lendbook);
n=n+1;
}
fclose(fp);
printf("目前共有%d本书借出\n",n);
printf("按任意键...\n");
getch();
returnn;
}
addcar()
{
FILE*fp;
inti=0;
fp=fopen("car.txt","a+");
printf("卡号:
\n");
scanf("%d",&car[i].carnum);
printf("性别:
\n");
scanf("%s",car[i].sex);
printf("姓名:
\n");
scanf("%s",car[i].studentname);
printf("班级:
\n");
scanf("%d",&car[i].studentclass);
fwrite(&car[i],sizeof(structcar),1,fp);
fclose(fp);
printf("输入完毕,任意键返回...\n");
getch();
}
delcar()
{
FILE*fp,*fp2;
inti;
intcarnum;
charchoice;
fp=fopen("car.txt","r");
fp2=fopen("bookl.txt","w");
printf("要删除的卡号(不存在则不作改动):
\n");
scanf("%d",&carnum);
for(i=0;fread(&car[i],sizeof(structcar),1,fp)!
=0;i++)
{
if(car[i].carnum!
=carnum)
{
fwrite(&car[i],sizeof(structcar),1,fp2);
}
}
fclose(fp);
fclose(fp2);
printf("确认删除?
(Y/N)!
\n");
scanf("%s",&choice);
if(choice=='y'||choice=='Y')
{
fp=fopen("car.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&car[i],sizeof(structcar),1,fp2)!
=0;i++)
{
fwrite(&car[i],sizeof(structcar),1,fp);
}
fclose(fp);
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("操作超成功!
\n按任意键返回...\n");
getch();
return0;
}
else
{
printf("操作已取消!
\n按任意键返回...\n");
getch();
return0;
}
}
carcount()
{
FILE*fp;
inti,n=0;
fp=fopen("car.txt","r");
for(i=0;fread(&car[i],sizeof(structcar),1,fp)!
=0;i++)
{
printf("第%d张卡\n",i+1);
printf("卡号性别姓名班级\n");
printf("\t\t\n");
printf("%d%6s%10s%3d\n\n",car[i].carnum,car[i].sex,car[i].studentname,car[i].studentclass);
n=n+1;
}
fclose(fp);
printf("目前共有%d个学生。
\n",n);
printf("按任意键返回...\n");
getch();
}
addbook()
{
FILE*fp;
inti=0;
charchoice='y';
fp=fopen("book.txt","a+");
while(choice=='y'||choice=='Y')
{
printf("书号:
\n");
scanf("%d",&book[i].booknum);
printf("书名:
\n");
scanf("%s",book[i].bookname);
printf("作者:
\n");
scanf("%s",book[i].bookcreat);
printf("单价:
\n");
scanf("%f",&book[i].bookprice);
printf("请你设定书的状态(1在架/0不在):
\n");
scanf("%d",&book[i].turefalse);
fwrite(&book[i],sizeof(structbook),1,fp);
printf("是否要输入下本书(y/n)\n");
scanf("%s",&choice);
}
fclose(fp);
}
delbook()
{
FILE*fp,*fp2;
inti;
charbookname[10],choice;
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
printf("书名:
\n");
scanf("%s",bookname);
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!
=0;i++)
{
if(strcmp(bookname,book[i].bookname)!
=0)
{
fwrite(&book[i],sizeof(structbook),1,fp2);
}
}
fclose(fp);
fclose(fp2);
printf("确认删除(y/n)?
\n");
scanf("%s",&choice);
if(choice=='y'||choice=='Y')
{
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(structbook),1,fp2)!
=0;i++)
{
fwrite(&book[i],sizeof(structbook),1,fp);
}
fclose(fp);
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("按任意键返回...\n");
getch();
return0;
}
else
{
printf("按任意键返回...\n");
getch();
return0;
}
}
chan
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 语言 课程设计 图书 管理 系统