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

时间:2024.3.31

合肥学院

计算机科学与技术系

课程设计报告

2012~20##学年第一学期

              目                录

一、系统设计背景;

二、课程设计的需求分析:

三、系统设计的目的及具体要求;

四、算法设计;

五、用户手册;

六、调试及测试;

七、总结.

一、系统设计背景:

     人类已经跨入了新世纪,正在进入信息化时代。信息化浪潮、网络革命在给社会带来冲击的同时,也使图书馆业务受到了强烈的冲击,图书馆传统的管理和服务方式已不能适应读者对日益增长的文献信息的需求。随着馆藏量的不断增加,图书资料的录入和查询的难度也就相应增加,数据处理手工操作,工作量大,出错率高,出错后不易更改的手工方式,已经不能满足要求。

     基于此问题,建立一个规范化,系统化,程序化的图书管理系统迫不及待。为方便对图书馆书籍的录入、修改、删除、借、还书等进行高效的管理,特编写程序以提高图书馆的管理效率。使用程序之后,工作人员可以查询书籍的在库状态,删除或者修改某图书,可以全面掌握图书的流通情况等等。

二、课程设计的需求分析:

    为了满足图书管理的要求,通过计算机技术给图书管理员和读者借书、还书带来便利。使用C语言编写了图书管理系统。本系统主要实现了图书信息管理的功能,通过此系统可以对图书馆库存图书信息进行管理和维护操作。实现了图书馆内管理的一般功能,包括查询、删除、修改、图书信息等,所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并且在此过程中能够尽可能的兼容用户使用过程中可能出现的异常情况。图书信息包括编号、书名、作者、出版社、出版日期、价格等,图书信息的录入要求和显示要求是一定的规范要求,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、修改、删除等基本操作。

三、系统设计的目的及具体要求:

(1)目的:将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:

(1)进一步巩固、加深学生所学专业课程《C程序设计语言》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。

    (2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。

    (3)利用所学知识,开发小型应用系统,掌握运用C语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。

(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。

(5)掌握结构化程序设计方法,熟悉面向过程程序设计方法。

(6)熟练掌握C语言的基本语法,灵活运用各种数据类型。

(7)进一步掌握在集成环境下如何调试程序和修改程序。

(2)课程设计名称及内容

课程设计名称:图书管理系统

设计内容:设计一个实用的小型图书管理程序,设计图书的索引卡片。对图书的在库和借出状态要有所表示。能提供读者信息查询及提供按图书的编号、书名、责任者、出版社等途径的检索。

(3)任务和要求

程序应提供的基本基本管理功能有:

1) 添加:即增加一本数的记录到系统中

2) 存储:即将图书信息保存在一个文件中。

3) 装入:即将文件中的信息读入程序。

4) 查询:可根据书名、编号查找书的相关信息,若找到显示该书全部信息。

5) 修改:可修改一本书的除书名外其它信息。、

6) 状态:提供该书在库、不在库的状态。

四、算法设计:

 1、系统设计思路 :

    整个系统制造的过程中,涉及了较多C语言的知识点,对于不同的数据类型、程序控制结构等作以分析。

(1)整个系统除了主函数外,另外还有各种功能的子函数,利用无限次循环语句while()和选择语句switch()实现了各个子函数的功能,系统根据输入的数字选项来调用相应的函数,以实现相应的功能。主要实现了图书的录入、存储、查询、删除、修改、借书、还书等功能;

(2)mbook():这是一个图书结构体,可以描述每本书共同拥有的属性和行为,

(3)Save()、putin()、lookup()、del()、update()、search():这几个是功能函数,Save():保存一本书的信息,putin():录入一本书的信息,search():查询一本书的信息以及记录,update():修改一本书的信息,del():删除一本书的信息.

(4)Borrowbook()、returnbook(),这两个函数式借书的函数,在借还后系统会修改图书的在库信息,调用时将信息传递给函数,函数返回经过功能操作后,并会出提示信息让用户返回菜单保存信息。

