C语言图书管理系统程序设计实习报告.docx
C语言图书管理系统程序设计实习报告C语言课程设计报告 1. 题目要求 图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等,试设计一图书管理系统,使之能提供以下功能: 新图书基本信息的输入。 图书基本信息的查询。 对撤销图书信息的删除。 办理借书的手续。 办理还书的手续。 2. 需求分析 这是一个能简单管理图书的小型图书管理系统,其中图书信息包括:书名,作者名,书编号,分类,出版社,价格等。通过这些信息使之提供以下功能: 图书信息的创建功能。其中图书信息包括:书名,作者名,书编号,分类,出版社,价格等。 图书信息查看功能。用来查看各项图书信息。 图书信息查找功能。通过已知信息来查找想要的图书。 图书信息的删除。可以删除指定图书。 图书信息的修改。可以修改图书的各项信息。 菜单选择功能,次功能也是图书信息管理系统的入口,用户所要进行的各种操作均需要在此模块中进行选择并进行调用其他模块实现相应的功能。 3. 总体设计 数据结构 图书管理系统中主要的数据结构包含书名、图书书号、作者名、分类、出版社、出版时间、价格等;在处理过程中各项可以作为一本图书的不同属性来进行处理。 struct Book /*定义结构体数组*/ char ISBN14; /编号 char Name20; /名称 char Author20; /作者 C语言课程设计报告 char Type10; /类型 char Pub20; /出版社 char Date10; /出版日期 float Price; /价格 ; 模块分化 本系统主要有添加图书、查找图书、搜索图书、删除图书、修改图书几个基本功能。 函数声明: int Choose; int Add; int View; int Search; int Delete; int Modify; int menu; 4. 详细设计 流程图: /选择 /添加图书 /查找图书 /搜索图书 /删除图书 /修改图书 /返回系统 C语言课程设计报告 开始 主菜单 输入 查找 添加图书 查看图书 书名查找 作者查找 编号查找 日期查找 删除图书 修改图书 退出系统 C语言课程设计报告 4.1主函数 函数的原型:void main 函数的功能:调用菜单,使用各项功能。 程序: main menu; menu printf ("nn*图书管理系统*nnt1.添加图书nt2.查看图书nt3.搜索图书nt4.删除图书nt5.修改图书nt6.退出程序nn*n"); switch (Choose(6) case 1: Add; break; case 2: View; break; case 3: Search; break; case 4: Delete; break; case 5: Modify; break; case 6: exit(0); return 0; Choose(int limit) int n = 0; while (n < 1 | n > limit) C语言课程设计报告 printf("选择一个项目:"); scanf("%d", &n); getchar; return n; 开始 显示菜单的的一系列功能选项 N 输入n,判断n是否是16? Y 调用与n相应的模块 结束 4.2各功能模块设计 4.2.1添加图书信息: 函数原型:void Add 函数的功能:记录图书的各项信息 程序: Add FILE *f; struct Book b; f = fopen("Book.txt", "ab"); if (f = NULL) printf("File open error!n"); exit(0); C语言课程设计报告 else Add:printf ("请输入图书信息,分类标签:n图书编号 图书名称 作者 图书类型 出版社 出版日期 图书价格n"); scanf("%s%s%s%s%s%s%f", b.ISBN, b.Name, b.Author, b.Type, b.Pub, b.Date, &b.Price); fwrite(&b, sizeof(struct Book), 1, f); printf("n完成.t1.继续添加t2.返回菜单n"); switch (Choose(2) case 1: goto Add; break; case 2: fclose(f); menu; break; return 0; C语言课程设计报告 开始 输入 进入添加图书菜单 输入图书信息 添加成功 2 输入1或2 1 退出程序 4.2.2查看图书信息 函数的原型:void View 函数的功能:查看图书书编号,书名,作者名,类型,出版社,出版日期,价格。 程序: View FILE *f; struct Book b; f = fopen("Book.txt", "rb"); if (f = NULL) printf("File open error!n"); exit(0); else fread(&b, sizeof(struct Book), 1, f); C语言课程设计报告 while (feof(f) = 0) printf("%st%st%st%st%st%st%4.2fn", b.ISBN, b.Name, b.Author, b.Type, b.Pub, b.Date, b.Price); fread(&b, sizeof(struct Book), 1, f); fclose(f); printf("n完成.t1.返回菜单t2.退出程序n"); switch (Choose(2) case 1: menu; break; case 2: exit(0); return 0; 开始 输入2 进入查看图书菜单 1 输入1或2 2 退出程序 4.2.3搜索图书 C语言课程设计报告 函数的原型:void Search 函数的功能:通过书编号,书名,作者名,类型,出版社,出版日期查找图书。 程序: Search FILE *f; struct Book b; char s40; int i = 0; f = fopen("Book.txt", "rb"); if (f = NULL) printf("File open error!n"); exit(0); else printf("请输入图书关键词查询:"); scanf("%s", s); fread(&b, sizeof(struct Book), 1, f); while (feof(f) = 0) char bi128 = 0 ; strcat(bi, b.ISBN); strcat(bi, b.Name); strcat(bi, b.Author); strcat(bi, b.Type); strcat(bi, b.Pub); strcat(bi, b.Date); if (strstr(bi, s) printf("%st%st%st%st%st%st%4.2fn", b.ISBN, b.Name, b.Author, b.Type, b.Pub, b.Date, b.Price); i+; break; fread(&b, sizeof(struct Book), 1, f); fclose(f); if (i = 0) printf("没有发现图书信息!"); else printf("%d 发现信息", i); C语言课程设计报告 printf("n完成.t1.返回菜单t2.退出程序n"); switch (Choose(2) case 1: menu; break; case 2: exit(0); return 0; C语言课程设计报告 开始 输入3 进入搜索图书菜单 1 N 输入1或2 输入关键字,搜索是否有相关字? Y 显示相关书籍1 2 1 输入1或2 2 退出程序 结束 4.2.4删除图书 函数的原型:void Delete 函数的功能:通过图书编号或者查询图书编号确定图书,进而删除图书。 程序: Delete C语言课程设计报告 FILE *i, *o; struct Book b; char s40; printf ("你需要图书编号. 如果你没有,你可以通过查询功能获得.nt1.拥有图书编号t2.查询图书编号n"); if (Choose(2) = 2) Search; i = fopen("Book.txt", "rb"); o = fopen("tempBook.txt", "wb"); if (i = NULL | o = NULL) printf("File open error!n"); exit(0); else int c = 0; printf("请输入你想要删除的图书编号:n"); scanf("%s", s); fread(&b, sizeof(struct Book), 1, i); while (feof(i) = 0) if (strcmp(s, b.ISBN) fwrite(&b, sizeof(struct Book), 1, o); else c = 1; fread(&b, sizeof(struct Book), 1, i); fclose(i); fclose(o); remove("book.txt"); rename("tempbook.txt", "book.txt"); if (c) printf("删除成功."); else printf("无效图书编号."); printf("t1.返回菜单t2.退出程序n"); switch (Choose(2) case 1: menu; break; C语言课程设计报告 case 2: exit(0); return 0; C语言课程设计报告 开始 输入4 1 进入删除图书菜单 2 输入1或2? 1 输入1或2 2 输入要删除的图书编号 输入图书关键字 N 判断有效否? 显示相关图书或者没有发现图书 Y 1 删除成功 输入1或2? 1 输入1或2? 2 2 结束 4.2.5修改图书信息 函数的原型:void Modify 函数的功能:通过图书编号或者查询图书编号确定图书,进而修改图书。 程序: Modify C语言课程设计报告 FILE *i, *o; struct Book b, t; char s40; printf ("你需要图书编号. 如果你没有, 你可以通过查询功能获得.nt1.拥有图书编号t2.查询图书编号n"); if (Choose(2) = 2) Search; i = fopen("Book.txt", "rb"); o = fopen("tempBook.txt", "wb"); if (i = NULL | o = NULL) printf("File open error!n"); exit(0); else int c = 0; printf("请输入你想修改的图书编号:n"); scanf("%s", s); printf ("请输入图书信息,分类标签:n图书编号 图书名称 作者 图书类型 出版社 出版日期 图书价格n"); scanf("%s%s%s%s%s%s%f", t.ISBN, t.Name, t.Author, t.Type, t.Pub, t.Date, &t.Price); fread(&b, sizeof(struct Book), 1, i); while (feof(i) = 0) if (strcmp(s, b.ISBN) = 0) c = 1; b = t; fwrite(&b, sizeof(struct Book), 1, o); fread(&b, sizeof(struct Book), 1, i); fclose(i); fclose(o); remove("book.txt"); rename("tempbook.txt", "book.txt"); if (c) printf("修改成功."); else C语言课程设计报告 printf("无效图书编号."); printf("t1.返回菜单t2.退出程序n"); switch (Choose(2) case 1: menu; break; case 2: exit(0); return 0; C语言课程设计报告 开始 输入5 1 进入修改图书菜单 2 输入1或2? 1 输入1或2 2 输入要修改的图书编号 输入图书关键字 输入图书信息 显示相关图书或者没有发现图书 N 判断有效否? 1 Y 修改成功 2 1 输入1或2? 输入1或2? 2 结束 C语言课程设计报告 5. 系统运行 C语言课程设计报告 C语言课程设计报告 C语言课程设计报告 6. 总结