C语言课程设计图书管理系统.docx

上传人:b****6 文档编号:8775158 上传时间:2023-02-01 格式:DOCX 页数:59 大小:162.97KB
下载 相关 举报
C语言课程设计图书管理系统.docx_第1页
第1页 / 共59页
C语言课程设计图书管理系统.docx_第2页
第2页 / 共59页
C语言课程设计图书管理系统.docx_第3页
第3页 / 共59页
C语言课程设计图书管理系统.docx_第4页
第4页 / 共59页
C语言课程设计图书管理系统.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

C语言课程设计图书管理系统.docx

《C语言课程设计图书管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计图书管理系统.docx(59页珍藏版)》请在冰豆网上搜索。

C语言课程设计图书管理系统.docx

C语言课程设计图书管理系统

C语言程序设计实习报告

图书管理系统

班级:

 

姓名:

 

学号:

 

指导老师:

前言

随着信息技术对人类社会进行的全方位渗透,一种新的文化形态——信息

时代的计算机文化已经形成。

计算机知识成为当代知识分子结构中不可缺少的

重要部分。

C语言是近年来国内外得到迅速推广使用的一种高级语言。

C语言功能丰

富,表达能力强,使用灵活方便,应用广,目标程序效率高,可移植性好,既

具有高级语言的优点,又具有低级语言的语言特点,因此C语言对我们来说很

重要。

设计是一门重要的计算机基础课程,通过学习,学生不仅要掌握高级程序

设计语言的知识,更重要的是在实践中逐步掌握程序设计的思想和方法,培养

问题求解和语言的应用能力。

此次上机实习,不但要使同学们的程序设计能力

上一台阶,同时要提高与程序设计和软件开发有关的各种综合能力。

由于课时和上机时间的仓促,所以我对很多内容还来不及消化,对上机演

练十分陌生,还有一些知识遗忘,因而这次程序设计的实习实际上是对我的一

次集中的强化练习。

虽然其时间短,任务重,但我们的确达到了此次课程设计

的目的。

本次实习得到曹弘老师的指导和帮助,至此表示感谢!

陈锐

2010年09月

一、题目要求

1.新进图书基本信息的输入。

2.图书基本信息的查询。

3.对撤消图书信息的删除。

4.为借书人办理注册。

5.办理借书手续。

6.办理还书。

二、需求分析

作为学生对图书管理系统的要求有:

1.能按各种方式(比如书名、编号、作者)查询图书馆的藏书情况。

2.能够方便地借阅图书、归还图书。

3.能够查询自己的基本资料、借阅图书情况。

4.能够熟悉图书管理系统的使用。

作为图书管理员,他们对图书管理系统的要求有:

1.能方便的对图书进行录入登记,注销陈旧的书籍。

2.能够方便地对新生进行登记,或注销已经毕业的学生信息(基本信息,借阅信息)。

3.能够随时发布一些诸如各学院学生借阅图书超期情况、馆内藏书情况、借阅情况等信息,以便各学院能够随时获知本院学生的一些借书信息。

根据题目需要,由于图书信息需要存放在文件中,所以应提供文件输入、输出等操作。

应提

供查找、借阅、管理等功能。

由于有多种借阅图书的方法,而又需要提供相应的算法,最后还

应提供键盘是选择菜单实现功能。

三、总体设计

四、详细设计

1、主函数

[说明]

主函数较多、较复杂,已经和主菜单函数合并,主菜单函数里还包括了各自的二级菜单,并已经开始了对各个函数的调用。

为了程序显示的清晰可读,应先清屏之后调用菜单函数。

[流程]

开始

显示一系列功能选项

N

输入n,判断n是否是0-4

Y

返回主菜单

根据n的值调用各功能模块函数

[程序]

main()