实现注释:

   这个适用的小型图书管理系统程序的所有信息以磁盘文件的方式保存,方便用户使用,实现了图书管理系统的基本功能,包括了图书的录入、图书的查询、图书的删除、图书的修改、图书的在库状态表示。查询是可按书名、编号、作者、出版社、出版时间以及价格等方式查询,找到后系统会自动输出这本书的所有信息。也可查询图书的在库状态,方便用户借书、还书操作,在借书或者还书成功后图书的在库状态即改变。系统中主要的数据结构就是图书的信息,包含编号、书名、作者、出版社、出版时间、价格、在库状态,在处理过程中各项可以成为一本图书的不同属性来处理。

2、程序结构流程图:

 


3、设计表示:

(1)利用结构体typedef struct {};将图书馆内的书籍共同拥有的属性和数量表达出来,属性中包括书号、书名、作者、出版社出版时间以及价格,属性中包括书的本数以及最大可储存的数量。

(2)分别写不同的子函数:

        void save();

        void putin() ;

        void lookup();

        void search_by_name()  ;

        void search_by_author();

        void search();

        void del();

        void update();

首先利用void save()这个子函数来描述图书管理系统保存图书信息的功能,打开library.doc这个文件,确认文件可用时即可保存图书信息;void putin() 可方便图书馆工作人员录入新书,具体录入内容包括书号、书名、作者名、出版社、出版时间以及价格;利用1,0让工作人员可选择继续录入否;使用者可以通过void lookup()这个子函数来查询图书馆所以书籍的在库状态,如果书籍不在即表示已经借出;如果使用者想要搜索自己想要的书,可以通过该书的各种属性进行查询,在该系统中我仅列举了两种属性即书名和作者,用户在输入想要找的书的书名或该书作者即可查询书的在库状态,如果该书尚在库,用户即可进行借出操作,同时也可以得到该书的其他属性,包括书名、作者、出版社、出版时间、价格;图书馆的工作人员在调整图书库时 ,如果想要删除某些书籍,即可利用void del()这个子函数来进行操作,输入想要删除的书籍的各种属性即可找到该书,任何进行删除操作;当然进行修改某本书的属性时也一样,只要通过书的编号找到该书即可进行各种不同的修改。

(3)最后在结尾编写主函数main(),在确认“library.doc”!=NULL时进行图书管理系统的目录操作,在系统的主目录上,用户可以看到六个操作选项,包括图书信息录入、图书信息浏览、图书信息查询、图书信息删除、图书信息修改、退出图书管理系统。在确认选项后即可进行下一步由各个子函数实现的不同操作。

(4)设计过程中的想法:因为自身知识以及时间的所限,本系统所提供的功能非常有限,有一些图书馆所必备的功能没有实现,其中最重要的一点是对读者的管理,如果时间充足的话还可以加入,设置借书卡或会员证,对书籍的借出状况能有更好的储存,在工作人员想要找书时可以利用系统查询书籍的借者。总的来说这个程序大致实现了题目的要求,但是这套程序仍然存在着很多的问题与不足,在提示信息方面可能还不够,有待改进。

五、用户手册:

下面,我大致介绍一下我得系统的主要功能和主要事项:

当运行该程序时,首先进入系统主界面,如何可以选择1.图书信息的录入2.图书信息的浏览3.图书信息的查询4.图书信息的删除5图书信息的修改0退出图书管理系统.当出现please enter choose:时,需要输入选项前的数字,输入完之后按回车键。首次运行系统时应选择1,录入一些书籍,在完成第一次的操作后,用户即可再回到系统进行其他选项的操作,不会出现cannot find!的错误提示,当用户选择2时系统会出现第一次录入的所有书的各种信息,包括书名、编号、作者、出版社、出版时间、价格;

当用户选择3时系统界面会出现提示,让用户选择想要查询书籍的编号,输入编号即可看到该书的各种不同属性;当用户选择4时系统也会给用户提示,让用户选择想要删除的书籍编号,当输入编号并确认后,该书就会在图书管理系统中删除;当用户选择5时系统也会给用户提示,让用户选择想要修改的书籍编号,输入完毕后,用户即可对该书的不同属性进行修改操作;返回菜单需按回车键即可。

六、调试及测试:

  1.进入主菜单:

2.选择1录入3本书籍:

 

        

       

3.选择2浏览图书信息:

  

4.选择3查询图书:

   

5.选择4删除图书:

  

6.选择5修改图书:

7.选择0即可退出系统。

七.总结:

