C语言课程设计之杂志订阅管理
时间:2026-01-27
时间: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字,全部文档内容请下载后查看。喜欢就下载吧 ……下一篇:旋转机械振动监测和故障诊断技术