杂志订阅管理系统.doc

上传人:飞****9 文档编号:138585140 上传时间:2020-07-16 格式:DOC 页数:21 大小:857.50KB
返回 下载 相关 举报
杂志订阅管理系统.doc_第1页
第1页 / 共21页
杂志订阅管理系统.doc_第2页
第2页 / 共21页
杂志订阅管理系统.doc_第3页
第3页 / 共21页
杂志订阅管理系统.doc_第4页
第4页 / 共21页
杂志订阅管理系统.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《杂志订阅管理系统.doc》由会员分享,可在线阅读,更多相关《杂志订阅管理系统.doc(21页珍藏版)》请在金锄头文库上搜索。

1、 C 语 言 课 程 设 计题 目:图书信息管理系统 设 计 者: 所属院系: 工程学院专 业: 安全工程班 级:055101学 号:指导教师:吴湘宁C语言课程设计报告 一题目要求杂志订阅管理软件要求使用计算机对一种杂志的订阅进行管理,该杂志拥有的最多订户不超过10人,每个订户的信息包括:姓名,性别,地址,电话号码,杂志单价,订阅数,订阅的期限(至XX年XX月).现在要求用菜单选择并完成下述的功能:(1) 增加新订户,即将订户的全部信息输入到文件中;(2) 根据当天的日期对订户文件进行查询,删除已经到期的订户记录;(3) 统计本期杂志的订户数并打印运算结果;本期订户信息表:订户名 订阅数 单价

2、 金额李平 2 5.5 11.0黄海 1 5.5 5.5合计 3 1.0 16.5二.需求分析根据题目要求,由于杂志的订户信息要用文件存储,所以要提供文件的输入输出操作;提供文件的添加操作增加新订户;对订户文件的查阅,提供文件的查找操作;通过文件的删除操作删除已经到期的订户记录;提供统计和显示操作统计本期杂志订户数并打印运算结果;另外还要提供键盘式选择菜单以实现功能选择.三.总体设计 经过分析整个系统,根据上面的需求分析,可以将整个系统的设计分为如下三大模块:增加新订户,查询,统计.杂志订阅管理软件 查询统计增加四.详细设计1.主函数.主函数只提供输入,处理和输出部分的函数调用.每个功能模块用

3、菜单方式选择.设置一个menu()函数,再用主函数调用menu()函数,使系统执行完每部分功能模块后能够方便返回到系统界面.流程图显示一系列功能选项 输入n,判断n是否1-3 N 根据n值调用各功能模块 Y程序void main() FILE *fp; fp=fopen(record.txt,w); /*建立一个record.txt记事本*/ fclose(fp);menu();void menu()int n,w; /*n表示菜单选择数字*/do printf(tt - - - - - - - - - - - - nnn); printf(tt 欢迎来到杂志订阅系统! nnn); print

4、f(tt - - - - - - - - - - - - n); printf(nntt - - - - - - - - - - - - nn); printf(tt 1:订户信息添加 n); printf(tt 2:订户信息浏览 n); printf(tt 3:订户信息统计 n); printf(tt - - - - - - - - - - - - nn); printf(选择您的操作(1-3): bb); scanf(%d,&n); if(n3) w=1; getchar(); else w=0; While(w=1); /*选择功能*/switch(n) case 1:add();bre

5、ak; /*增加新订户记录*/ case 2:search();break; /*查找过期的订户记录并删除*/case3:statistic();break; /*统计*/case4:exit(); /*退出*/ 2.各功能模块设计 (1)增加新订户模块数据结构 单独看各个信息,姓名,性别和地址是字符型的,电话号码,订阅数和订阅期限是整型的,杂志单价是实数型的.数据信息以文件的形式存放,一条记录对应一个订户.由于信息有整型,实数型和字符型,所以应采用结构体数组来存放信息.如下:struct magazinechar name6;char sex2;char addr13;char phone_

6、number11;char unit_price5;char amount4;char time_limit8; 由于题目中明确订户最多不超过10人,所以这里定义reader10就够了.使用宏定义(#define N 2)方便改变每次要输入新订户的个数.流程图输入N个订户的信息将订户信息输入到record10 建立并打开文件record.txt将record10信息输入到reader.txtreader INY关闭文件N进入menu()【程序】void add()int t,i,m;t=load_record();printf(您希望添加几组订户的信息?n);printf(请输入数字: bbb

7、);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姓名 性别 地址 电话号码 杂志单价 订阅数 订阅期限n);scanf(%s%s%s%s%s%s%s,&orderi.name,&orderi.sex,&orderi.addr,&orderi.phone_number,&orderi.unit_price,&orderi.amou

8、nt,&orderi.time_limit);(2)查询订户信息模块【需求分析】需要根据现在日期删除已经过期订户的信息。先设计一个deadline()函数用来输入各用户的截止日期。在query()函数中调用该函数与现在日期进行比较。【流程图】在deadline()函数中输入截止日期调用deadline(),并输入今天日期截止日期今天日期保留信息N 用后面用户信息将其覆盖Y返回menu()【程序】void search() FILE *fp; char date11,str2; int t,i,sum=0; t=load_record(); printf(请输入日期: bbbbbbbbb); s

9、canf(%s,date); printf(n);if(fp=fopen(record.txt,w)=NULL) /*以只写方式打开*/ printf( 对不起,文件打不开! nn); printf(n);for(i=0;it;i+) if(strcmp(orderi.time_limit,date)0) sum+; printf(n); printf_one(i); /*把符合条件的记录显示出来*/ printf(nn 此订户信息已过期!); printf(nn 您希望删除此条信息吗?(Y或N): bb); scanf(%s,str); if(strcmp(str,Y)=0|strcmp(s

10、tr,y)=0) continue; fwrite(&orderi,sizeof(struct magazine),1,fp); fclose(fp); if(sum=0) printf( 对不起,找不到您要的信息! nn); printf(nnn 任意键返回上一步 n); getchar(); menu();(3)统计信息并输出【分析】在此另外建立一个新的结构体数组p【10】,将文件reader.Txt中的信息输入到数组中,读取一次count增加一,以统计订户总数。建立结构体数组p【10】【流程图】 iN将文件reader.txt信息读取到p【10】中Count增加一YN输出p【10】信息

11、结束【程序】void statistic()int t;t=load_record();printf_n(t);printf(nnn 任意键返回 nn);getchar();menu();void printf_one(int i) /*显示一个仪器记录的函数*/printf(%-10s %-5s %-10s %-11s %-4s %-3s %-10snn, orderi.name, orderi.sex, orderi.addr, orderi.phone_number, orderi.unit_price, orderi.amount, &orderi.time_limit);void printf_n(int n) /*显示n个仪器记录的函数*/int j;printf(姓名 性别 地址 电话号码 杂志单价 订阅数 订阅期限nn);for(j=0;jn;j+) if(j+1)%10=0) /*控制显示,每屏显示10行*/ printf(nn 任意键继续 ); getchar(); puts(nn);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 经营企划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号