2022年图书管理系统c语言_数据结构课程设计报告 3.pdf
数据结构大作业121279044 伍杨数据结构大作业图书管理系统工程管理121279044 伍杨目录一、题目要求 . 2 二、总体设计 . 2 三、编码实现 . 3 1) 定义图书结构体 . 3 2) 登记操作 . 4 3) 查看操作 . 8 4) 删除操作 . 11 5) Main 函数 . 20 四、调试与测试 . 26 五、五心得体会 . 28 六、用户手册 . 28名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨一、 题目要求1) 目的要求本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成管理系统设计,以及C语言算法的掌握 ,并能最终实现本系统的功能要求, 通过这个程序可以学习到以前调试短程序没有的的经验。2) 题目要求实现图书管理信息系统的设计。要求实现图书添加、显示全部图书、查询、借阅和归还。主要考查利用文件的操作!二、 总体设计名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨三、 编码实现1) 定义图书结构体struct book char bookname20; / 书名int NO; / 书编号char type20; / 类型int date; / 到书日期; struct person char name10; / 姓名char classes20; / 班级int number; / 学号char telephone12; / 联系电话int NO; / 书编号char bookname20; / 书名int borrowdate; / 借书日期int returndate; / 还书日期名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨2) 登记操作void new_book() / 登记新书 FILE *fp; struct book b; int i,j; if(fp=fopen(shuku.txt,a)=NULL) printf(File open error!n); exit(0); printf(请朱老师输入此次收到的书本总数:); scanf(%d,&i); for( j=0;ji; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨all=i; if(i0&i=Max) for( j=1;jdataj.iddataj.namedataj.typedataj.statusdataj.count; in.close(); 3) 查看操作v void see_book() / 查看书库记录 FILE *fp; long NO; char bookname20; char type20; long date; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨if(fp=fopen(shuku.txt,r)=NULL) printf(File open error!n); exit(0); while(!feof(fp) fscanf(fp,%s%ld%s%ld,bookname,&NO,type,&date); printf(%-10s %-10ld %-10s %ldn,bookname,NO,type,date); ; if(fclose(fp) printf(Can not close the file!n); exit(0); void see_person() / 查看所有借书记录 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨FILE *fp; char name10; char classes20; int number; char telephone20; int NO; char bookname20; int borrowdate; int returndate; if(fp=fopen(jieshujilu.txt,r)=NULL) printf(File open error!n); exit(0); while(!feof(fp) fscanf(fp,%s %s %ld %s %ld %s %ld %ld,name,classes,&number,telephone,&NO,bookname,&borrowdate,&returndate); printf(%-5s %-5s %ld %-5s %ld %-5s %ld %ldn,name,classes,number,telephone,NO,bookname,borrowdate,returndate); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨; if(fclose(fp) printf(Can not close the file!n); exit(0); 4) 删除操作void delete_books() / 删除旧书 FILE *fp; struct book b; int number; void deletebooks(); printf(请输入您要删除的书编号:); scanf(%d,&number); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨if(fp=fopen(shuku.txt,r)=NULL) printf(不能打开此文件!n); exit(0); while(!feof(fp) fscanf(fp,%s %d %s %d,b.bookname,&b.NO,b.type,&b.date); if(b.NO=number) printf(nnt*图书信息 *n); printf(nt图书书名 :%25s,b.bookname); printf(nt-); printf(nt图书编号 :%25d,b.NO); printf(nt-); printf(nt图书类型: %23s,b.type); printf(nt-); printf(nt到书日期: %25d,b.date); printf(nt-); deletebooks(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨 void deletebooks() FILE *fp,*fp1,*fp2,*fp3; int number; struct book b; printf(nn确认删除?请再次输入书编号:); scanf(%d,&number); if(fp=fopen(shuku.txt,r)=NULL) printf(不能打开此文件!n); exit(0); if(fp1=fopen(tempshuku.txt,w)=NULL) / 建立一个临时文件printf(不能打开此文件!n); exit(0); while(!feof(fp) fscanf(fp,%s %d %s %d,b.bookname,&b.NO,b.type,&b.date); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨if(b.NO=number) continue; else fprintf(fp1,%s %d %s %d,b.bookname,b.NO,b.type,b.date); fclose(fp); fclose(fp1); if(fp2=fopen(tempshuku.txt,r)=NULL) printf(不能打开此文件!n); exit(0); if(fp3=fopen(shuku.txt,w)=NULL) / 清空书库printf(不能打开此文件!n); exit(0); while(!feof(fp2) / 将临时文件的内容写人源文件fscanf(fp2,%s %d %s %d,b.bookname,&b.NO,b.type,&b.date); fprintf(fp3,%s %d %s %d,b.bookname,b.NO,b.type,b.date); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨fclose(fp2); fclose(fp3); printf(n 删除成功! n); void delete_returnbook() / 删除借书记录 FILE *fp; int numbers; struct person p; void deletereturnbook(); char choice; printf(n请输入所还书本的书编号:); scanf(%d,&numbers); if(fp=fopen(jieshujilu.txt,r)=NULL) printf(不能打开此文件!n); exit(0); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨while(!feof(fp) fscanf(fp,%s %s %ld %s %ld %s %ld %ld,p.name,p.classes,&p.number,p.telephone,&p.NO,p.bookname,&p.borrowdate,&p.returndate); if(p.NO=numbers) printf(nt*图书信息 *n); printf(nt借书人姓名: %20s,p.name); printf(nt-); printf(nt借书人班级: %20s,p.classes); printf(nt-); printf(nt借书人学号: %20d,p.number); printf(nt-); printf(nt借书人联系电话:%20s,p.telephone); printf(nt-); printf(nt图书编号 :%24d,p.NO); printf(nt-); printf(nt图书名称 :%23s,p.bookname); printf(nt-); printf(nt借书日期: %25d,p.borrowdate); printf(nt-); printf(nt还书日期: %25d,p.returndate); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨printf(nt-); deletereturnbook(); printf(nt您想继续吗 ?(y/n); scanf( %c,&choice); if(choice=Y|choice=y) system(cls); delete_returnbook(); fclose(fp); void deletereturnbook() FILE *fp,*fp1,*fp2,*fp3; struct person p;int numbers; printf(nn确认删除?请再次输入书编号:); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨scanf(%d,&numbers); if(fp=fopen(jieshujilu.txt,r)=NULL) printf( 不能打开此文件! n); exit(0); if(fp1=fopen(tempbook.txt,w)=NULL) printf( 不能打开此文件! n); exit(0); while(!feof(fp) fscanf(fp,%s %s %d %s %d %s %d %d,p.name,p.classes,&p.number,p.telephone,&p.NO,p.bookname,&p.borrowdate,&p.returndate); if(p.NO=numbers) continue; else fprintf(fp1,%s %s %d %s %d %s %d %d,p.name,p.classes,p.number,p.telephone,p.NO,p.bookname,p.borrowdat名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨e,p.returndate); fclose(fp); fclose(fp1); if(fp2=fopen(tempbook.txt,r)=NULL) printf( 不能打开此文件! n); exit(0); if(fp3=fopen(jieshujilu.txt,w)=NULL) printf( 不能打开此文件! n); exit(0); while(!feof(fp2) / 将临时文件写人源文件fscanf(fp2,%s %s %d %s %d %s %d %d,p.name,p.classes,&p.number,p.telephone,&p.NO,p.bookname,&p.borrowdate,&p.returndate); fprintf(fp3,%s %s %d %s %d %s %d %d,p.name,p.名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨classes,p.number,p.telephone,p.NO,p.bookname,p.borrowdate,p.returndate); fclose(fp2); fclose(fp3); printf(n 删除成功! n); 5) Main 函数int main(void) int choice; char choice2; struct book; struct person; do printf(nnn 图书馆管理系统 na); printf( *n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨printf( *朱老师您好吖 *功能选项:登记 * 请按 1,*n); printf( * 查看/ 查询*请按 2 *n); printf( * 删除* 请按 3 *n); printf( * 退出* 请按 0 *n); printf( *nnn); printf( 请选择功能: ); scanf(%d,&choice); switch(choice) case 1: printf( 登记选项: 新书登记请按1,借书登记请按2,返回请按 3n); printf(请选择: ); scanf(%d,&choice); switch(choice) case 1: system(cls); / 清屏printf(新书资料登记: nn); new_book(); / 新书登记printf(登记完毕! n); printf(n); scanf( %c,&choice2); system(cls); break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨case 2: system(cls); printf(借书资料登记: nn); new_person(); / 借书登记printf(n press anykey ); scanf( %c,&choice2); system(cls); break; case 3: system(cls); break; break; case 2: printf( 查看/ 查询选项:书库查看请按1,总借书记录查看请按2,到期记录查询请按3,返回请按4n); printf(请选择: ); scanf(%d,&choice); switch(choice) case 1: system(cls); printf(欢迎朱老师进入书库!nn); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨printf(书名书编号类型到书日期 n); printf(-n); see_book(); / 书库显示printf(n press anykey ); scanf( %c,&choice2); system(cls); break; case 2: system(cls); printf(欢迎朱老师进入借书记录!nn); printf(姓名班级 学号联系电话书编号书名借书日期到书日期n); printf(-n); see_person(); / 借书记录显示printf(n press anykey ); scanf( %c,&choice2); system(cls); break; case 3: system(cls); search_person(); / 显示符合记录printf(n press anykey ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨scanf( %c,&choice2); system(cls); break; case 4: system(cls); break; break; case 3: printf( 删除选项:旧书删除请按1,借书记录删除请按2,返回请按3n); printf(请选择: ); scanf(%d,&choice); switch(choice) case 1: system(cls); delete_books(); / 删除 ing printf(n press anykey ); scanf( %c,&choice2); system(cls); break; case 2: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨system(cls); delete_returnbook(); / 删除 ing printf(n press anykey ); scanf( %c,&choice2); system(cls); break; case 3: system(cls); break; break; case 0: system(cls); while(choice != 0); return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 25 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨四、 调试与测试主菜单登记名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 26 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨查看删除生成的文件内信息名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 27 页,共 28 页 - - - - - - - - - 数据结构大作业121279044 伍杨五、 五心得体会经过这次大作业,我觉得代码的编写,最主要的的是编程思想,语言其实不是太重要,思路最重要!六、 用户手册程序执行文件为lib sys.exe,打开执行文件后按提示操作即可名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 28 页,共 28 页 - - - - - - - - -