已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计学院: 工程学院班级序号: 05507124学号: 20071003303姓名: 华进指导老师: 刘文中前言我们学习C语言课程设计的主要目的是为了了解和熟悉C语言的编程。学习C语言要经过一个“理论实践在理论在实践”的过程。而学习C语言课程设计就是要我们进行实践,从中发现问题,解决问题,提高我们运用C语言的能力。是我们能够运用C语言解决一些问题。通过不断的编程,熟能生巧,是我们的理论学习也有了实践基础,学习理论知识就较为容易一些,然后再通过实践不断的提高,如此良性循环就能是我们的C语言编程能力更上一成楼。正文一题目原文杂志订阅管理软件要求使用计算机对一种杂志的订阅进行管理,该杂志拥有的最多用户不超过10人,每个订户信息包括:姓名,性别,地址,电话号码,杂志单价,订阅数,订阅期限(年月)。现要求用菜单选择并完成下述功能。(1)增加新订户,即将订户的全部信息输进到文件中。(2)根据当天的日期对订户文件进行查询,删除以到期的订户记录。(3)统计本期杂志订户数并打印运算结果。二题目的分析本题主要是要求我编一个程序来管理订阅,包括增加和删除用户记录,统计运算结果。增加用户就是在原有的文件中写入一个新的用户信息,但有一个前提就是用户数不能超过10人。删除以到期的用户,就是从原有的文件中去掉一个用户信息,这里需要把日期与当天的日期进行比较,而统计结果就是把文件中的用户进行统计,并输出。三整体设计和板块划分本程序总思路本程序有一个主函数和三个被调函数,三个被调函数分别解决增加新订户,删除订户记录,统计订户信息打印运算结果三个问题。板块划分:主函数被调函数1增加新订户模块被调函数2删除订户记录模块被调函数3统计订户信息并打印结果模块1. 主要的结构体为magzine,他包括用户的基本信息:姓名,性别,地址,电话号码,单价,订阅数和期限。全局变量为结构体变量mag。主函数用的是switch语句,3个结果分别对应3个函数,便于操作。2. 被调函数1,解决增加新用户的问题。先打开文件,要判断用户数是否超过10,然后将新的用户信息写入文件中,这里用的是dowhile语句对文价进行读和写,读文件需要计算出订户数,并判断。写即是写入新订户。3. 被调函数2,解决删除订户记录的问题。进行文件的读出操作,并输入当天的日期,用strcmp语句与定户信息中的期限进行比较,如果订户信息中的期限与当日的期限相同,那么在写文件时,该订户的记录就不用写入了,反之,就应当写入。这样变完成了删除操作了。4. 被调函数3,统计用户信息并打印运算结果。这里主要是进行文件的读和写,运用if语句完成,统计结果即是根据单价和数量算出总价格并把所有的价格求和即可。然后只需输出用户的姓名,订阅数,单价和金额 流程图 开始显示一系列功能选择输入n,判断m 是否是0到3?根据n值调用各功能模块函数结束N 开始1.增订新用户模块struct magazine mag;int n=0;定义结构体全局变量,打开文件void insert(struct magazine mag)阅读资料,判断是否是超过10人FILE *fp;char ch;if(fp=fopen(E:magazine,w)=NULL)NY输入新用户信息printf(此文件不存在);exit(0);结束doif(n10)printf(请输入姓名:);gets(); printf(请输入性别:);gets(mag.sex); printf(请输入地址:);gets(mag.address); printf(请输入电话号码:);gets(mag.tel); printf(请输入订阅期限:);gets(mag.dataline); printf(请输入杂志单价:);scanf(%f,&mag.price); printf(请输入订阅数:);scanf(%d,&mag.mount); fwrite(&mag,sizeof(struct magazine),1,fp); n+;else printf(用户已满);printf(是否还有新订户?);scanf(%c,&ch);system(cls);while(ch=y|ch=Y);fclose(fp);开始2. 删除过期用户模块void del()输入当天日期struct magazine mag;FILE *fp,*fp1;char datatime8;阅读信息int m;Yif(fp=fopen(E:magazine,r)=NULL)判断是否过期printf(此文件不存在);Nexit(0);输入用户信息printf(请输入当天日期:);gets(datatime);while(fread(&mag,sizeof(struct magazine),1,fp)=1)结束m=strcmp(datatime,mag.dataline);if(m1) if(fp1=fopen(E:magazine1,a)=NULL)/*将没有过期的用户写入新的文件中*/ printf(此文件不存在); exit(0); fwrite(&mag,sizeof(struct magazine),1,fp1);fclose(fp1);else n-;fclose(fp);3. 统计本期杂志订户信息模块开始void total()struct magazine mag;输入用户信息FILE *fp;float totalprice;int totalmount=0;sum=0,i=0,float price1;float sum=0.0; if(fp=fopen(E:magazine1,r)=NULL)判断inprintf(此文件不存在);Yexit(0);Nsum+=totalprice,i+printf(订户名t订阅数t单价t金额n);while(fread(&mag,sizeof(struct magazine),1,fp)=1)输入sumtotalmount+=mag.mount;price1=mag.price;结束totalprice=mag.mount*mag.price;sum+=totalprice;printf(%st%dt%3.2ft%3.2fn,,mag.mount,mag.price,totalprice);printf(合计t%dt%3.2ft%3.2fn,totalmount,price1,sum);fclose(fp);运行结果:1. 增加新订户2. 擅长到期用户3. 统计订户数用户姓名 订阅数 单价 金额 华进 3 5.03 15.09宋选 2 5.03 10.06李成龙 5 5.03 25.15合计 10 5.03 50.30运行与测试报告下面是个模块的的界面(一)主菜单1. 增加新订户2. 删除到期用户3. 统计订户数(二)增加新订户模块1.增加新订户2.删除到期用户3.统计订户数1请输入姓名:华进 /*后面继续输入用户其他信息*/(三)删除到期用户信息(三)删除到期用户1增加新订户2.删除到期用户3.统计订户数2请输入当天日期:20090101是否继续其他操作?(四)统计订户信息1. 增加新定户2. 删除到期用户3. 统计订户数3订户名 订户数 单价 金额华进 3 5.03 15.09宋选 2 5.03 10.06李成龙 5 5.03 25.15合计 10 5.03 50.30是否继续其他操作? 后记课程设计过程中遇到的问题以及解决方法刚开始那到这个题目的时候,感到一片茫然,不知道如何下手。前面的C语言实习似乎还没让我找到感觉。结果就产生了一些错误的念头,便从网上搜索出来一些相关的程序,结果运行时出现了很多错误,漏洞百出。后来认识到这样做不对,不仅投机取巧,还对我的程序设计能力没有一点提高。但是还给了我许多提示。让我有了一定的思路了。在设计程序的过程中,用到被调函数,我经常将整体变量和局部变量混淆,以致在运行时无法满足要求。于是看前面的温故知新逐渐分清了一些概念才将这个问题解决。还有在写完程序后,出现了100多个错误,当时我看着就不想改了,后来才发现数字只是表面,通过不断的修改,错误变少的很快。课程设计的体会学习和练习C程序的设计是一个漫长的过程,这几天的学习只是让我们接触到了C语言程序设计,只是肤浅的了解了它的一些基本操作,我们学习C语言需要不断的练习积累才能使我们的水平提高,虽然学习C语言有时很枯燥,我们需要认真的对待它,虽然编写一个程序需要很长的时间,因此我们需要耐心,最重要的是,我们需要独立的思考和编写程序。这样才能提高我们的C语言设计的能力,更好的运用它解决一些问题。附录源程序:#include #include #include #include struct magazinechar name20;char sex4;char address30;char tel11;float price;int mount;char dataline8;struct magazine mag;int n=0;/*用户计数器*/void insert(struct magazine mag)/*增订新用户*/FILE *fp;char ch;if(fp=fopen(E:magazine,w)=NULL)printf(此文件不存在);exit(0);doif(n10)printf(请输入姓名:);gets(); printf(请输入性别:);gets(mag.sex); printf(请输入地址:);gets(mag.address); printf(请输入电话号码:);gets(mag.tel); printf(请输入订阅期限:);gets(mag.dataline); printf(请输入杂志单价:);scanf(%f,&mag.price); printf(请输入订阅数:);scanf(%d,&mag.mount); fwrite(&mag,sizeof(struct magazine),1,fp); n+;else printf(用户已满);printf(是否还有新订户?);scanf(%c,&ch);system(cls);while(ch=y|ch=Y);fclose(fp);void del()/*删除过期用户*/struct magazine mag;FILE *fp,*fp1;char datatime8;int m;if(fp=fopen(E:magazine,r)=NULL)printf(此文件不存在);exit(0);printf(请输入当天日期:);gets(datatime);while(fread(&mag,sizeof(struct magazine),1,fp)=1)m=strcmp(datatime,mag.dataline);if(m1) if(fp1=fopen(E:magazine1,a)=NULL)/*将没有过期的用户写入新的文件中*/ printf(此文件不存在); exit(0); fwrite(&mag,sizeof(struct magazine),1,fp1);fclose(fp1);else n-;fclose(fp);void total()/*统计本期杂志订户数*/struct magazine mag;FILE *fp;float totalprice;int totalmount=0;float price1;float sum=0.0; if(fp=fopen(E:magazine1,r)=NULL)printf(此文件不存在);exit(0);printf(订户名t订阅数t单价t金额n);while(fread(&mag,sizeof(struct magazine),1,fp)=1)totalmount+=mag.mount;price1=mag.price;totalprice=mag.mount*mag.price;sum+=totalprice;printf(%st%dt%3.2ft%3.2fn,,mag.mount,mag.price,totalprice);printf(合计t%dt%3.2ft%3.2fn,totalmount,price1,sum);fclose(fp);voi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 烧结原料工岗位设备维护考核试卷含答案
- 海藻繁育工岗位持续改进考核试卷含答案
- 矿用电机车机械装配工岗位应急管理考核试卷含答案
- 普通磨料制造工创新实践能力考核试卷含答案
- 淮阳事业单位考试试题及答案
- 中国职业教育与产业发展对接策略考试及答案
- 井下采掘面试题及答案
- 3.2 Python语言程序设计第一课时(教学设计)高中信息技术必修1数据与计算同步高效课堂(浙教版2019)
- 2025-2026学年石嚎吏教学设计
- 旅游住宿业服务质量与客户满意度提升研究及行业竞争格局分析建议规划
- 2025年国开园艺设施题库及答案
- 2025年公开选拔乡镇副科级领导干部笔试题库(附答案)
- 2025口腔医师三基培训
- 2025年成人高考专升本民法真题及答案
- 软硬件资源配置管理办法
- 学堂在线 智能时代下的创新创业实践 期末考试答案
- 乌鲁木齐门楼牌管理办法
- 砂浆企业安全管理制度
- 建筑施工培训课件-木工安全教育
- 汽车整车装配与调试课件:车门总成的装配
- 党建引领 五育并举 推动学校内涵式发展
评论
0/150
提交评论