图书管理系统综合实验报告

更新时间:2024-06-16 09:17:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

信息科学与工程学院 《结构化程序设计》综合实验报告

图书管理系统的设计与实现

学科专业: 计算机科学与技术 班 级: 学 号: 指导教师: 学 生:

二零一四年十二月

福建工程学院信息科学与工程学院

目 录

1 设计任务 ................................................................................................................................................2 2 需求分析 ................................................................................................................................................2

2.1 系统功能 ............................................................................................................................2 2.2 开发与运行环境 ................................................................................................................2

3 系统概要设计 ........................................................................................................................................2

3.1 数据结构设计 ....................................................................................................................2 3.2 总体设计 ............................................................................................................................3 4 系统详细设计 ................................................................................................................................4 5 系统测试 ........................................................................................................................................6 6 总结与反思 ....................................................................................................................................9 参考文献 ....................................................................................................................................................10 致 谢........................................................................................................................................................ 11 附录 源代码 ............................................................................................................................................13

1

《结构化程序设计》综合实验报告

1 设计任务

设计并实现一个图书管理系统,可以对书籍进行添加、删除、浏览、查找等操作。 图书的信息项应包括:书名、索书号、ISBN号、作者、出版社、出版年份。查找功能应能够支持以图书的任一信息项为关键字,并能够进行多个信息项的组合查找。

2 需求分析

本图书管理系统,可以对书籍进行添加、删除、浏览、查找等操作。查找功能支

持图书以任一信息项为关键字,并能够进行多项信息组合查找。

2.1 系统功能

本图书管理系统,可以对书籍进行添加、删除、浏览、查找等操作。查找功能支持图书以出版社和作者进行组合查找。

2.2 开发与运行环境

2.2.1 开发环境

1.开发语言统一为C语言。

2.开发平台为Code::Blocks 13.12版本,GCC编译器。 2.2.2 运行环境

本次课程设计运行实现win 8.1(64位)

3 系统概要设计

3.1 数据结构设计

int Mark; 记录储存次数

福建工程学院信息科学与工程学院

typedef struct {

char booknum[20]; 书籍编号 char bookname[20]; 书籍名称 char author[20]; 书籍作者 char pubhouse[20]; 书籍出版社 char pubtime[20]; 书籍出版时间 char searchnum[20]; 书籍索引号 char ISBNnum[20]; 书籍ISBN编号 }book; 定义结构体book

3.2 总体设计

绘制系统总体功能构成,如下图所示。

图书管理系统登陆系统书籍信息查找书籍信息修改已有数据载入主界面载入单项查找组合查找显示全部信息添加书籍信息删除书籍信息 图1 系统总体设计

图1为系统总体功能展示,分为进入系统、书籍信息查找、书籍信息修改三大部分,其中登陆系统又分为已有数据载入和主界面载入两部分;书籍信息查找又分为单项查找和组合查找两部分;书籍信息修改分为显示全部信息、添加书籍信息、删除书籍信息三部分。

3

《结构化程序设计》综合实验报告

4 系统详细设计

4.1所有函数

表1 所有函数列表

函数首部 void main() void Welcome() book.h void Increase() void Deletebookinfor() void Search() void Save(int n) int Show() void Load() 功能概要 主函数 界面初始化 自定义结构体头文件 添加书籍数据 删除书籍数据 查找书籍数据 保存文件 显示所有书籍数据 读取文件信息 4.2进入系统模块

登陆系统已有数据载入主界面载入

图2 登陆系统

图2为登陆系统,在已有数据载入函数Load中可以讲以前添加的书籍信息从文件中读取到内存中,保证再次写入的时候不会丢失原有数据。主界面载入函数通过循环,使得每项作完成总能回到主界面。

表2 进入系统函数与主函数

函数首部 功能概要 福建工程学院信息科学与工程学院

void main() void Welcome() book.h void Load() 主函数 界面初始化 自定义结构体头文件 读取文件信息 4.3书籍信息查找模块

书籍信息查找单项查找组合查找 图3书籍信息查找

图3书籍信息查找模块,单项查找可以实现书籍名称和书籍编号的单项查找,组合查找可实现通过作者和出版的的组合进行查找。

表3 书籍信息查找函数

函数首部 void Search() 功能概要 查找书籍数据 4.4书籍信息修改模块

书籍信息修改显示全部信息添加书籍信息删除书籍信息 图4书籍信息修改

图4书籍信息修改模块,可实现当前存储书籍信息的全部浏览、添加新的书籍信息、通过书籍编号删除已有书籍信息。

5

《结构化程序设计》综合实验报告

表4 书籍信息修改函数

函数首部 void Save(int n) int Show() void Increase() void Deletebookinfor()

功能概要 保存文件 显示所有书籍数据 添加书籍数据 删除书籍数据 5 系统测试

图1 欢迎界面

福建工程学院信息科学与工程学院

图2 添加新的图书

图3 显示所有书籍信息

7

《结构化程序设计》综合实验报告

图4 按照书籍编号查找

图5 按照书籍名称查找

图6 出版社和作者混合查找

