《杂志订阅管理系统》由会员分享,可在线阅读,更多相关《杂志订阅管理系统(25页珍藏版)》请在金锄头文库上搜索。
1、精品文档C语言课程设计题目:图书信息管理系统设计者:所属院系:工程学院专业:安全工程班级: 055101学号:指导教师:吴湘宁。1 欢迎下载精品文档C 语言课程设计报告一题目要求杂志订阅管理软件 要求使用计算机对一种杂志的订阅进行管理 , 该杂志拥有的最多订户不超过 10 人, 每个订户的信息包括 : 姓名 , 性别 , 地址 , 电话号码 , 杂志单价 , 订阅数 , 订阅的期限 ( 至 XX年 XX月).现在要求用菜单选择并完成下述的功能:(1) 增加新订户 , 即将订户的全部信息输入到文件中 ;(2) 根据当天的日期对订户文件进行查询 , 删除已经到期的订户记录 ;(3) 统计本期杂志的
2、订户数并打印运算结果 ;本期订户信息表 :订户名订阅数单价金额李平25.511.0黄海15.55.5合计31.016.5二. 需求分析根据题目要求 , 由于杂志的订户信息要用文件存储, 所以要提供文件的输入输出操作;提供文件的添加操作增加新订户; 对订户文件的查阅 , 提供文件的查找操作;通过文件的删除操作删除已经到期的。2 欢迎下载精品文档订户记录 ; 提供统计和显示操作统计本期杂志订户数并打印运算结果;另外还要提供键盘式选择菜单以实现功能选择.三. 总体设计经过分析整个系统 , 根据上面的需求分析 , 可以将整个系统的设计分为如下三大模块 : 增加新订户 , 查询 , 统计 .杂志订阅管理
3、软件增加统计查询四 . 详细设计1. 主函数 .主函数只提供输入 , 处理和输出部分的函数调用 . 每个功能模块用菜单方式选择 . 设置一个 menu()函数 , 再用主函数调用 menu()函数 , 使系统执行完每部分功能模块后能够方便返回到系统界面 .流程图显示一系列功能选项N输入 n,判断 n是否 1-3Y根据 n 值调用各功能模。3 欢迎下载精品文档 程序void main()FILE *fp;fp=fopen(record.txt,w);/*建立一个 record.txt记事本 */fclose(fp);menu();void menu()int n,w;/*n表示菜单选择数字 */
4、doprintf(tt- - - - - - - - - - - -nnn);printf(tt欢迎来到杂志订阅系统!nnn);printf(tt- - - - - - - - - - - -n);printf(nntt- - - - - - - - - - - nn);。4 欢迎下载精品文档printf(tt1:订户信息添加n);printf(tt2:订户信息浏览n);printf(tt3:订户信息统计n);printf(tt- - - - - - - - - - -nn);printf(选择您的操作 (1-3): bb);scanf(%d,&n);if(n3)w=1;getchar();e
5、lse w=0;While(w=1);/*选择功能 */switch(n)case 1:add();break;/*增加新订户记录 */case 2:search();break;/*查找过期的订户记录并删除*/。5 欢迎下载精品文档case3:statistic();break; /*统计 */case4:exit();/*退出 */2. 各功能模块设计(1) 增加新订户模块 数据结构 单独看各个信息 , 姓名 , 性别和地址是字符型的, 电话号码 , 订阅数和订阅期限是整型的, 杂志单价是实数型的. 数据信息以文件的形式存放 , 一条记录对应一个订户. 由于信息有整型 , 实数型和字符型
6、, 所以应采用结构体数组来存放信息.如下:struct magazinecharname6;charsex2;charaddr13;charphone_number11;charunit_price5;charamount4;chartime_limit8;。6 欢迎下载精品文档由于题目中明确订户最多不超过10 人, 所以这里定义reader10就够了 . 使用宏定义 (#define N 2)方便改变每次要输入新订户的个数.流程图输入 N 个订户的信息将订户信息输入到record10建立并打开文件record.txt将 record10信息输入到 reader.txtINYN关闭文件进入【程
7、序】void add()int t,i,m;。7 欢迎下载精品文档t=load_record();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姓名 性别 地址 电话号码杂志单价订阅数 订阅期限n);scanf(%s%s%s%s%s%s%s,
8、&orderi.name,&orderi.sex,&orderi.addr,&orderi.phone_number,&orderi.unit_price,&orderi.amount,&orderi.time_limit);(2)查询订户信息模块【需求分析】需要根据现在日期删除已经过期订户的信息。先设计一。8 欢迎下载精品文档个 deadline ()函数用来输入各用户的截止日期。在 query ()函数中调用该函数与现在日期进行比较。【流程图】在 deadline()函数中输入截止日期调用 deadline(),并输入今天日期N截止日期 保留信息今天日期Y用后面用户信息将其覆盖返回 men
9、u()【程序】void search()FILE *fp;char date11,str2;int t,i,sum=0;t=load_record();。9 欢迎下载精品文档printf(请输入日期 :bbbbbbbbb);scanf(%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);。10