C语言毕业课程设计报告图书信息管理系统2.docx
- 文档编号:25662352
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:21
- 大小:92.91KB
C语言毕业课程设计报告图书信息管理系统2.docx
《C语言毕业课程设计报告图书信息管理系统2.docx》由会员分享,可在线阅读,更多相关《C语言毕业课程设计报告图书信息管理系统2.docx(21页珍藏版)》请在冰豆网上搜索。
C语言毕业课程设计报告图书信息管理系统2
(此文档为word格式,下载后您可任意编辑修改!
)
课程设计报告
课程名称C语言课程设计
课题名称图书信息管理系统
专业土木工程
班级1083班
学号
姓名杨赟
指导教师陈世清扬子华罗敬
2011年8月29日
湖南工程学院
课程设计任务书
课程名称C课程设计
课题图书信息管理系统
专业班级土木工程1083班
学生姓名杨赟
学号
指导老师陈世清郭芳
审批
任务书下达日期2011年8月29日
任务完成日期2011年9月4日
C语言程序设计
编程实践是学习C语言程序设计的一重要环节,上机实习和课程设计是提高同学们程序设计能力的有效途径,能够使同学们初步掌握程序设计的基本方法和调试技能。
学校安排上机时间有限,老师也只能教给我们一些方法,而我们自己需要投入很大的时间和精力来锻炼。
1、题目要求
设计“图书信息管理系统”
要求:
图书信息包括:
登录号,书名,作者名,分类号,出版单位,出版时间,价格等。
使之提供以下功能:
(1)系统以菜单方式工作。
(2)图书信息录入功能。
(图书信息用文件保存)。
(3)图书信息浏览功能。
(4)图书信息查询功能。
(5)图书信息的删除和修改。
2、分析:
根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。
3、总体设计:
根据题目要求,可以将系统分为六个模块:
(1)管理员登录系统模块。
(2)菜单选择模块。
(3)图书信息录入功能模块。
(4)图书信息浏览功能。
(5)图书信息查询功能。
(6)图书信息的删除和修改。
4、详细设计:
头函数名:
#include printf("\t\t\t图书信息管理系统\n");这个页面 printf("\t\t\t*****************************\n\n\n"); printf("------\n"); printf("\t<按任意键进入>\n\t"); input=getchar(); } (1)管理员登陆进入功能菜单页面 FILE*fp; structmanagepswd; if((fp=fopen("password.txt","r"))==NULL) { printf("\n\n\n\tCannotopenfile! \n\t"); } else { do { printf("\n\n\t请输入管理员帐号: "); scanf("%s",name); printf("\n\n\t请输入管理员密码: "); scanf("%s",password); fp=fopen("password.txt","r"); fread(&pswd,sizeof(structmanage),1,fp); fclose(fp); w=strcmp(pswd.manage_name,name); k=strcmp(pswd.password,password); adm_servelist(); } while(w! =0||k! =0); adm_servelist(); } } (3)来到功能菜单页面 voidadm_servelist() { voidbook_add(); voidbook_view(); voidchange(); voiddel(); voidbook_search(); voidlogin(); voidpwchange(); intin;注释: 菜单列出的服务种类 charinput;从1,2,3,4,5,6 do所对应的功能进行选择 { printf("\n\n\n\t--欢迎使用信息管理系统--"); printf("\n\n\t1.图书信息录入\n"); printf("\t2.图书信息浏览\n"); printf("\t3.图书信息查询\n"); printf("\t4.图书信息删除\n"); printf("\t5.图书信息修改\n"); printf("\t6.退出管理模式\n"); printf("\n\t请选择服务种类: "); scanf("%d",&in); if(in! =1&&in! =2&&in! =3&&in! =4&&in! =5&&in! =6) { printf("\n\t没有这项服务~\n"); printf("\t按任意键重新选择"); input=getchar(); } } while(in! =1&&in! =2&&in! =3&&in! =4&&in! =5&&in! =6); switch(in) { case1: book_add();break;注释: 选择自己所需要 case2: book_view();break;后摁下数字键则 case3: book_search();break;则进入此功能页面 case4: del();break; case5: change();break; case6: login();break; } } (2)图书信息录入功能模块 voidbook_add() { voidadm_servelist(); voidbook_add(); inti=0,j; FILE*fp; charinput;注释: 输入的图书信息 structbookinfbooks;是通过文件进行 structbookinfbook_taxis[30];保存的 printf("\n\n\n\t---请输入图书信息---\n\n"); printf("\t登录号: "); scanf("%d",&books.num); printf("\n\t书名: "); scanf("%s",books.bname); printf("\n\t作者名: "); scanf("%s",books.wname); printf("\n\t分类号: "); scanf("%s",books.clanum); printf("\n\t出版单位: "); scanf("%s",books.pubcom); printf("\n\t出版时间: "); scanf("%s",books.pubtime); printf("\n\t价格: "); scanf("%f",&books.price); if((fp=fopen("book.txt","r"))! =NULL) { do { fread(&book_taxis[i],sizeof(structbookinf),1,fp); i=i+1; } while(! feof(fp)); fclose(fp); for(j=0;j<=i;j++) if(books.num==book_taxis[j].num) { printf("\n\n\n\t对不起,这个编号已经使用过了~\n"); printf("\t按任意键返回管理菜单~"); input=getchar(); adm_servelist(); break; } } if((fp=fopen("book.txt","r"))==NULL) { fp=fopen("book.txt","w"); } else { fclose(fp); fp=fopen("book.txt","a"); } fwrite(&books,sizeof(structbookinf),1,fp); fclose(fp); printf("\n\n\n\t信息输入完毕~按任意键继续\n"); input=getchar(); adm_servelist(); } (3)图书信息浏览功能模块 voidbook_view() { voidadm_servelist(); voidbook_view(); intinp,i=0,n=0; FILE*fp; charinput; structbookinfbookview[20]; if((fp=fopen("book.txt","r"))==NULL) { printf("\n\n\n\t数据尚未初始化~~\n\n\t请在管理菜单中增加图书信息~~~\n"); printf("\n\t<按任意键返回管理菜单>\n\t"); input=getchar(); adm_servelist(); } else { do { fread(&bookview[i],sizeof(structbookinf),1,fp); i=i+1; } while(! feof(fp)); fclose(fp); do { printf("\n\t共有%d条记录",i-1); printf("\n\n\t登录号: %d\n",bookview[n].num); 第6页 printf("\n\t书名: %s\n",bookview[n].bname); printf("\n\t作者名: %s\n",bookview[n].wname); printf("\n\t分类号: %s\n",bookview[n].clanum); printf("\n\t出版单位: %s\n",bookview[n].pubcom); printf("\n\t出版时间: %s\n",bookview[n].pubtime); printf("\n\t价格: %f\n",bookview[n].price); printf("\n\n\t1.上一页\t2.下一页\t3.回目录\n"); printf("\n\t请选择: "); scanf("%d",&inp); switch(inp) { case1: { if(n==0) { printf("\n\t已到达首页\n\t按任意键重新选择"); input=getchar(); } elsen=n-1;break; } case2: { if(n==i-2) { printf("\n\t已到达最末页\n\t按任意键重新选择"); input=getchar(); } elsen=n+1;break; } case3: { adm_servelist(); break; } default: { printf("\n\t没有这项服务\n\t按任意键重新选择"); input=getchar(); } } } while(inp! =3); } } (4)图书信息修改与删除功能模块 修改: voidchange(intx) { intinp,i=0,j; voidbook_search(); FILE*fp,*fp1; charinput; structbookinfbooks,book_taxis[20]; do { printf("\n\n\n\t注意: 您确定要修改该记录吗? \n"); printf("\n\t1.是\t2.否\n"); printf("\n\t请输入: "); scanf("%d",&inp); if(inp! =1&&inp! =2) { printf("\n\t对不起~没有这项服务~\n"); printf("\t按任意键重新选择\n\t"); input=getchar(); } } while(inp! =1&&inp! =2); if(inp==2) book_search(); if(inp==1) { printf("\n\n\n\t---请输入图书信息---\n\n"); printf("\t登录号: "); scanf("%d",&books.num); printf("\n\t书名: "); scanf("%s",books.bname); printf("\n\t作者名: "); scanf("%s",books.wname); printf("\n\t分类号: "); scanf("%s",books.clanum); printf("\n\t出版单位: "); scanf("%s",books.pubcom); printf("\n\t出版时间: "); scanf("%s",books.pubtime); printf("\n\t价格: "); scanf("%f",&books.price); if((fp1=fopen("book.txt","r"))! =NULL) { do { fread(&book_taxis[i],sizeof(structbookinf),1,fp1); i=i+1; } while(! feof(fp1)); fclose(fp1); for(j=0;j if(books.num==book_taxis[j].num) { printf("\n\n\n\t对不起,这个编号已经使用过了~\n"); printf("\t按任意键返回管理菜单~"); printf("0"); input=getchar(); book_search(); break; } for(j=x+1;j if(books.num==book_taxis[j].num) { printf("\n\n\n\t对不起,这个编号已经使用过了~\n"); printf("1"); printf("\t按任意键返回管理菜单~"); input=getchar(); book_search(); break; } } book_taxis[x]=books; fp=fopen("book.txt","w"); for(j=0;j fwrite(&book_taxis[j],sizeof(structbookinf),1,fp); fclose(fp); printf("\n\n\t信息修改完成! 按任意键返回"); input=getchar(); book_search(); } } S删除: voiddel(inty) { charinput; FILE*fp; intinp,i=0,j; structbookinfbook_taxis[20]; voidbook_search(); voidadm_servelist(); do { printf("\n\n\n\t注意: 您确定要删除该记录吗? \n"); printf("\n\t1.是\t2.否\n"); printf("\n\t请输入: "); scanf("%d",&inp); if(inp! =1&&inp! =2) { printf("\n\t对不起~没有这项服务~\n"); printf("\t按任意键重新选择\n\t"); input=getchar(); } } while(inp! =1&&inp! =2); if(inp==2) book_search(); if(inp==1) { if((fp=fopen("book.txt","r"))! =NULL) { do { fread(&book_taxis[i],sizeof(structbookinf),1,fp); i=i+1; } while(! feof(fp)); fclose(fp); } if(i>2) { fp=fopen("book.txt","w"); 第10页 for(j=0;j fwrite(&book_taxis[j],sizeof(structbookinf),1,fp); fclose(fp); fp=fopen("book.txt","a"); for(j=y+1;j fwrite(&book_taxis[j],sizeof(structbookinf),1,fp); fclose(fp); } else { remove("book.txt"); } printf("\n\n\t记录已删除! \n\n\t按任意键返回\n\t"); input=getchar(); adm_servelist(); } } (5)图书信息查询功能模块 voidbook_search() { voidadm_servelist(); voidid_search(); voidwr_search(); voidbn_search(); charinput; FILE*fp; intinp; if((fp=fopen("book.txt","r"))==NULL) { printf("\n\n\n\t数据尚未初始化~~\n\n\t请在管理菜单中增加图书信息~~~\n"); printf("\n\t<按任意键返回管理菜单>\n\t"); input=getchar(); adm_servelist(); } else { do { printf("\n\n\n\t1.按图书登录号查询\n"); printf("\n\t2.按图书作者查询\n"); printf("\n\t3.按图书名查询\n"); printf("\n\t4.回到主菜单\n"); printf("\n\n\t请选择查询类别: "); scanf("%d",&inp); if(inp! =1&&inp! =2&&inp! =3&&inp! =4) { printf("\n\n\t没有这项服务~\n\t按任意键重新选择~"); input=getchar(); } } while(inp! =1&&inp! =2&&inp! =3&&inp! =4); fclose(fp); switch(inp) { case1: id_search();break; case2: wr_search();break; case3: bn_search();break; case4: adm_servelist();break; } } } 5运行与测试报告: 三后记课程设计过程中遇到的问题以及解决方法,课程设计的体会。 这次课程设计让我掌握了许多的有用知识。 首先通过不断地学习和锻炼更加熟练地掌握应用软件MicrosoftVisualC++6.0了。 设计正确及合适的程序对于我们初学者来说是很大的难题,出现一丁点儿错误就得非很大的努力去修改,正式者一步步一点点的努力让我对C语言游乐更深的认识。 同时我掌握了解决问题的方法,这无论是对以后的学习、生活都有无比重要的价值。 在设计中,每个同学都会遇到一些困难,或多或少,这些困难常常让我心情烦躁,比如不能清晰的建立设计模块,不会修改出现的错误等等,然后我向同学寻求帮助,向他们学习,最终通过自己努力建立了模块。 不可避免地程序中肯定依然存在者某些问题,我希望在以后的学习和应用中不断提高自己的能力,攻克遇到的困难。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 毕业 课程设计 报告 图书 信息管理 系统