在这两个星期的实践中,通过编写这个图书管理系统,我体会到了C语言学习的适用性,将理论和实践结合在一起,用先进的计算机工具方便人们的生活,C语言程序的编写首先要从大局考虑,把自己编写的整个程序的思想都写在草稿上,这样有助于自己编写程序,在编写时要完善注释,方便其他人理解程序,编写的程序从理论上来说并没有错误,但一上机就错误不断,甚至照搬课本上的知识也不变,不能得到正确的结果。有时程序改了一遍又一遍,但就是不能成功,编程简直让人头都大了,看似简单的程序,在调试时不断出错。经反反复复的修改后,最后终于成功了,这时所有的烦恼都没了,好轻松,想想这一切都是值得的。我认为,开发一套系统,最主要的是细心与耐心,并且思考要全面,结合实际,充分考虑客户的需求和现实意义,不管什么系统,只有运用到实际生活中,才具有现实意义。所以C语言程序的实用性很强,我们以后还要更加努力认真地学习编程语言。

参考资料:

1] 黄明等编著《C语言课程设计》北京:电子工业出版社

[2] 郭翠英编著《C语言课程设计案例精编》北京:中国水利水电出版社

[3] 宁正元《数据结构(c语言)》 南京:东南大学出版社。20##年6月第1版

[4] 严蔚敏等 《数据结构(c语言版)》 北京:清华大学出版社,1997年4月第1版

[5] 谭浩强编著《C程序设计题解与上机指导(第3版) 》北京:清华大学出版社

[6] 谭浩强编著《C程序设计(第3版) 》北京:清华大学出版社

[7] 洪国胜 等编著 《C++ Builder程序设计轻松上手》北京:清华大学出版社

[8] 宁正元《数据结构(c语言)》 南京:东南大学出版社。20##年6月第1版

[9] 严蔚敏等 《数据结构(c语言版)》 北京:清华大学出版社,1997年4月第1版。[10] 明日科技 编著《Visual C++程序开发范例宝典》北京:人民邮电出版社。

[11] 胡学钢等《数据结构算法设计指导》北京:清华大学出版社,1999年 第1版。

[12] 刘大有《数据结构》(面向21世纪课程教材) 北京:高等教育出版社。20##年6月第1版。

 [8].胡学钢等《数据结构算法设计指导》北京:清华大学出版社,1999年 第1版。

原代码:

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

typedef struct

{

char number[10];//书号

char name[20];//书名

char author[20];//作者

char publish[50];//出版社

char time[20];//出版时间

float price;

}mbook;

typedef struct

{

int count;//书的本数

mbook book[100];//最大可有100本书

}mlibrary;

     mlibrary library;

void save()//保存图书信息。

{

FILE *fp;

if((fp=fopen("library.doc","w"))==NULL)

{

printf("\n不能保存图书信息\n");

return;

}

fwrite(&library.count,sizeof(int),1,fp);

fwrite(library.book,sizeof(library.book[0]),library.count,fp);

}

void putin() /*定义录入函数*/

{

  int y=1;

  system("cls");

while(y)

  {

printf("\t请输入您的书籍的书号:");

scanf("%s",library.book[library.count].number);

printf("\t请输入书名:");

scanf("%s",library.book[library.count].name);

 printf("\t请输入作者名:");

scanf("%s",library.book[library.count].author);

printf("\t请输入出版社:");

scanf("%s",library.book[library.count].publish);

printf("\t请输入出版时间:");

scanf("%s",library.book[library.count].time);

printf("\t请输入该书的价格:");

fflush(stdin);

scanf("%f",&library.book[library.count].price);

library.count++;

printf("\n是否继续录入(1.继续;0,退出录入):");

fflush(stdin);

scanf("%d",&y);

if (y!=1)

{

y=0;

break;

}

}

save();

}

   void lookup()

{

  int i ;

  system("cls");

  printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n");

for ( i=0;i<library.count;i++)

{

printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price);

 }

 fflush(stdin);

 getchar();

}

void search_by_name() /*定义按书名查询*/

{

 int i ;

 char s2[20];

int flag=1;

 printf("\n请输入要查询的书名: ");

fflush(stdin);

scanf("%s",s2);

printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n");

for( i=0;i<library.count;i++ )

 if(strcmp(s2,library.book[i].name)==0)

{

 flag=0;

printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price);

 }

 if (flag)

