c语言程序设计报告图书馆信息管理系统.docx
《c语言程序设计报告图书馆信息管理系统.docx》由会员分享,可在线阅读,更多相关《c语言程序设计报告图书馆信息管理系统.docx(17页珍藏版)》请在冰豆网上搜索。
c语言程序设计报告图书馆信息管理系统
2014年第二阶段课程设计成果报告
实训项目:
程序设计技术课程设计
学号:
335姓名:
郑毓豪
专业:
电气工程及其自动化
实训日期:
2014年6月8日至2014年6月20日
指导教师:
舒蔚实训成绩:
华东交通大学理工学院
一、问题概述
(对问题背景及主要实现的功能进行简要说明。
)
随着图书馆图书的不断增加,图书管理的难度也随之加大,一个好的图书馆图书信息管理系统,能够使图书管理工作简便,有条不紊。
通过C语言学习,我们已经能够完成基本的C语言编程,此次实训,是将学习和实践结合,充分感受C语言解决实践问题的魅力。
此次编写的图书馆信息管理系统,能够实现基本的图书管理功能。
它包括图书库的创建,打印图书信息表,录入新图书,修改图书信息,删除图书信息,借书,还书。
图书库包含图书的各方面信息,编号,类型,作者,出版社,总数,剩余量等等,并且打印图书信息表。
录入,修改,删除这些功能都是对图书库的操作。
借书,还书这两项最重要的功能也都能很好的实现。
把此系统应用于图书馆的图书管理,能使图书馆的各项工作便捷,可靠的完成。
二、系统目标
(主要是对系统技术目标和要求)
欢迎界面、主菜单、系统管理功能、图书信息管理、借阅功能模块、
其中系统管理功能包括系统管理员添加、删除、修改信息以及用管理员身份登录系统等功能。
图书信息管理包括新增图书、修改图书、删除图书、等功能。
借阅功能模块包括借书功能、还书功能、查询已借图书、查询过期未还图书,其中借书还书功能可以按图书编号信息进行操作。
三、设计的过程及步骤
1、需求分析
(描述系统需求,既详细分析系统需求和功能)
根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。
2、设计文件结构
(设计文件结构,并扼要说明设计缘由)
此系统根据所要实现的功能,使用的函数等综合考虑,设计了两个,图书信息文件(),借还书文件(),录入新图书,修改,删除图书等一些操作时在图书信息文件上运行,借还书功能则在借还书文件上运行,同时也要在图书信息文件上运行。
两个文件相互结合,使各个功能很好的实现了,运用C语言的文件功能,也是整个程序的主线。
3、设计系统功能图
(根据需求分析结果和文件结构,应用结构化分析与设计技术设计功能结构图,如下图所示)
4、函数设计
(详细分析每一个子模块的子功能,定义主要的子函数原型,并对每一个函数的功能加以说明)
此系统主要有7个功能,也就有主要的7个函数,他们分别是
voidshan()
n");
exit(0);
}
while(fread(&tu[i],sizeof(shu),1,fp))
{
i++;
m=i;
}
printf("要删除几本书:
");
scanf("%d",&n);
getchar();
for(i=0;i{
printf("输入图书编号2:
");
gets(booknum);
for(j=0;jif(strcmp(booknum,tu[j].bianhao2)==0)
break;
if(j{
for(l=0;lif(strcmp(tu[j].bianhao1,tu[l].bianhao1)==0)
{
tu[l].zongshu--;
tu[l].shengyu--;
}
for(j;jtu[j]=tu[j+1];
}
else
{
printf("输入有误重新输入\n");
i--;
}
}
if((fp=fopen("","w"))==NULL)
{
printf("cannotopenthe.\n");
exit(0);
}
for(i=0;ifwrite(&tu[i],sizeof(shu),1,fp);
printf("删除成功!
!
");
}
voidxiu()n");
exit(0);
}
while(fread(&tu[i],sizeof(shu),1,fp))
{
i++;
m=i;
}
if((fp=fopen("","w"))==NULL)
{
printf("cannotopenthe.\n");
exit(0);
}
printf("要修改几本书:
");
scanf("%d",&n);
getchar();
for(i=0;i{
printf("输入要修改的图书编号2:
");
gets(booknum);
for(i=0;i{
if(strcmp(booknum,tu[i].bianhao2)==0)
break;
}
if(i{
printf("》》》输入修改后的\n\n");
printf("》》》输入编号1:
");
gets(tu[i].bianhao1);
printf("\n");
printf("》》》编号2:
");
gets(tu[i].bianhao2);
printf("\n");
printf("》》》类型:
");
gets(tu[i].leixing);
printf("\n");
printf("》》》书名:
");
gets(tu[i].shuming);
printf("\n");
printf("》》》出版社:
");
gets(tu[i].chubanshe);
printf("\n");
printf("》》》作者:
");
gets(tu[i].writer);
printf("\n");
printf("》》》总数:
");
gets(numchar);
printf("\n");
tu[i].zongshu=atol(numchar);
printf("》》》剩余:
");
gets(numchar);
printf("\n");
tu[i].shengyu=atol(numchar);
}
else
printf("输入有误\n");
for(i=0;ifwrite(&tu[i],sizeof(shu),1,fp);
}
fclose(fp);
}
voidputin()n");
exit(0);
}
while(fread(&tu[i],sizeof(shu),1,fp))
{
i++;
m=i;
}
if((fp=fopen("","w"))==NULL)
{
printf("cannotopenthe.\n");
exit(0);
}
for(i=0;i{
fwrite(&tu[i],sizeof(shu),1,fp);
}
printf("要录入几本书:
");
scanf("%d",&n);
getchar();
for(i=0;i{
printf("\n");
printf("》》》输入编号1:
");
gets;
printf("\n");
printf("》》》编号2:
");
gets;
printf("\n");
printf("》》》类型:
");
gets;
printf("\n");
printf("》》》书名:
");
gets;
printf("\n");
printf("》》》出版社:
");
gets;
printf("\n");
printf("》》》作者:
");
gets;
printf("\n");
printf("》》》总数:
");
gets(numchar);
printf("\n");
=atol(numchar);
printf("》》》剩余:
");
gets(numchar);
printf("\n");
=atol(numchar);
fwrite(&shu,sizeof(shu),1,fp);
}
fclose(fp);
}
voidprint()n");
exit(0);
}
puts("_______________________________________________________________________");
puts("-----------------------------------------------------------------------");
puts("|编号1|编号2|类型|书名|作者|出版社|总数|剩余|");
fseek(fp,0L,SEEK_SET);
while(fread(&shu,sizeof(shu),1,fp)==1)
printf("%-9s%-10s%-10s%-10s%-10s%-10s%-10ld%-10ld\n",,,,,,,,;
}
voidreturned()n");
exit(0);
}
while(fread(&book1[i],sizeof(book),1,fp))
{
i++;
m=i;
}
if((fp=fopen("","w"))==NULL)
{
printf("cannotopenthe.\n");
exit(0);
}
printf("输入要还的图书编号2:
");
gets(booknum);
for(j=0;j{
if(strcmp(booknum,book1[j].bianhao2)==0)
{
flag=1;
break;
}
}
if(flag)
{
flag=0;
printf("输入还书月份:
");
scanf("%ld",&book1[i].returnedmonth);
printf("输入还书日期:
");
scanf("%ld",&book1[i].returnedday);
getchar();
for(j=0;jfwrite(&book1[i],sizeof(book),1,fp);
}
else
printf("输入有误\n");
fclose(fp);
}
voidbooks()n");
exit(0);
}
while(ch=='y'||ch=='Y')
{
printf("\n");
printf("》》》输入编号1:
");
gets;
printf("\n");
printf("》》》编号2:
");
gets;
printf("\n");
printf("》》》类型:
");
gets;
printf("\n");
printf("》》》书名:
");
gets;
printf("\n");
printf("》》》出版社:
");
gets;
printf("\n");
printf("》》》作者:
");
gets;
printf("\n");
printf("》》》总数:
");
gets(numchar);
printf("\n");
=atol(numchar);
printf("》》》剩余:
");
gets(numchar);
printf("\n");
=atol(numchar);
fwrite(&shu,sizeof(shu),1,fp);
do{
printf("haveanotherbookrecord(y/n)?
:
");
gets(numchar);
ch=numchar[0];
}while(!
(ch=='y'||ch=='n'||ch=='Y'||ch=='N'));
}
fclose(fp);
}
voidborrowed()n");
exit(0);
}
while(fread(&tu[i],sizeof(shu),1,fq))
{
i++;
m1=i;
}
if((fp=fopen("","r"))==NULL)
{
printf("cannotopenthe.\n");
exit(0);
}
while(fread(&book1[i],sizeof(book),1,fp))
{
i++;
m2=i;
}
for(i=0;i{
printf("\n");
printf("输入编号2:
");
gets(numchar);
for(j=0;j{
if(strcmp(numchar,tu[j].bianhao2)==0)
{
n=j;
flag=1;
break;
}
}
if(flag)
{
printf("\n");
printf("输入正确\n\n");
flag=0;
strcpy,numchar);
printf("》》》输入编号1");gets;printf("\n");
printf("》》》借书年份:
");gets(numchar);printf("\n");=atol(numchar);
printf("》》》借书月份:
");gets(numchar);printf("\n");=atol(numchar);
printf("》》》借书日期:
");gets(numchar);printf("\n");=atol(numchar);
printf("》》》还书月份:
");gets(numchar);printf("\n");=atol(numchar);
printf("》》》还书日期:
");gets(numchar);printf("\n");=atol(numchar);
printf("》》》期限:
");gets(numchar);printf("\n");=atol(numchar);
printf("》》》学生学号:
");gets;printf("\n");
if((fp=fopen("","w"))==NULL)
{
printf("cannotopenthe.\n");
exit(0);
}
fwrite(&book,sizeof(book),1,fp);
for(j=0;j{
fwrite(&book1[j],sizeof(book),1,fp);
}
for(j=0;j{
if(strcmp(tu[n].bianhao1,tu[j].bianhao1)==0)
tu[j].shengyu--;
}
if((fq=fopen("","w"))==NULL)
{
printf("cannotopenthe.\n");
exit(0);
}
for(j=0;j{
fwrite(&tu[j],sizeof(shu),1,fq);
}
}
else
{
printf("输入错误\n");
i--;
}
}
fclose(fq);
fclose(fp);
}
voidmain()
{
intflag=1;
chara[20];
puts("┌──────────────────────────┐");
puts("││");
puts("││");
puts("││");
puts("││");
puts("││");
puts("│欢迎使用图书信息管理系统│");
puts("││");
puts("││");
puts("││");
puts("││");
puts("│█████│");
puts("│█田█田█│");
puts("│█田█田█│");
puts("│█田█田█.│");
puts("│█田█田█.│");
puts("│█████│");
puts("│◢██□██◣.│");
puts("││");
puts("││");
puts("│请选择您需要的功能:
│");
puts("││");
puts("│(直接键入对应数字)│");
puts("││");
puts("││");
puts("││");
puts("│1.图书创建│");
puts("││");
puts("│2.打印图书信息表│");
puts("││");
puts("│3.图书追加与录入│");
puts("││");
puts("│4.修改图书信息│");
puts("││");
puts("│5.删除图书信息│");
puts("││");
puts("│6.借书│");
puts("││");
puts("│7.还书│");
puts("││");
puts("││");
puts("││");
puts("││");
puts("││");
puts("││");
puts("└──────────────────────────┘");
while(flag)
{
flag=0;
scanf("%s",a);
getchar();
if(strcmp(a,"3")==0)
putin();
elseif(strcmp(a,"1")==0)
books();
elseif(strcmp(a,"6")==0)
borrowed();
elseif(strcmp(a,"2")==0)
print();
elseif(strcmp(a,"7")==0)
returned();
elseif(strcmp(a,"4")==0)
xiu();
elseif(strcmp(a,"5")==0)
shan();
else
{
printf("输入错误请重新输入:
");
flag=1;
}
}
}