{

charch1,ch2,ch3,ch4,ch5;

do

{

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\t0:

<退出系统>\n");

printf("\n请输入0--4,其他输入非法!

\n");

scanf("%s",&ch1);

switch(ch1)

{

case'1':

chabook();break;

case'2':

lendbook();;break;

case'3':

{

do

{

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\t6:

<学生管理系统>\n");

printf("\n\t\t\t\t0:

<返回>\n");

printf("\n请输入0--6,其他输入非法!

\n");

scanf("%s",&ch2);

switch(ch2)

{

case'1':

addbook();break;

case'2':

delbook();break;

case'3':

changebook();break;

case'4':

bookcount();getch();break;

case'5':

{do

{

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\t0:

<返回>\n");

printf("\n请输入0--4,其他输入非法!

\n");

scanf("%s",&ch3);

switch(ch3)

{

case'1':

addemploy();getch();break;

case'2':

delemploy();break;

case'3':

changemploy();break;

case'4':

employcount();getch();break;

case'0':

break;

default:

printf("无此操作\n");getch();break;

}

}while(ch3!

='0');}break;

case'6':

{

do

{

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\t0:

<返回>\n");

printf("\n请输入0--4,其他输入非法!

\n");

scanf("%s",&ch4);

switch(ch4)

{

case'1':

addcar();break;

case'2':

delcar();break;

case'3':

lendcount();break;

case'4':

carcount();break;

case'0':

break;

default:

printf("无此操作\n");getch();break;

}

}while(ch4!

='0');}break;

case'0':

break;

default:

printf("无此操作\n");getch();break;

}

}while(ch2!

='0');}break;

case'4':

huanbook();break;

case'0':

break;

default:

printf("无此操作\n");getch();break;

}

}while(ch1!

='0');}

2、各功能模块设计

(1)查阅模块

[说明]

输入个员工信息后,浏览、查找、排序时同一个员工的所有信息都要同时显示,所以运用结构体运行。

数据信息存放在文件中,一条记录对应一条学生信息,方便管理。

[流程]

[程序]

chabook()

{

charch5;

do

{

printf("---------------欢迎进入图书查询系统!

--------------\n");

printf("1:

<按书名查找>\n");

printf("2:

<按作者查找>\n");

printf("0:

<返回>\n");

printf("请输入0--2,其他输入非法!

\n");

scanf("%s",&ch5);

switch(ch5)

{

case'1':

findbook();getch();break;

case'2':

findbook1();getch();break;

case'0':

break;

default:

printf("无此操作\n");getch();break;

}

}while(ch5!

='0');

returnFALSE;

}

findbook()/*按书名查找图书函数*/

{

FILE*fp;

charbookname[10];

intture,i;

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("这本书的详细资料是:

%d%s%s此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);

}

else{printf("这本书已经有人借出\n");fclose(fp);return0;}

fclose(fp);

returnFALSE;

}

}

printf("没有你要查询的书籍\n");

fclose(fp);

returnFALSE;

}

findbook1()/*按作者查找图书函数*/

{

FILE*fp;

charbookcreat[10];

intture,i;

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("这本书的详细资料是:

%d%s%s此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);

}

else{printf("这本书已经有人借出\n");fclose(fp);return0;}

fclose(fp);

returnFALSE;

}

}

printf("没有你要查询的书籍\n");

fclose(fp);

returnFALSE;

}

(2)借阅模块

[说明]

查阅完图书记录后,用户要借阅图书,系统要在操作过程中提示用户输入流程,根据用户所输入的指令,帮助其完成借阅。

[流程]

[程序]

lendbook()/*借书函数*/

{

FILE*fp,*fp2;

inti,n;

intcarnum;

printf("请你输入你的卡号\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();return;}

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();

return;

}

}

printf("不存在这样的书,任意键返回\n");

fclose(fp);

getch();

return;

}

}

printf("你的卡号不存在,请申请新卡,按任意键返回\n");

fclose(fp);

getch();}

(3)管理模块

[说明]

管理模块最为复杂,管理所有的图书及职工、学生的信息。

先进入总体的管理系统,在这个系统中重点的操作是图书的管理,为其中的1至4项(分别是增加图书、删除图书、修改图书资料、书籍统计),同时系统还连接了职工、学生管理两个系统,为下一步的操作提供了条件。

职工管理系统主要有增加图书、删除图书、修改图书资料、书籍统计,学生管理系统主要有申请新卡、删除卡号、借书统计、卡号统计四个模块,用于管理学生登录信息。

[流程]

[程序]

<1>图书管理系统

addbook()/*增加图书函数*/

{

FILE*fp;

inti=1;

charchoice='y';

fp=fopen("book.txt","a+");

while(choice=='y'||choice=='Y')

{

printf("请你输入第%d本书的序号\n",i++);

scanf("%d",&book[i].booknum);

printf("请你输入书名\n");

scanf("%s",book[i].bookname);

printf("请你输入书的作者\n");

scanf("%s",book[i].bookcreat);

printf("请你设定书的状态(请设为1或0,1代表书还没人借,0表示书已经借出,设其他值,程序运行时无法得出正常结果)\n");

scanf("%d",&book[i].turefalse);

fwrite(&book[i],sizeof(structbook),1,fp);

printf("是否要输入下本书?

\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");

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();

return;

}

else

{

printf("按任意键返回\n");

getch();

return;}

}

changebook()/*修改图书资料函数*/

{

FILE*fp,*fp2;

charbookname[10],choice;

inti;

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(book[i].bookname,bookname)==0)

{

printf("你所要修改的书的资料如下,请选择你要修改的内容\n");

printf("序号:

〈%d〉书名:

〈%s〉作者:

〈%s〉\n",book[i].booknum,book[i].bookname,book[i].bookcreat);

printf("1:

修改书的序号\n");

printf("2:

修改书名\n");

printf("3:

修改作者\n");

printf("请输入1-3:

");

scanf("%s",&choice);

switch(choice)

{

case'1':

{

printf("请输入新的序号\n");

scanf("%d",&book[i].booknum);

fwrite(&book[i],sizeof(structbook),1,fp2);

}break;

case'2':

{

printf("请输入新的书名\n");

scanf("%s",book[i].bookname);

fwrite(&book[i],sizeof(structbook),1,fp2);

}break;

case'3':

{

printf("请输入新的作者\n");

scanf("%s",book[i].bookcreat);

fwrite(&book[i],sizeof(structbook),1,fp2);

}break;

defaut:

printf("没有这样的操作");break;

}

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(fp2);

fp2=fopen("bookl.txt","w");

fclose(fp2);

printf("按任意键返回\n");

getchar();

return;

}

bookcount()/*图书统计函数*/

{

FILE*fp;

inti,n=0;

fp=fopen

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1