




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中 国 地 质 大 学本科生课程论文课程名称 计算机高级语言课程设计(C) 教师姓名 张冬梅 本科生姓名 本科生学号 本科生专业 所在院系 计算机学院 类别: 工科 日期: 2013年1月15日 课程设计评语对课程论文的评语:平时成绩:课程论文成绩:总 成 绩:评阅人签名:注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。目 录课程设计评语2目 录3个人简介.4摘要.41.课程论文题目.52.成语设计思路.53.功能模块.64.数据结构设计.75.算法设计.86.程序代码147.程序运行结果.198.编程中遇到的困难及解决方法.239.总结心得级良好建议.2410.致谢.24作者简介 我是中国地质大学(武汉)计算机学院信息安全专业192122班的黄丽萍,于大一上学期开始学习C语言,并在期末进行了课程设计实习。在学习C语言之前未接触相关语言,对如此抽象的一门学问没什么认识,经过一学期学习,对C语言有了从无到有从浅到深的认识,从理论学习到上机实践,一步步深入了解,但由于学习时间短,难以对这门高深的学问有很深刻的认识,也很难熟练掌握程序设计的技巧,所以编程过程中进经常产生疏漏甚至错误,遇到难题会请老师学姐帮助,在他们帮助下顺利完成了此次课程设计。 摘要本题主要是要求编一个程序来管理杂志订阅,包括增加和删除用户记录,统计运算结果。增加用户就是在原有的文件中写入一个新的用户信息,但有一个前提就是用户数不能超过10人。删除以到期的用户,就是从原有的文件中去掉一个用户信息,这里需要把日期与当天的日期进行比较,而统计结果就是把文件中的用户进行统计,并输出。本程序有主函数、被调函数、公共函数,分别解决增加新订户,删除订户记录,统计订户信息打印运算结果三个问题。1.课程论文题目杂志订阅管理软件要求使用计算机对一种杂志的订阅进行管理,该杂志拥有的最多用户不超过10人,每个订户信息包括:姓名,性别,地址,电话号码,杂志单价,订阅数,订阅期限(年月)。现要求用菜单选择并完成下述功能。(1)增加新订户,即将订户的全部信息输进到文件中。(2)根据当天的日期对订户文件进行查询,删除以到期的订户记录。(3)统计本期杂志订户数并打印运算结果。 2.程序设计思路本题主要是要求编一个程序来管理杂志订阅,包括增加和删除用户记录,统计运算结果。订户的信息要用文件存储,所以要提供文件的输入、输出操作;要实现增加新订户的功能,所以要提供文件的添加操作;要实现对订户的文件查询,所以要提供文件的查找操作;要删除到期订户记录,所以要提供文件的删除操作;要统计本期杂志订户数并打印运行结果,所以要提供统计和显示操作;还有要提供键盘式选择菜单以实现功能选择。增加用户就是在原有的文件中写入一个新的用户信息,但有一个前提就是用户数不能超过10人。删除以到期的用户,就是从原有的文件中去掉一个用户信息,这里需要把日期与当天的日期进行比较,而统计结果就是把文件中的用户进行统计,并输出。本程序有主函数、被调函数、公共函数,分别解决增加新订户,删除订户记录,统计订户信息打印运算结果三个问题。3功能模块图主函数被调函数1增加新订户模块被调函数2删除订户记录模块被调函数3统计订户信息并打印结果模块1. 主要的结构体为magzine,它包括用户的基本信息:姓名、性别、地址、电话号码、单价、订阅数和期限。全局变量为结构体变量magzinei,主函数用的是switch语句,3个结果分别对应3个函数,1个退出操作,便于操作。2. 被调函数1,解决增加新用户的问题。先打开文件,统计文件中的订户数,这里用的是for语句对文件进行读和写,调用输入函数将新的用户信息写入文件中读文件需要计算出订户数,并保存。3. 被调函数2,解决删除订户记录的问题。进行文件的读出操作,并输入当天的日期,用strcmp语句与定户信息中的期限进行比较,如果订户信息中的期限与当日的期限相同,那么在写文件时,该订户的记录就不用写入了,反之,就应当写入。这样就完成了删除操作了。4. 被调函数3,统计用户信息并打印运算结果。这里主要是进行文件的读和写,统计结果将文件中被保存下来的订户信息输出。5. 公共函数部分有菜单函数,方便每次执行后返回菜单栏继续操作,还有保存函数,对输入的信息保存下来。4数据结构设计/*结构体部分*/struct magazinechar name20;char sex6;char addr20;char tell11;char price5;char amount4;char time8; magazineM5算法设计主函数main()int n,w; do printf(n*n); printf(n * .杂志订阅系统. *n); printf(n * *n); printf(n * 1: 增加新订户 *n); printf(n * 2:订户信息浏览及删除 *n); printf(n * 3:订户信息统计 *n); printf(n * 4:退出系统 *n); printf(n *n); printf(选择您的操作(1-4): bb); scanf(%d,&n);if(n4) w=1; getchar(); else w=0; while (w=1); /*选择功能*/switch(n) case 1:add();break; /*增加新订户记录*/ case 2:delete();break; /*查找过期的订户记录并删除*/ case 3:total();break; /*统计*/ case 4:exit(0);break; /*退出*/ 开始显示一系列功能选择输入n,判断m 是否是0到3?根据n值调用各功能模块函数结束N/*添加模块*/void add()int t,i,m;t=load_magazine();printf(希望添加几组订户的信息?n);printf(请输入数字: bbb);scanf(%d,&m);for(i=0;im;i+) printf(n请输入第%d组订户记录!n,i+1); input(t+i); /*调用输入函数*/ save(t+m); /*调用保存函数,保存t+m组数据*/menu(); /*返回登陆界面*/void input(int i) printf(请输入:n姓名t性别t地址t电话号码t杂志单价t订阅数t订阅期限n);scanf( %st%st%st%st%st%st%s, &, &magazinei.sex, &magazinei.addr, &magazinei.tell, &magazinei.price, &magazinei.amount, &magazinei.time);/*删除模块*/void delete()FILE *fp;char date8,str2;int t,i,sum=0;t=load_magazine();printf(请输入日期: bbbbbbbbb);scanf(%s,date);printf(n);if(fp=fopen(magazine.txt,w)=NULL) /*以只写方式打开*/ printf(nCannot open filen); exit(0); printf(n);for(i=0;it;i+) if(strcmp(magazinei.time,date)=0) sum+; printf(n);printf(%st%st%stt%stt%st%st%snn, , magazinei.sex,magazinei.addr, magazinei.tell, magazinei.price, magazinei.amount, magazinei.time); printf(nn 此订户信息已过期!); printf(nn 希望删除此条信息吗?(Y或N): bb); scanf(%s,str); if(strcmp(str,Y)=0|strcmp(str,y)=0) continue; fwrite(&magazinei,sizeof(struct magazine),1,fp); fclose(fp); if(sum=0) printf( 对不起,找不到您要的信息! nn); printf(nnn 任意键返回上一步 n); getchar();menu();/*公共函数*/void menu()int n,w; /*n表示菜单选择数字*/do printf(n*n); printf(n * .杂志订阅系统. *n); printf(n * *n); printf(n * 1: 增加新订户 *n); printf(n * 2:订户信息浏览及删除 *n); printf(n * 3:订户信息统计 *n); printf(n * 4:退出系统 *n); printf(n *n); printf(选择您的操作(1-4): bb); scanf(%d,&n);if(n4) w=1; getchar(); else w=0; while (w=1); /*选择功能*/switch(n) case 1:add();break; /*增加新订户记录*/ case 2:delete();break; /*查找过期的订户记录并删除*/ case 3:total();break; /*统计*/ case 4:exit(0);break; /*退出*/ int load_magazine() /*加载仪器信息并计算记录仪器个数的函数*/FILE *fp;int i; if(fp=fopen(magazine.txt,r)=NULL) /*以只读方式打开*/ printf(nCannot open filen); exit(0); for(i=0;!feof(fp);i+) fread(&magazinei,sizeof(struct magazine),1,fp); /*从文件中读入数据并保存在结构体数组中*/fclose(fp);return(i);void save(int n) FILE *fp;int i;if(fp=fopen(magazine.txt,w)=NULL) /*以只写方式打开*/printf(nCannot open filen);exit(0);for(i=0;in;i+) fwrite(&magazinei,sizeof(struct magazine),1,fp); /*把数据写到文件中*/ fclose(fp); /*统计模块*/void total()int t;t=load_magazine();printf_n(t);printf(nn 任意键返回 nn);getchar();menu();void printf_n(int n) /*显示条订阅记录的函数*/int j;printf(姓名t性别t地址tt电话号码t单价t数量t期限nn);for(j=0;jn;j+) if(j)%10=0) /*控制显示,每屏显示10行*/ printf(nn 任意键继续 ); getchar(); puts(nn); printf(%st%st%stt%stt%st%st%snn, , magazinej.sex,magazinej.addr, magazinej.tell, magazinej.price, magazinej.amount, magazinej.time); 6程序代码#include#include#include#define M 10struct magazinechar name20;char sex6;char addr20;char tell11;char price5;char amount4;char time8;magazineM;void save(int n);int load_magazine();void delete();void printf_n(int n);void input(int i);void total();void add();void menu();main()int n,w; do printf(n*n); printf(n * .杂志订阅系统. *n); printf(n * *n); printf(n * 1: 增加新订户 *n); printf(n * 2:订户信息浏览及删除 *n); printf(n * 3:订户信息统计 *n); printf(n * 4:退出系统 *n); printf(n *n); printf(选择您的操作(1-4): bb); scanf(%d,&n);if(n4) w=1; getchar(); else w=0; while (w=1); switch(n) case 1:add();break; case 2:delete();break; case 3:total();break; case 4:exit(0);break; /*添加模块*/void add()int t,i,m;t=load_magazine();printf(希望添加几组订户的信息?n);printf(请输入数字: bbb);scanf(%d,&m);for(i=0;im;i+) printf(n请输入第%d组订户记录!n,i+1); input(t+i); save(t+m); menu(); void input(int i) printf(请输入:n姓名t性别t地址t电话号码t杂志单价t订阅数t订阅期限n);scanf( %st%st%st%st%st%st%s, &, &magazinei.sex, &magazinei.addr, &magazinei.tell, &magazinei.price, &magazinei.amount, &magazinei.time);/*删除模块*/void delete()FILE *fp;char date8,str2;int t,i,sum=0;t=load_magazine();printf(请输入日期: bbbbbbbbb);scanf(%s,date);printf(n);if(fp=fopen(magazine.txt,w)=NULL) printf(nCannot open filen); exit(0); printf(n);for(i=0;it;i+) if(strcmp(magazinei.time,date)=0) sum+; printf(n);printf(%st%st%stt%stt%st%st%snn,,magazinei.sex,magazinei.addr, magazinei.tell, magazinei.price, magazinei.amount, magazinei.time); printf(nn 此订户信息已过期!); printf(nn 希望删除此条信息吗?(Y或N): bb); scanf(%s,str); if(strcmp(str,Y)=0|strcmp(str,y)=0) continue; fwrite(&magazinei,sizeof(struct magazine),1,fp); fclose(fp); if(sum=0) printf( 对不起,找不到您要的信息! nn); printf(nnn 任意键返回上一步 n); getchar();menu();/*统计模块*/void total()int t;t=load_magazine();printf_n(t);printf(nn 任意键返回 nn);getchar();menu();void printf_n(int n) int j;printf(姓名t性别t地址tt电话号码t单价t数量t期限nn);for(j=0;jn;j+) if(j%10=0) printf(nn 任意键继续 ); getchar(); puts(nn); printf(%st%st%stt%stt%st%st%snn, , magazinej.sex,magazinej.addr, magazinej.tell, magazinej.price, magazinej.amount, magazinej.time); /*公共函数*/void menu()int n,w; /*n表示菜单选择数字*/do printf(n*n); printf(n * .杂志订阅系统. *n); printf(n * *n); printf(n * 1: 增加新订户 *n); printf(n * 2:订户信息浏览及删除 *n); printf(n * 3:订户信息统计 *n); printf(n * 4:退出系统 *n); printf(n *n); printf(选择您的操作(1-4): bb); scanf(%d,&n);if(n4) w=1; getchar(); else w=0; while (w=1); /*选择功能*/switch(n) case 1:add();break; /*增加新订户记录*/ case 2:delete();break; /*查找过期的订户记录并删除*/ case 3:total();break; /*统计*/ case 4:exit(0);break; /*退出*/ int load_magazine() /*加载仪器信息并计算记录仪器个数的函数*/FILE *fp;int i; if(fp=fopen(magazine.txt,r)=NULL) /*以只读方式打开*/ printf(nCannot open filen); exit(0); for(i=0;!feof(fp);i+) fread(&magazinei,sizeof(struct magazine),1,fp); /*从文件中读入数据并保存在结构体数组中*/fclose(fp);return(i);void save(int n) FILE *fp;int i;if(fp=fopen(magazine.txt,w)=NULL) /*以只写方式打开*/printf(nCannot open filen);exit(0);for(i=0;in;i+) fwrite(&magazinei,sizeof(struct magazine),1,fp); /*把数据写到文件中*/ fclose(fp); 7程序运行结果菜单输入1输入2添加信息输入日期统计信息8编程中遇到的困难及解决方法由于学习C语言时间短,刚开始那到这个题目的时候,有点茫然,后来通过前面的学习,做了第四章的庖丁解牛,第五章的举一反三的实习后慢慢有点思路了,仿照前面的例题和查阅相关资料,再参照书上的提示,让我建立起自己的思路结构。在设计程序的过程中,遇到以下几
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年酒店管理专业技能面试题与应对策略
- 2025年建筑装饰设计师职业资格认证考试预测题详解
- 2025年化工工艺面试热点烷基化工艺答题技巧与答案解析
- 他字的笔顺教学课件
- 2025年农业工程技术与装备考试要点梳理
- 2025年焊接技能认证考试模拟题及答案全解含钎焊
- 2025年特岗教师招聘美术学科面试专业知识点梳理与预测题解析
- 2025年物联网初级工程师高频考题解析
- 2025年酒店经理高级面试实战指南与模拟题解析
- 2025年初级产品经理实战模拟面试题库及解析
- 2024年计算机程序设计员(高级三级)职业技能鉴定考试题库-上(单选题)
- 黄田坝泥石流工程地质勘查报告
- 情绪管理游戏方案
- 2024-2030年中国系统级芯片(SoC)测试机行业市场发展现状及竞争格局与投资战略研究报告
- 重庆第二外国语学校数学新初一分班试卷含答案
- 女性绝经期自测表(Kupperman改良评分)
- 人教版小学数学一年级(上)口算题1000道
- 孕产妇营养指导与咨询制度
- 肝豆状核变性课件
- 新进人员院感培训
- 2024年外包合同模板(通用)(附件版)
评论
0/150
提交评论