{

printf("cannot found!");

}

fflush(stdin);

getchar();

}

   void search_by_author() /*定义按作者名查询*/

{

int i ;

char s3[20];

int flag=1;

 printf("请输入要查询的书的作者: ");

fflush(stdin);

scanf("%s",s3);

printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n");

for( i=0;i<library.count;i++ )

 if(strcmp(s3,library.book[i].author)==0)

 {

flag=0;

printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price);

 }

if (flag)

{

printf("cannot found!");

 }

fflush(stdin);

getchar();

}

   void search() /*定义查询函数*/

{

int a;

system("cls"); /*进行清屏*/

printf("\t\t******************************\n");

printf("开始查询\n");

printf("\t\t\t1---------------search_by_name\n");

printf("\t\t\t2---------------search_by_writer\n");

printf("\t\t\t0---------------exit\n");

printf("\t\t******************************\n") ;

printf("\t\t请选择你想要的查询方式:");

flush(stdin);

scanf("%d",&a);

switch(a)

{

case 1:

search_by_name();

break;

case 2:

search_by_author();

break;

case 0:

 return;

 }

}

void del() /*定义删除函数*/

int i;

char number[10];

 system("cls"); /*清屏*/

 printf("\n Please type in the number of the book you want to delete:");

fflush(stdin);

scanf("%s",number);

 for (i=0;i<library.count;i++)

{

if(strcmp(number,library.book[i].number)==0)break;

}

 if (i!=library.count)

 {

for(;i<library.count-1;i++)

{

strcpy(library.book[i].name,library.book[i+1].name);

strcpy(library.book[i].number,library.book[i+1].number);

strcpy(library.book[i].publish,library.book[i+1].publish);

strcpy(library.book[i].author,library.book[i+1].author);

strcpy(library.book[i].time,library.book[i+1].time);

library.book[i].price=library.book[i+1].price;

}

library.count--;

 }

else

printf("\n cannot found!\n");

save();

fflush(stdin);

getchar();

}

void update()//修改图书信息

{

 int i;

char number[10];

 system("cls"); /*清屏*/

printf("\n Please type in the number of the book you want to delete:");

fflush(stdin);

scanf("%s",number);

for (i=0;i<library.count;i++)

 {

if(strcmp(number,library.book[i].number)==0)

{

 printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n");

printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price);

 break;

 }

 }

 if (i!=library.count)

{

  mbook book;

     printf("\n\t\t请输入修改后此图书的信息\n");

     printf("\t请输入图书号:");

     scanf("%s",book.number);

     printf("\t请输入图书名:");

     scanf("%s",book.name);

     printf("\t请输入作者名:");

     scanf("%s",book.author);

     printf("\t请输入出版社:");

     scanf("%s",book.publish);

     printf("\t请输入出版时间:");

     scanf("%s",book.time);

     printf("\t请输入该书的价格:");

     fflush(stdin);

     scanf("%f",&book.price);

     strcpy(library.book[i].name,book.name);

     strcpy(library.book[i].number,book.number);                             strcpy(library.book[i].publish,book.publish);

strcpy(library.book[i].author,book.author);

 strcpy(library.book[i].time,book.time);

library.book[i].price=book.price;

 save();

}

 else

     printf("\n cannot found!\n");

     fflush(stdin);

     getchar();

}

void main()

{

  int a;

  FILE *fp;

  if((fp=fopen("library.doc","r"))==NULL)

{

printf("\n不能打开图书信息库\n");

fp=fopen("library.doc","w+");

printf("\n初始化图书信息库,初始化之后要重启程序\n");

library.count=0;

fwrite(&library.count,sizeof(int),1,fp);

fclose(fp);

return;

}

 fread(&library.count,sizeof(int),1,fp);

 fread(library.book,sizeof(library.book[0]),library.count,fp);

 fclose(fp);

 do

{

 system("cls");

printf("\n\n\n\n\n\t\t\t\t图书信息管理系统\t\t\t\t\n");

printf("\t\t*********************************************\n");

printf("\t\t\t1 ------------------图书信息录入\n");

printf("\t\t\t2 ------------------图书信息浏览\n");

printf("\t\t\t3 ------------------图书信息查询\n");

printf("\t\t\t4 ------------------图书信息删除\n");

printf("\t\t\t5 ------------------图书信息修改\n");

printf("\t\t\t0 -----------------退出图书管理系统\n");

printf("\t\t*********************************************\n");

 printf("\t\tPlease Enter Choose: ");

 fflush(stdin);

 scanf("%d",&a);

switch(a)

{

 case 1:

     putin();

     break;

case 2:

     lookup();

     break;

 case 3:

     search();

     break;

 case 4:

     del();

     break;

 case 5:

     update();

     break;

 case 0:

      printf("\n\n退出\n\n");

      break;

 default:

printf("\n序号不对\n");

 }

}while(a!=0);

save();

}

