管理c语言程序设计报告,C语言程序设计报告—杂志订阅管理软件.doc

253b171540df25e1b84436cbe50dfc72.gifC语言程序设计报告—杂志订阅管理软件.doc

C 语 言 程 序 设 计 学院 工程学院 班级序号 05507124 学号 20071003303 姓名 华进 指导老师 刘文中 前言 我们学习 C 语言课程设计的主要目的是为了了解和熟悉 C 语言的编程。学习 C 语言要经过一个“理论实践在理论在实践”的过程。而学习 C 语言课程设计就是要我们进行实践,从中发现问题,解决问题,提高我们运用 C 语言的能力。是我们能够运用 C 语言解决一些问题。通过不断的编程,熟能生巧,是我们的 理论学习也有了实践基础,学习理论知识就较为容易一些,然后再通过实践不断的提高,如此良性循环就能是我们的 C 语言编程能力更上一成楼。 正文 一题目原文 杂志订阅管理软件 要求 使用计算机对一种杂志的订阅进行管理,该杂志拥有的最多用户不超过 10 人,每个订户信息包括姓名,性别,地址,电话号码,杂志单价,订阅数,订阅期限(年月)。 现要求用菜单选择并完成下述功能。 ( 1)增加新订户,即将订户的全部信息输进到文件中。 ( 2)根据当天的日期对订户文件进行查询,删除以到期的订户记录。 ( 3)统计本期杂志订户 数并打印运算结果。 二题目的分析 本题主要是要求我编一个程序来管理订阅,包括增加和删除用户记录,统计运算结果。增加用户就是在原有的文件中写入一个新的用户信息,但有一个前提就是用户数不能超过10 人。删除以到期的用户,就是从原有的文件中去掉一个用户信息,这里需要把日期与当天的日期进行比较,而统计结果就是把文件中的用户进行统计,并输出。 三 整体设计和板块划分 本程序总思路 本程序有一个主函数和三个被调函数,三个被调函数分别解决增加新订户,删除订户记录,统计订户信息打印运算结果三个问题。 板块划分 1. 主要的结构体为 magzine,他包括用户的基本信息姓名,性别,地址,电话号码,单价,订阅数和期限。全局变量为结构体变量 mag。主函数用的是 switch语句, 3个结果分别对应 3个函数,便于操作。 2. 被调函数 1,解决增加新用户的问题。先打开文件,要判断用户数是否超过 10,然后将新的用户信息写入文件中,这里用的是 do while语句对文价进行读和写,读文件需要计算出订户数,并判断。写即是写入新订户。 3. 被调函数 2,解决删除 订户记录的问题。进行文件的读出操作,并输入当天的日期,用strcmp语句与定户信息中的期限进行比较,如果订户信息中的期限与当日的期限相同,那么在写文件时,该订户的记录就不用写入了,反之,就应当写入。这样变完成了删除操作了。 4. 被调函数 3,统计用户信息并打印运算结果。这里主要是进行文件的读和写,运用 if语句完成,统计结果即是根据单价和数量算出总价格并把所有的价格求和即可。然后只需输出用户的姓名,订阅数,单价和金额 主函数 被调函数 1 增加新订户模块 被调函数 2 删除订户记录模块 被调函数 3 统计订户信息并打印结果模块 流程图 1.增订新用户模块 struct magazine mag; int n0; void insertstruct magazine mag FILE *fp; char ch; iffp“Emagazine“,“w“NULL printf“此文件不存在 “; exit0; do 开始 显示一系列功能选择 输入 n,判断 m 是否是 0 到 3 根据 n 值调用各 功能模块函数 结束 N 开始 定义结构体全局变量,打开文件 阅读资料,判断是否 是超过 10 人 结束 输入新用户信息 Y N ifn include include include struct magazine char name20; char sex4; char address30; char tel11; float price; int mount; char dataline8; ; struct magazine mag; int n0;/*用户计数器 */ void insertstruct magazine mag/*增订新用户 */ FILE *fp; char ch; iffp“Emagazine“,“w“NULL printf“此文件不存在 “; exit0; do ifn10 printf“请输入姓名 “;getsmag.name; printf“请输入性别 “;getsmag.sex; printf“请输入地址 “;getsmag.address; printf“请输入电话号码 “;getsmag.tel; printf“请输入订阅期限 “;getsmag.dataline; printf“请输入杂志单价 “;scanf“f“, printf“请输入订阅数 “;scanf“d“, fwrite n; else printf“用户已满 “; printf“是否还有新订户 “; scanf“c“, system“cls“; whilechychY; fclosefp; void del/*删除过期用户 */ struct magazine mag; FILE *fp,*fp1; char datatime8; int m; iffp“Emagazine“,“r“NULL printf“此文件不存在 “; exit0; printf“请输入当天日期 “; getsdatatime; whilefread ifm1 iffp1“Emagazine1“,“a“NULL/*将没有过期的用户写入新的文件中 */ printf“此文件不存在 “; exit0; fwrite fclosefp1; else n; fclosefp; void total/*统计本期杂志订户数 */ struct magazine mag; FILE *fp; float totalprice; int totalmount0; float price1; float sum0.0; iffp“Emagazine1“,“r“NULL printf“此文件不存在 “; exit0; printf“订户名 t订阅数 t单价 t金额 n“; whilefread price1mag.price; totalpricemag.mount*mag.price; sumtotalprice; printf“stdt3.2ft3.2fn“,mag.name,mag.mount,mag.price,totalprice; printf“合计 tdt3.2ft3.2fn“,totalmount,price1,sum; fclosefp; void main int ch; char ch1; do printf“1.增加新订户 n“; printf“2.删除到期用户 n“; printf“3.统计订户数 n“; scanf“d“,getchar; switchch case 1insertmag;break; case 2del;break; case 3total;break; defaultprintf“输入有误 “;break; printf“是否继续其他操作 “; scanf“c“, system“cls“; whilech1ych1Y;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值