《2022年C语言课程设计图书管理系统.docx》由会员分享,可在线阅读,更多相关《2022年C语言课程设计图书管理系统.docx(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -C 语言课程设计姓名: 莫方民班级:运算机 1403学号: 144030318细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页,共 23 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -图书治理系统目录一、 题目要求及能实现的功能 2 二、 程序总体设计 2 三、 具体设计1、主函数 4 2、各功能模块设计 5 四、 附 录 26 题目要求及能实现的功能- 1 - 细心整理归纳 精选
2、学习资料 - - - - - - - - - - - - - - - 第 2 页,共 23 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -图书治理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等,使之 能供应以下功能:1、新进图书基本信息的输入;2、图书基本信息的查询;3、对撤消图书信息的删除;4、办理借书手续;5、办理仍书手续【提示】建立图书治理信息结构体,结构体成员包括图书馆名称、图书编号、单价啊、作者、存在状态、借书人 姓名、性别、学号;存在状态设为整型,可用不同的数字代表借仍状态
3、;借书和仍书手续要留意修改结 构题的成员变量存在状态的值;总体设计欢迎进入地大图书治理系统查阅图书借阅图书治理系统图书归仍退出系统欢迎进入治理系统增加图书删除图书修改图书图书统计同学治理系具体设计1、主函数- 2 - 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 3 页,共 23 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - - 说明 主函数较多、较复杂,已经和主菜单函数合并,主菜单函数里仍包括了各自的二级菜单,并已经开始了对各个函数的调用;为了程序显示的清楚可读,应先清
4、屏之后调用菜单函数; 流程 - 3 - 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 4 页,共 23 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -开 始显 示 一 系 列 功 能 选 项输入 n,判定 n 是N 否是 04. Y 调 用 与 n 相 应 的 模 块2、各功能模块设计(2)查阅模块 说明 输入个员工信息后,浏览、查找、排序时同一个员工的全部信息都要同时显示,所以运用结构体运行;数据信息存放在文件中, 一条记录对应一条同学信息, 便利治理; 流程 - 4
5、 - 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 5 页,共 23 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -查 询 系 统按书名查找按作者查找退出输 入无人借已出借不存在(3)借阅模块 说明 查阅完图书记录后,用户要借阅图书,系统要在操作过程中提示用户输入流程,依据用户所输入的指令,帮忙其完成借阅; 流程 - 5 - 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 6 页,共 23 页 - - - - - - - -
6、- 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -借 阅 图书输 入 卡 号卡号存在 卡号不存在输入书名已出借借阅胜利不存在返 回(4)治理模块- 6 - 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 7 页,共 23 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - - 说明 治理模块最为复杂,治理全部的图书及职工、同学的信息;先进入总体的治理系统,在这个系统中重点的操作是图书的治理,为其中的1 至 4 项(分别是增加图书、删除图书、
7、修改图书资料、书籍统计),同时系统仍连接了职工、同学治理两个系统,为下一步的操作供应了条件;职工治理系统主要有增加图书、删除图书、修改图书资料、书籍统计,同学治理系统主要有申请新卡、删除卡号、借书统计、卡号统计四个模块,用于治理同学登录信息; 流程 - 7 - 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 8 页,共 23 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -欢迎进入治理系统增加图书删除图书修改图书图书统计同学治理系欢迎进入同学治理系统申请新卡删除卡号借书统计
8、卡号统计返回(5)仍书模块 说明 需要依据输入员工的姓名及工号查找相应的记录,找到后增加删除和修改功能;- 8 - 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 9 页,共 23 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -附录图书馆治理系统设计源程序清单 #include #include #include #include #define STACK_INIT_SIZE 10 #define OK 1 #define TRUE 1 #define ERROR 0
9、struct student int carnum; char lendbook10; student1000; struct book int booknum; char bookname20; float bookprice; char bookcreat20; int turefalse; book1000; struct car int carnum; char sex5; char studentname20; int studentclass; car1000; findbook FILE *fp; char bookname10; int i; fp=fopenbook.txt,
10、r; printf 请输入你要查找的书名 :n; scanf%s,bookname; fori=0;fread&booki,sizeofstruct book,1,fp.=0;i+ ifstrcmpbookname,booki.bookname=0 ifbooki.turefalse=1 - 9 - 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 10 页,共 23 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - - printf 书 号书 名作 者n %d %s %s n,
11、booki.booknum,booki.bookname,booki.bookcreat; else printfprintf此书现在无人借阅 n 按任意键返回 n; 这本书已经有人借出 n;fclosefp;return 0; fclosefp; return 0; printf 没有你要查询的书籍 .n; fclosefp; return 0; findbook1 FILE *fp; char bookcreat10; int i; fp=fopenbook.txt,r; printf请输入你要查找的作者名:n; scanf%s,bookcreat; fori=0;fread&booki,
12、sizeofstruct book,1,fp.=0;i+ ifstrcmpbookcreat,booki.bookcreat=0 ifbooki.turefalse=1 书 号书 名作 者n %d %s %s printf n,booki.booknum,booki.bookname,booki.bookcreat; printf 此书现在无人借阅 n 按任意键返回 n; else printf 这本书已经有人借出 .n; fclosefp; return 0; fclosefp; return 0; printf 没有你要查询的书籍 n; fclosefp; return 0; - 10 -
13、 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 11 页,共 23 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -chabook char ch5; do printf 1: 按书名查找 n; printf 2: 按作者查找 n; printf 0: 返回 n; printf 请输入 0 2:n; ch5=getch; switchch5 case 1:findbook;getch;break; case 2:findbook1;getch;break; case 0:
14、break; default:printf 无此操作 .n;getch;break; whilech5.=0; return 0; lendbook FILE *fp,*fp2; int i,n; int carnum; printf 请输入借书人的 :n 卡号 :n; scanf%d,&carnum; fp=fopencar.txt,r; fori=0;fread&cari,sizeofstruct car,1,fp.=0;i+ ifcari.carnum=carnum n=i; fclosefp; printf 书名 :n; scanf%s,studentn.lendbook; fp=fo
15、penbook.txt,r; fori=0;fread&booki,sizeofstruct book,1,fp.=0;i+ ifstrcmpbooki.bookname,studentn.lendbook=0 ifbooki.turefalse=0 printf n;fclosefp;getch;return 0; 对不起,此书有人借出,请借其他书- 11 - 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 12 页,共 23 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - -
16、 - else fclosefp; fp=fopenrecord.txt,a+; studentn.carnum=carnum; fwrite&studentn,sizeofstruct student,1,fp; fclosefp; fp=fopenbook.txt,r; fp2=fopenbookl.txt,w; fori=0;fread&booki,sizeofstruct book,1,fp.=0;i+ ifstrcmpbooki.bookname,studentn.lendbook=0 booki.turefalse=0; fwrite&booki,sizeofstruct book
17、,1,fp2; continue; fwrite&booki,sizeofstruct book,1,fp2; fclosefp; fclosefp2; fp=fopenbook.txt,w; fp2=fopenbookl.txt,r; fori=0;fread&booki,sizeofstruct book,1,fp2.=0;i+ fwrite&booki,sizeofstruct book,1,fp; fclosefp; fclosefp2; fopenbookl.txt,w; fclosefp2; printf借书完毕,按任意键返回.n; getch; return 0; printf不
18、存在这样的书,任意键返回.n; fclosefp; getch; return 0; printf你的卡号不存在,请申请新卡, 按任意键返回 .n; fclosefp; getch; - 12 - 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 13 页,共 23 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -return 0; huanbook FILE *fp,*fp2; int i,n; int carnum; char lendbook10; printftt_
19、欢迎进入仍书界面 _; printfn 请你输入你的 n 卡号:n; scanf%d,&carnum; fp=fopencar.txt,r; fori=0;fread&cari,sizeofstruct car,1,fp.=0;i+ ifcari.carnum=carnum n=i; fclosefp; printf请输入你要仍的书的名字:n; scanf%s,lendbook; fp=fopenrecord.txt,r; fori=0;fread&studenti,sizeofstruct student,1,fp.=0;i+ ifstrcmpstudenti.lendbook,lendbo
20、ok=0 fclosefp; fp=fopenrecord.txt,r; fp2=fopenbookl.txt,w; fori=0;fread&studenti,sizeofstruct student,1,fp.=0;i+ ifstrcmpstudenti.lendbook,lendbook=0 continue; fwrite&studenti,sizeofstruct student,1,fp2; fclosefp; fclosefp2; fp=fopenrecord.txt,w; fp2=fopenbookl.txt,r; fori=0;fread&studenti,sizeofstr
21、uct student,1,fp2.=0;i+ fwrite&studenti,sizeofstruct student,1,fp; - 13 - 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 14 页,共 23 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - - fclosefp; fclosefp2; fopenbookl.txt,w; fclosefp2; fp=fopenbook.txt,r; fp2=fopenbookl.txt,w; fori=0;fread&b
22、ooki,sizeofstruct book,1,fp.=0;i+ ifi=n booki.turefalse=1; fwrite&booki,sizeofstruct book,1,fp2; continue; fwrite&booki,sizeofstruct book,1,fp2; fclosefp; fclosefp2; fp=fopenbook.txt,w; fp2=fopenbookl.txt,r; fori=0;fread&booki,sizeofstruct book,1,fp2.=0;i+ fwrite&booki,sizeofstruct book,1,fp; fclose
23、fp; fclosefp2; fopenbookl.txt,w; fclosefp2; 仍书完毕,按任意键返回.n; printf getch; return 1; printf你没有借这样的书,任意键返回.n; fclosefp; getch; return 0; printf没这样的卡,和治理员联系, 按任意键返回 .n; fclosefp; getch; return 0; lendcount - 14 - 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 15 页,共 23 页 - - - - - - - - - 名师归纳总结 精品学习资料 -
24、 - - - - - - - - - - - - - - FILE *fp; int i,n=0; fp=fopenrecord.txt,r; iffp=fopenrecord.txt,r=0 printf 文件中没有数据 .n; printf 按任意键返回 .n; getch; return0; fori=0;fread&studenti,sizeofstruct student,1,fp.=0;i+ printf卡号借出的书籍 n; printf%d %s n,studenti.carnum,studenti.lendbook; n=n+1; fclosefp; printf 目前共有 %
25、d本书借出 n,n; printf 按任意键 .n; getch; return n; addcar FILE *fp; int i=0; fp=fopencar.txt,a+; printf 卡号:n; scanf%d,&cari.carnum; printf 性别:n; scanf%s,cari.sex; printf 姓名:n; scanf%s,cari.studentname; printf 班级:n; scanf%d,&cari.studentclass; fwrite&cari,sizeofstruct car,1,fp; fclosefp; printf getch; 输入完毕,
26、任意键返回 .n; delcar FILE *fp,*fp2; int i; - 15 - 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 16 页,共 23 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -int carnum; char choice; fp=fopencar.txt,r; fp2=fopenbookl.txt,w; printf 要删除的卡号 不存在就不作改动 :n; scanf%d,&carnum; fori=0;fread&cari,sizeofs
27、truct car,1,fp.=0;i+ ifcari.carnum.=carnum fwrite&cari,sizeofstruct car,1,fp2; fclosefp; fclosefp2; printf 确认删除 .Y/N.n; scanf%s,&choice; ifchoice=y|choice=Y fp=fopencar.txt,w; fp2=fopenbookl.txt,r; fori=0;fread&cari,sizeofstruct car,1,fp2.=0;i+ fwrite&cari,sizeofstruct car,1,fp; fclosefp; fclosefp2;
28、 fp2=fopenbookl.txt,w; fclosefp2; printf 操作超胜利 .n 按任意键返回 .n; getch; return 0; else printf 操作已取消 .n 按任意键返回 .n; getch; return 0; carcount FILE *fp; - 16 - 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 17 页,共 23 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -int i,n=0; fp=fopencar.txt,r
29、; fori=0;fread&cari,sizeofstruct car,1,fp.=0;i+ printf第%d张卡 n,i+1; 姓名班级 n; printf 卡号性别 printfttn; printf %d %6s %10s %3d nn,cari.carnum,cari.sex,cari.studentname,cari.studentclass; n=n+1; fclosefp; printf 目前共有 %d个同学; n,n; printf 按任意键返回 .n; getch; addbook FILE *fp; int i=0; char choice=y; fp=fopenboo
30、k.txt,a+; whilechoice=y|choice=Y printf 书号:n; scanf%d,&booki.booknum; printf 书名:n; scanf%s,booki.bookname; printf 作者:n; scanf%s,booki.bookcreat; printf 单价:n; scanf%f,&booki.bookprice; printf 请你设定书的状态 1 在架/0 不在 :n; scanf%d,&booki.turefalse; fwrite&booki,sizeofstruct book,1,fp; printf 是否要输入下本书 y/nn; s
31、canf%s,&choice; fclosefp; delbook FILE *fp,*fp2; - 17 - 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 18 页,共 23 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -int i; char bookname10,choice; fp=fopenbook.txt,r; fp2=fopenbookl.txt,w; printf 书名:n; scanf%s,bookname; fori=0;fread&booki,si
32、zeofstruct book,1,fp.=0;i+ ifstrcmpbookname,booki.bookname.=0 fwrite&booki,sizeofstruct book,1,fp2; fclosefp; fclosefp2; printf 确认删除 y/n.n; scanf%s,&choice; ifchoice=y|choice=Y fp=fopenbook.txt,w; fp2=fopenbookl.txt,r; fori=0;fread&booki,sizeofstruct book,1,fp2.=0;i+ fwrite&booki,sizeofstruct book,1
33、,fp; fclosefp; fclosefp2; fp2=fopenbookl.txt,w; fclosefp2; printf 按任意键返回 .n; getch; return 0; else printf 按任意键返回 .n; getch; return 0; changebook FILE *fp,*fp2; char bookname10,choice; - 18 - 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 19 页,共 23 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -int i; fp=fopenbook.txt,r; fp2=fopenbookl.txt,w; printf 书名:n; scanf%s,bookname; fori=0;fread&booki,sizeofstruct book,1,fp.=0;i+ ifstrcmpbooki.bookname,bookname=0 printf你所要修改的书的资料如下,请挑选你要修改的内容:n; printf