更多相关推荐:
c语言图书管理系统课程设计报告

合肥学院计算机科学与技术系课程设计报告20xx20xx学年第二学期课学学专指业导班教生姓程C语言课程设计图书管理系统名号级师课程设计名称20xx年6月一需求分析为了满足图书管理的要求通过计算机技术给图书管理人员...

c语言课程设计报告·图书管理系统

第一章11题目描述图书管理系统设计要求图书管理信息包括图书名称图书编号单价作者存在状态借书人姓名性别学号等试设计一图书管理系统使之能提供以下功能1新图书基本信息的输入2图书基本信息的查询3对撤销图书信息的删除4...

C语言图书管理系统课程设计报告[1]

第三章图书管理系统的设计与实现3.1系统的需求分析图书登记管理系统作为一个应用软件将为学校的老师和学生提供一个对学校图书馆深入了解并借阅、还书的平台。根据系统界面的提示信息对图书馆信息进行查询、初始化等操作系统…

c语言图书管理系统课程设计报告

沈航北方科技学院课程设计说明书课程名称教学部专业数控班级B042111学号B04211123学生姓名指导教师赵小磊20xx年6月链表实现图书信息操作田文目录摘要31绪论32系统分析321功能需求322数据需求4...

c语言图书管理系统课程设计报告

河南工业大学C语言课程设计报告20xx20xx学年第2学期课程C语言课程设计课程设计名称图书管理系统姓名晁永兵学号20xx16040220学院信息科学与工程学院专业软件工程班级2班20xx年05月04日一需求分...

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

课程设计报告图书馆管理系统目录1题目与要求22系统总体设计要给出必要的文字说明及必要的图示321功能需求分析明确选题的功能需求322系统功能模块划分要给出系统功能模块图43详细设计431重要数据的数据结构设计即...

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

C语言图书管理系统课程设计报告引言随着社会经济的迅速发展和现代科学技术的进步,人类社会正逐渐走向现代化。计算机事业的飞速发展,使得以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。同时,随着经济文化水平的…

通讯录管理系统课程设计报告书(C语言)[1]

课程设计报告书课程名称班级学号姓名指导老师通讯录管理系统一需求分析设计题目及要求建立通讯录信息信息至少包含编号姓名年龄电话通讯地址电子邮箱等能够提供添加删除和修改通讯录信息的功能能够提供安不同方式查询的功能如按...

C语言课程设计报告—图书信息管理系统

C语言课程设计报告图书信息管理系统设计5507113陈杰20xx1001797指导老师刘文中C语言程序设计编程实践是学习C语言程序设计的一重要环节上机实习和课程设计是提高同学们程序设计能力的有效途径能够使同学们...

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

一目的要求C语言程序设计是一门讲述C语言的基本知识和编程方法的课程在讲述C语言数据类型的基础上对C语言的五类语句做了简单的介绍另外还讨论了C语言的三种程序结构顺序选择和循环对函数的使用指针的概念结构体的应用文件...

C语言图书馆管理系统课程设计报告12

C语言课程设计学生姓名袁盛升学生学号所在班级任课教师姜林10211121图书馆管理系统设计目的图书信息包括登录号书名作者名分类号出版单位出版时间价格等试设计一图书信息管理系统使之能提供以下功能1系统以菜单方式工...

图书馆管理系统_毕业设计论文_开题报告

开题报告课题名称图书管理系统一立项依据1课题的目的及意义本次毕业设计所从事的课题题目是基于VB的图书管理系统的设计与实现课题的目的应用当前高速发展的计算机技术组建图书管理系统随着计算机及网络技术的飞速发展Int...

c语言图书管理系统课程设计报告(26篇)