C语言课程设计之杂志订阅管理

时间:2026-01-27

杂志订阅管理软件的详细设计过程

以下是报告正文

1. 题目与要求:

1.1问题提出与要求:

使用计算机对一种杂志的订阅进行管理,该杂志拥有最多订户不超过10人,每个订户的信息包括:姓名、性别、地址、电话号码、杂志单价、订阅数、订阅的期限(至x x年x x月x x日) 现要求用菜单选择并完成下述的功能:

(1)增加新订户,即将订户的全部信息输入到文件中。

(2)根据当前的日期对订户文件进行查询,删除已到期的订户记录。 (3)统计本期杂志订户数并打印运算结果。 [提示]

订户的信息用文件存储,提供文件的输入输出操作;提供文件的添

加操作,增加新订户;对订户文件的查询,提供文件的查找操作;通过文件的删除操作删除已到期的订户记录;提供统计和显示操作统计本期杂志订户数并打印运算结果;另外还要提供键盘式选择菜单以实现功能的选择。

2.功能实现设计:

2.1总体设计:

杂志订阅管理软件的详细设计过程

2.2详细设计: 【主函数】

主函数一般设计得比较简洁,提供输入,功能处理和输出部分的函数调用。其中各功能模块用菜单方式选择。

【程序】

杂志订阅管理软件的详细设计过程

main () { }

void menu() {

int w,n; do {

puts("\n"); puts("\t\t\t

欢迎来到杂志订阅系统\n");

menu();

puts("\t\t********************MENU********************\n\n");

puts("\t\t\t1:add_new_subscriber\n"); puts("\t\t\t2:search_dele\n"); puts("\t\t\t3:statistic\n"); puts("\t\t\t4:exit\n");

puts("\n\t\t*********************************************\n\n");

printf("Choice your number()1-4:[ ]\b\b"); scanf("%d",&n);

杂志订阅管理软件的详细设计过程

}

if(n<1||n>4) { } else w=0; w=1; getchar();

}while(w==1); switch(n) { }

case 1:add();break; case 2:search_dele();break; case 3:statistic();break; case 4:exit(0);

【功能模块设计】 (1)添加模块 【需求分析】

该模块的功能是添加本期新的杂志订阅用户,从键盘输入到原来的输入文件中,注意采用追加而不是覆盖的方式。追加模块流程图如下图所示:

杂志订阅管理软件的详细设计过程

【程序】

void add()/*添加模块*/ {

杂志订阅管理软件的详细设计过程

}

int t,i,m;

system("cls");/*清屏*/ t=load_record();

printf("您需要添加多少用户的信息?\n"); getch();

printf("输入号码:[]\b\b\b"); scanf("%d",&m); for(i=0;i<m;i++) { } save(t+m); system("cls"); menu();

printf("\n Input %dth subscriber record.\n",i+1); input(t+i);

void input(int i) {

printf("Please enter:姓名 性别 地址 电话号码 单价 数量

日期期限");

scanf("%s %s %s %s %f %d %s",mag[i].name,mag[i].sex,mag[i].addr,

杂志订阅管理软件的详细设计过程

mag[i].phone_number,&mag[i].unit_price,&mag[i].amount,mag[i].time

_limit); }

数据结构: struct magazine {

char name[20]; char sex[6]; char addr[20];

char phone_number[20]; float unit_price; int amount; char time_limit[20];

}mag[N];

(2)查询并删除模块 【功能分析】

该模块的功能是查询已到期的用户并且删除。将用户的日期期限与当天的日期进行比较,将未到期的用户数据先存放到另一个结构体变量中,待查询完当前所有的用户后,再将暂时存放未过期的用户的数据输入到文件中去。结构图如下所示:

杂志订阅管理软件的详细设计过程

【程序】

void search_dele()/*查询并删除模块*/ {

FILE *fp;

杂志订阅管理软件的详细设计过程

char date[20]; int t,i,sum=0,j=0; t=load_record(); system("cls");

printf("请输入日期:[ ]\b\b\b\b\b\b\b\b\b\b\b"); scanf("%s",date); printf("\n");

if((fp=fopen("record.txt","w"))==0) { }

system("cls"); printf("\n"); for(i=0;i<t;i++) {

if(strcmp(mag[i].time_limit,date)>0) {

sum++; printf("\n"); printf_one(i);

printf("\nCannot open the file\n"); exit(0);

杂志订阅管理软件的详细设计过程

fprintf(fp,"%s

%s

%s

%s

%f %d %s\n\n",a[j].name,a[j].sex,a[j].addr,a[j].phone_number,a[j].unit

_price,a[j].amount,a[j].time_limit); }

(3)统计模块 【功能分析】 } fclose(fp); } j++;

if(sum==0)/*表示所有的用户已过期*/ { }

printf("\n\n\n按任意键返回前一步\n\n"); getch(); menu();

printf("************************************\n\n"); printf("很遗憾!无法找到您想要的条件!\n\n");

printf("************************************\n\n");

该模块的功能是统计本期的用户,并计算总的订阅量和总金额。流程图如下所示:

杂志订阅管理软件的详细设计过程

【程序】

void statistic()/*统计模块*/ {

int i,t,allamount=0; float sum=0.0,allmoney=0.0; t=load_record();

杂志订阅管理软件的详细设计过程

}

printf("\n订阅者的数量[%d]\b\b\b",t); getch(); system("cls");

…… 此处隐藏:2010字,全部文档内容请下载后查看。喜欢就下载吧 ……
C语言课程设计之杂志订阅管理.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:4.9 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:19元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219