《c语言程序设计实践》课程报告大学论文.doc
《《c语言程序设计实践》课程报告大学论文.doc》由会员分享,可在线阅读,更多相关《《c语言程序设计实践》课程报告大学论文.doc(24页珍藏版)》请在咨信网上搜索。
课 程 报 告 课 程 名 称: 程序设计实践 专 业 班 级 : 计算机科学与技术1205班 学 生 姓 名 : 雷原康 学 号 : 201216010522 任 课 教 师 : 陈卫东 学 期 :2012-2013学年第二学期 课程报告任务书 题 目 图书信息管理系统 主要 内容 开发一个图书信息管理系统,图书信息包括:图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。使之能提供以下基本功能: (1)图书信息录入功能(图书信息用文件保存)--输入v (2)图书信息浏览功能--输出 (3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式): l ①按书名查询 ②按作者名查询 ③ 按照价钱排序 ④按出版时间排序等等 (4)图书信息的删除与修改 扩展功能:可以按照自己的程度进行扩展。比如(1)简单的权限处理 (2)报表打印功能(3)甚至根据自己情况,可以加上学生信息,并扩充为图书借阅系统。(4)模糊查询 (5)综合查询 (6)统计功能 比如统计处某一类别的图书信息 或 筛选出小于指定数量库存的图书信息等等,总之,可以根据自己需求进行分析功能。 任务 要求 一、提交材料应包括:(1)系统源代码 (2)课程报告 二、整个设计过程具体要求 (1)需求分析 要求学生对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系; (2)设计过程 要求学生进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等) (3)实现过程 要求学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试; (4)总结阶段 按照要求完成系统设计和实现报告,并进行总结、答辩。 成绩 评定 报告撰写情况(30分) 系统完成情况(30分) 答辩情况(40分) 总分 内容 20分 规范程度 5分 程序测试 5分 基本功能20分 扩展功能10分 自述情况10分 答辩情况 30分 成绩评定教师: 24 1. 需求分析 经过大一上学期的理论学习,在基础实验的基础上,本学期我们继续开设了C语言程序设计实践课。课程要求我们对已经学习的基础实验进行整合与衔接处理,并最终形成一个系统性质的规模较大的程序。 本次课程设计要求我们达到能独立完成一个图书管理系统,完成后要求实现的功能有对图书信息的录入、删除、修改,浏览(即输出), 按某种方式查询(要求至少一种查询方式),按某种方式排序(要求至少一种排序方式)。当然,我们可以根据自己的能力对系统进行完善性的拓展,例如自己加入简单的权限处理,统计功能,模糊查询等,甚至可以拓展为图书借阅系统。 通过整个程序的开发过程,最终使我们掌握利用计算机解决实际问题的基本方法,熟悉C语言开发的全过程,提高综合应用C语言的能力、编程和调试能力,为学习计算机后续课程打好专业基础。 2. 概要设计 1. 系统采用的是结构数组数据系统,用于实现图书信息的存放,修改,排序等功能。 用二进制文件保存已写入的信息。 2. 模块划分: ① void AddNewbook图书信息录入系统 ② void Rprint图书信息浏览系统 ③ void Querybook图书信息查询系统:void numnode1-书籍编号查找 .2-书名void namenode查找.3-void writer作者查找.4-void press出版社查找.5-void fuzzy模糊查找. ④ void paixu 图书信息排序系统:1-价格排序2-时间排序 ⑤ Voide xiugai图书信息修改系统 ⑥ Void shanchu图书信息删除系统 7 图书信息统计系统:1-void sorttongji书籍类别统计.2-void kuno库存低于标准统计 3. 程序框架 ① 进行录入图书信息 ② 录入后进行浏览系统 ③ 然后根据需要分别进行查询,排序,修改,删除,统计功能 3. 详细设计: 1. 定义图书结构: typedef struct book{ long num;//书的序号 char name[MAX];//书名 char time[MAX];//出版时间 char writer[MAX]; double price; char press[MAX];//出版社 char sort[MAX]; int kucun;//库存量 }book; 2. 图书录入系统: void AddNewbook(FILE *fp){//*添加书籍 system("cls"); int a; if((fp=fopen("图书信息.txt","a+"))==NULL){ printf("不能打开图书信息管理系统!\n"); exit(0); } book newbook; printf("(-1代表结束)"); while(a!=-1){ printf("输入书籍编号:"); scanf("%ld",&newbook.num); printf("输入书名:"); scanf("%s",newbook.name); printf("输入出版时间:"); scanf("%s",newbook.time); printf("输入作者:"); scanf("%s",newbook.writer); printf("输入价格:"); scanf("%lf",&newbook.price); printf("输入出版社:"); scanf("%s",newbook.press); printf("输入书籍种类:"); scanf("%s",newbook.sort); printf("输入库存量:"); scanf("%d",&newbook.kucun); fwrite(&newbook,size,1,fp); scanf("%d",&a);} fclose(fp); } 3. 图书浏览系统 void Rprint(FILE *fp){//图书信息浏览 system("cls"); if((fp=fopen("图书信息.txt","r+"))==NULL){ printf("不能打开图书信息管理系统!\n"); exit(0);} book log; printf("书籍编号 书名 出版时间 作者 价格 出版社 种类 库存量 \n"); while(!feof(fp)){ fread(&log,sizeof(book),1,fp); printf("%8ld %s %6s %10s %.2lf %s %s %d \n", log.num,log.name,log.time,log.writer,log.price,log.press ,log.sort,log.kucun); } 4. 图书查询系统 一.按编号查找 void numnode(FILE *fp){ if((fp=fopen("图书信息.txt","r"))==NULL){ printf("不能打开图书信息管理系统!\n"); exit(0); } long num; int i=0; book chaxun; printf("Enter num:"); scanf("%ld",&num); while(!feof(fp)){ fread(&chaxun,size,1,fp); if(num==chaxun.num){ printf("%ld\t%s\t%s\t%s\t", chaxun.num,chaxun.name,chaxun.time,chaxun.writer); printf("%.2lf\t%s\t%d\n", chaxun.price,chaxun.sort,chaxun.kucun); i=1; } } if(i!=1) printf("对不起,没有你想要查找的书籍。\n"); fclose(fp); } 二.按书名查找 void namenode(FILE *fp){ if((fp=fopen("图书信息.txt","r"))==NULL){ printf("不能打开图书信息管理系统!\n"); exit(0); } int i=0; char name[MAX]; book chaxun; printf("Enter name:"); scanf("%s",name); while(!feof(fp)){ fread(&chaxun,size,1,fp); if(strcmp(name,chaxun.name)==0){ printf("%ld\t%s\t%s\t%s\t%.2lf\t%s\t%d\n", chaxun.num,chaxun.name,chaxun.time,chaxun.writer, chaxun.price,chaxun.sort,chaxun.kucun); i=1; } } if(i!=1) printf("对不起,没有你想要查找的书籍。\n"); fclose(fp); } 三.按作者名查找 void writernode(FILE *fp){ if((fp=fopen("图书信息.txt","r"))==NULL){ printf("不能打开图书信息管理系统!\n"); exit(0); } int i=0; char writer[MAX]; book chaxun; printf("Enter writer:"); scanf("%s",writer); while(!feof(fp)){ fread(&chaxun,size,1,fp); if(strcmp(writer,chaxun.writer)==0){ printf("%ld\t%s\t%s\t%s\t%.2lf\t%s\t%d\n", chaxun.num,chaxun.name,chaxun.time,chaxun.writer, chaxun.price,chaxun.sort,chaxun.kucun); i=1; } } if(i!=1) printf("对不起,没有你想要查找的书籍。\n"); fclose(fp); } 四.按出版社查找 void pressnode(FILE *fp){ if((fp=fopen("图书信息.txt","r"))==NULL){ printf("不能打开图书信息管理系统!\n"); exit(0); } int i=0; char press[MAX]; book chaxun; printf("Enter press:"); scanf("%s",press); while(!feof(fp)){ fread(&chaxun,size,1,fp); if(strcmp(press,chaxun.press)==0){ printf("%ld\t%s\t%s\t%s\t%.2lf\t%s\t%d\n", chaxun.num,chaxun.name,chaxun.time,chaxun.writer, chaxun.price,chaxun.sort,chaxun.kucun); i=1; } } if(i!=1) printf("对不起,没有你想要查找的书籍。\n"); fclose(fp); 五.模糊查询 void fuzzy(FILE *fp){ if((fp=fopen("图书信息.txt","r"))==NULL){ printf("不能打开图书信息管理系统!\n"); exit(0); } int k=0; char zifu[MAX]; book chaxun; printf("输入关键字:"); getchar(); int i,j; for(i=0;(zifu[i]=getchar())!='\n';i++); zifu[i]='\0'; while(!feof(fp)){ fread(&chaxun,size,1,fp); for(i=0;zifu[i]!='\0';i++) for(j=0;chaxun.writer[j]!='\0';j++) if(zifu[i]==chaxun.writer[j]){ printf("%ld\t%s\t%s\t%s\t%.2lf\t%s\t%d\n", chaxun.num,chaxun.name,chaxun.time,chaxun.writer, chaxun.price,chaxun.sort,chaxun.kucun); k=1;} } if(k!=1) printf("对不起,没有你想要查找的书籍。\n"); fclose(fp);} 4. 排序功能 一 按价钱排序 void price(FILE *fp){ if((fp=fopen("图书信息.txt","r"))==NULL){ printf("不能打开图书信息管理系统!\n"); exit(0); } int n; int i=1,j; n=tongji(fp); book t; book paixu[MAX]; while(!feof(fp)){ fread(&paixu[i],size,1,fp); i++;} for(i=1;i<n;i++) for(j=1;j<n-i;j++) if(paixu[j].price>paixu[j+1].price){ t=paixu[j]; paixu[j]=paixu[j+1]; paixu[j+1]=t;} for(i=1;i<n;i++) printf("%ld\t%s\t%s\t%s\t%.2lf\t%s\t%d\n", paixu[i].num,paixu[i].name,paixu[i].time,paixu[i].writer, paixu[i].price,paixu[i].sort,paixu[i].kucun); fclose(fp); } 二.按时间排序 void time(FILE *fp){ if((fp=fopen("图书信息.txt","r"))==NULL){ printf("不能打开图书信息管理系统!\n"); exit(0); } int n; int i=1,j; n=tongji(fp); book paixu[MAX],t; while(!feof(fp)){ fread(&paixu[i],size,1,fp); i++;} for(i=1;i<=n;i++) for(j=1;j<=n-i;j++) if(strcmp(paixu[j].time,paixu[j+1].time)>0){ t=paixu[j]; paixu[j]=paixu[j+1]; paixu[j+1]=t;} for(i=1;i<n;i++) printf("%ld\t%s\t%s\t%s\t%.2lf\t%s\t%d\n", paixu[i].num,paixu[i].name,paixu[i].time, paixu[i].writer,paixu[i].price,paixu[i].sort,paixu[i].kucun); fclose(fp); } 三.排序选择 void paixu(FILE *fp){ int choice=-1; printf("1-价格排序\n2-时间排序\n"); scanf("%d",&choice); switch(choice){ case 1:price(fp);break; case 2:time(fp);break; default:printf("error\n");break;}} 5. 修改功能 void bookxiugai(FILE *fp){ if((fp=fopen("图书信息.txt","r"))==NULL){ printf("不能打开图书信息管理系统!\n"); exit(0); } FILE *t; int n=0; int i=0; if((t=fopen("图书信息.txt","r+"))==NULL){ printf("不能打开图书信息管理系统!\n"); exit(0); } long num; int choice; book xiugai; book duqu; printf("输入要修改书的编号:"); scanf("%ld",&num); while(!feof(t)){ i++; fread(&duqu,size,1,t); if(num==duqu.num){ printf("请输入修改后的书籍信息:\n"); printf("请输入书籍编号:"); scanf("%d",&xiugai.num); printf("请输入书名:"); scanf("%s",xiugai.name); printf("请输入作者:"); scanf("%s",xiugai.writer); printf("请输入出版时间:"); scanf("%s",xiugai.time); printf("请输入价格:"); scanf("%lf",&xiugai.price); printf("请输入出版社:"); scanf("%s",xiugai.press); printf("请输入书籍种类:"); scanf("%s",xiugai.sort); printf("请输入库存量:"); scanf("%d",&xiugai.kucun); n=i; }} fseek(t,(n-1)*size,0); printf("1-确认修改。\n其他数字-取消修改。"); scanf("%d",&choice); if(choice==1){ fwrite(&xiugai,size,1,t); printf("修改成功!\n");} 6. 删除功能 void bookshanchu(FILE *fp){ FILE *t; if((fp=fopen("图书信息.txt","r"))==NULL){ printf("不能打开图书信息管理系统!\n"); exit(0); } int i=1,n; long num; n=tongji(fp); book duqu[MAX]; printf("请输入书籍编号:"); scanf("%ld",&num); while(!feof(fp)){ fread(&duqu[i],size,1,fp); i++;} if((t=fopen("图书信息.txt","w"))==NULL){ printf("不能打开图书信息管理系统!\n"); exit(0); } for(i=1;i<n;i++){ if(num!=duqu[i].num){ fwrite(&duqu[i],size,1,t); } } fclose(t); fclose(fp);} 7.。统计功能 一.按类别统计 void sorttongji(FILE *fp){ if((fp=fopen("图书信息.txt","r"))==NULL){ printf("不能打开图书信息管理系统!\n"); exit(0); } int i=0; char sort[MAX]; book sor; printf("请输入书籍类别:"); scanf("%s",sort); while(!feof(fp)){ fread(&sor,size,1,fp); if(strcmp(sort,sor.sort)==0) i++; } printf("本类别的书籍种类有%d\n",i); fclose(fp); } 二.按库存标准统计 void kuno(FILE *fp){ if((fp=fopen("图书信息.txt","r"))==NULL){ printf("不能打开图书信息管理系统!\n"); exit(0); } int n; book kcun; printf("请输入标准库存量:"); scanf("%d",&n); while(!feof(fp)){ fread(&kcun,size,1,fp); if(n>kcun.kucun) printf("%ld\t%s\t%s\t%s\t%.2lf\t%s\t%d\n", kcun.num,kcun.name,kcun.time, kcun.writer,kcun.price,kcun.sort,kcun.kucun); } fclose(fp); } 三.统计选择函数 void tongjixinxi(FILE *fp){ if((fp=fopen("图书信息.txt","r"))==NULL){ printf("不能打开图书信息管理系统!\n"); exit(0); } int choice; printf("1-书籍类别统计.\n2-库存低于标准统计.\n"); scanf("%d",&choice); switch(choice){ case 1:sorttongji(fp);break; case 2:kuno(fp);break; default:printf("error\n");break; } } 4.调试分析: 问题一 界面不美观,进入一次系统只能进行一项操作的问题 解决方法 通过将主菜单与清屏函数(system(“cls”))一起,在每次进行完一次具体操作后都能出现printf("Enter your choice:\n"); 问题二: 浏览图书信息时编号等文字与下面的图书信息不对应 解决办法:文字与文字间的间隔与字符字符间的间隔一致 问题三:一些小错误比如单词前后拼写错误 解决办法:反复调试修改 问题四:在查询中由于回车符释放过多使信息录入异常 解决办法:去掉多余的getchar() 问题五:输入时无法结束输入的问题 解决办法:由于在输入时时先输入图书的编号,所以在输入时除了输入第一本图书的信息, 即在输入第一本图书之后在输入时先输入图书的编号,加上一个判断循环while(num!=-1)才继续输入完这本图书的其他信息,即-1可以作为输入结束标志. 5. 测试结果 一界面 2.录入图书 3.浏览图书 4按编号查询图书 5按书名查询 6. 按出版社查找 7.按价格排序 8按出版时间排序 9按书籍类别统计 10库存低于标准统计 11. 图书信息修改 修改后浏览图书 12图书删除,删除3后的浏览 6. 课程心得总结 经历了几个星期的课程设计,从设计前期的不知如何下手到开始设计时的各种错误的困扰再到一个个的攻破各个问题,最后到对程序的进一步完善与课程报告的撰写。这一段时间我们由被程序困扰到几乎崩溃到最后成就感的油然而生;从一整天的坐在电脑屏幕面前到现在的带着喜悦一遍一遍运行着程序;一遍遍的互相探讨解决大家遇到的问题到越来越发现编程的有意思,我到现在真的感觉认真自己做完这样一个系统收获颇大: 1. 对结构化程序设计与函数的嵌套调用有了更清晰具体的认识; 2. 引入了文件知识可以对电脑硬盘上的数据操作,改变了对C语言的狭义认识,认识 到C语言实际上还可以实现更复杂丰富的功能来利用开发的软件来进一步实现对现实中的问题的解决; 3.学习到C语言的学习一定不不能忽视一个很小很小的细节,因为完全会导致不同的结果 对如何用C语言来完成一个较大的系统的整体思路有清晰的认识- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c语言程序设计实践 语言程序设计 实践 课程 报告 大学 论文
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文