图7 删除已有书籍信息

福建工程学院信息科学与工程学院

图8 退出系统

6 总结与反思

通过本次课程设计,我进一步熟练掌握了用工程文件模块化的进行程序设计,本次课程设计过程中遇到了很多困难,比如在工程文件当中结构体如何调用问题,如何实现组合查找,还有程序运行过程中出现的种种错误等等,通过克服这些错误,我觉得自己对于C语言的掌握比以前更好了。

本次课程设计有部分问题较难解决。在显示所有函数时,总是显示一个空的书籍,在添加文件之后并不能及时写入文件当中保存,而是要结束整个程序运行才能将数据保存在文件当中。对于这些问题我查了各种资料,询问老师、同学,最终找到了解决的方法,以后在程序设计的时候我会认真设计争取避免同样的情况发生。

9

《结构化程序设计》综合实验报告

参考文献

[1] 黄翠兰. 高级语言程序设计[M]. 修订版. 厦门:厦门大学出版社. 2012. [2] 杨升. 数据结构(C语言版)[M]. 第二版. 厦门:厦门大学出版社. 2013. [3] 谭浩强. C程序设计[M]. 第3版. 北京: 清华大学出版社. 2005.

福建工程学院信息科学与工程学院

致 谢

本次课程设计要感谢我的同学,他们在我程序出现问题的时候给予我帮助,帮我查找并修改程序。同时还要感谢老师,老师教给我这些知识,让我能够学习C语言,运用C语言,感谢老师给予我的帮助。

11

《结构化程序设计》综合实验报告

福建工程学院信息科学与工程学院

附录 源代码

/*----------book.h----------*/ //自定义结构体头文件 #define NUM 100 #ifndef STRU_book #define STRU_book

int Mark;//记录储存次数

typedef struct {

char booknum[20]; char bookname[20]; char author[20]; char pubhouse[20]; char pubtime[20]; char searchnum[20]; char ISBNnum[20]; }book;//自定义结构体book

#endif // STRU_book

/*----------main.c----------*/ //主函数

#include \#include \#include \#include \

book bookinfor[NUM];

void main() {

Mark=0; char ch;

Load();//载入已有数据 do//界面循环 {

Welcome();

13

《结构化程序设计》综合实验报告

printf(\请选择需要执行的操作:\ scanf(\ getchar();

if(ch=='1') Show();

if(ch=='2') Increase();

if(ch=='3') Deletebookinfor(); if(ch=='4') Search(); if(ch=='5') break; system(\ }while(1);

system(\ printf(\谢谢使用!\}

/*----------Load.c----------*/ //读取文件信息

#include \#include \#include \#include \

extern book bookinfor[NUM];

void Load() {

int i;

FILE *fp;// 指向文件指针

if((fp=fopen(\//读取bookinfor.txt里存储的书籍信息

{

printf(\文件打开失败\\n\ return; }

printf(\读取文件...\\n\ rewind(fp);

for(i=0;i

fread(&bookinfor[i],sizeof(book),1,fp);//将文件中的数据读取到内存当中

}

printf(\书籍信息读取成功...\\n\

for(i=0;i

福建工程学院信息科学与工程学院

书籍信息 {

if(strlen(bookinfor[i].bookname)==0) {

Mark=i;//改变记录函数的值 return; } } }

/*----------Welcome.c----------*/ //界面初始化

#include \#include \#include \#include \

extern book bookinfor[NUM];

void Welcome() {

printf(\图书管理系统-------\\n\ printf(\显示图书信息------\\n\ printf(\添加新的图书------\\n\ printf(\删除已有图书------\\n\ printf(\查找图书信息------\\n\ printf(\退出管理系统------\\n\}

/*----------Save.c----------*/ //保存文件

#include \#include \#include \#include \

extern book bookinfor[NUM];

void Save() {

15

《结构化程序设计》综合实验报告

FILE *fp; int i,b=0;

if((fp=fopen(\ printf(\文件打开失败!\\n\

for(i=0; i

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

}

fclose(fp); }

/*----------Show.c----------*/ //显示所有书籍数据

#include \#include \#include \#include \

extern book bookinfor[NUM];//读取头文件中定义的自定义结构体

int Show() {

int i=0; FILE *fp;

system(\

if((fp=fopen(\ {

printf(\打开文件失败\\n\ getchar(); return; };

while(i

fread(&bookinfor[i],sizeof(book),1,fp); printf(\书籍编号:\

printf(\ printf(\书名:\

printf(\ printf(\作者:\

printf(\ printf(\出版社:\

福建工程学院信息科学与工程学院

printf(\ printf(\出版时间:\

printf(\ printf(\索书号:\

printf(\ printf(\编号:\

printf(\ i++; }

fclose(fp);

printf(\请按任意键返回...\ getch(); return i; }

/*----------Increase.c----------*/ //添加书籍数据

#include \#include \#include \#include \

extern book bookinfor[NUM];

void Increase() {

int i=Mark; char ch; FILE *fp; do {

system(\

printf(\当前输入书籍为第%d本\\n\ printf(\开始输入书籍信息\\n\\n\ printf(\书籍编号:\\n\

gets(bookinfor[i].booknum); printf(\书名:\\n\

gets(bookinfor[i].bookname); printf(\作者:\\n\

gets(bookinfor[i].author); printf(\出版社:\\n\

gets(bookinfor[i].pubhouse);

17

《结构化程序设计》综合实验报告

printf(\出版时间:\\n\

gets(bookinfor[i].pubtime); printf(\索书号:\\n\

gets(bookinfor[i].searchnum); printf(\编号:\\n\

gets(bookinfor[i].ISBNnum);

printf(\添加成功!是否继续添加?(Y/N)\ Mark=Mark+1; do {

ch=getch();

if(ch=='Y'||ch=='y'||ch=='N'||ch=='n') {

printf(\//将输入的字母打印到界面中 getchar(); break; }

}while(1); i++;

}while(ch=='Y'||ch=='y'); Save(); return; }

/*----------Search.c----------*/ //查找书籍数据

#include \#include \#include \#include \

extern book bookinfor[NUM];

void Search() {

char ch;

char search[20], search2[20]; int i=0; FILE *fp;

system(\

printf(\查找方式:\\n1.书籍编号查找\\n2.书籍名称查找\\n3.出版社和作者查找\\n请选择:\

福建工程学院信息科学与工程学院

do//获取输入的值 {

ch=getch(); if(ch>=0) {

printf(\//打印输入的选项在界面中 getchar(); break; } }

while(1);

if((fp=fopen(\ {

printf(\打开文件失败\\n\ return; }

if(ch=='1') {

printf(\请输入书籍编号:\ gets(search); while(!feof(fp)) {

fread(&bookinfor[i],sizeof(book),1,fp);

if(!strcmp(search,bookinfor[i].booknum))//search与书籍编号相等时输出值为1

{

printf(\书籍编号:\

printf(\ printf(\书名:\

printf(\ printf(\作者:\

printf(\ printf(\出版社:\

printf(\ printf(\出版时间:\

printf(\ printf(\索书号:\

printf(\ printf(\编号:\

printf(\ printf(\请按任意键返回...\ getchar(); fclose(fp); return;

19

《结构化程序设计》综合实验报告

i++; } } }

if(ch=='2') {

printf(\请输入书名:\ gets(search); while(!feof(fp)) {

fread(&bookinfor[i],sizeof(book),1,fp); if(!strcmp(search,bookinfor[i].bookname)) {

printf(\书籍编号:\

printf(\ printf(\书名:\

printf(\ printf(\作者:\

printf(\ printf(\出版社:\

printf(\ printf(\出版时间:\

printf(\ printf(\索书号:\

printf(\ printf(\编号:\

printf(\ printf(\请按任意键返回...\ getchar(); fclose(fp); return; i++; } } }

if(ch=='3') {

printf(\请输入出版社和作者 :\

scanf(\//获取输入的出版社 getchar();

scanf(\//获取输入的作者

while(!feof(fp))//在整个文件中查找,直到文件末尾 {

fread(&bookinfor[i],sizeof(book),1,fp);

福建工程学院信息科学与工程学院

if(!strcmp(search2,bookinfor[i].author)&&!strcmp(search,bookinfor[i].pubhouse))//找到与输入值相同的信息输出为1 {

printf(\书籍编号:\

printf(\ printf(\书名:\

printf(\ printf(\作者:\

printf(\ printf(\出版社:\

printf(\ printf(\出版时间:\

printf(\ printf(\索书号:\

printf(\ printf(\编号:\

printf(\ printf(\请按任意键返回...\ getchar(); getchar(); break;

fclose(fp); } else

{ printf(\查找错误!\\n\

printf(\请按任意键返回...\ getchar(); getchar(); break; } } } else {

system(\

printf(\操作错误!请按任意键返回...\ fclose(fp); getchar(); return; } }

21

《结构化程序设计》综合实验报告

/*----------Delete.c----------*/ //删除书籍数据

#include \#include \#include \#include \

extern book bookinfor[NUM];

void Deletebookinfor() {

int i=0,b=0,k;

char deletenum[20]; FILE *fp;

system(\

printf(\输入要删除的书籍编号:\ gets(deletenum);

if((fp=fopen(\ {

printf(\文件打开失败\\n\ return; }

while(!feof(fp)) {

fread(&bookinfor[i],sizeof(book),1,fp); i++; }

for(b=0;b

if(!strcmp(deletenum,bookinfor[b].booknum))//两者值相等时,输出为1 {

for(k=b;k

if((fp=fopen(\ {

printf(\文件打开失败\\n\ return; }

for(i=0;i

if(fwrite(&bookinfor[i],sizeof(book),1,fp)!=1) printf(\文件写入失败\\n\ fclose(fp);

printf(\删除成功!请按任意键返回...\

福建工程学院信息科学与工程学院

getchar(); return; }

printf(\找不到要删除的文件!请按任意键返回...\ getchar(); return; }

23

本文来源:https://www.bwwdw.com/article/y7z3.html

Top