杂志订阅系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言课程设计报告
——杂志订阅系统
学院:计算机学院
班级:
姓名:
学号:
指导老师:
C语言课程设计报告
——杂志订阅系统
1、题目要求
使用计算机对一种杂志的订阅进行管理,该杂志拥有最多订户不超过10人,每个订户的信息包括:姓名、性别、地址、电话号码、杂志单位,订阅数、订阅期限。
现要求用菜单选择并完成下述的功能:
(1)增加新订户,即将订户的全部信息输入到文件中。
(2)根据当天的日期对订户文件进行查询,删除已到期的订户记录。
(3)统计本期杂志订户数并打印运算结果。
2、需求分析
根据题目要求,由于订户信息要求存放在文件中,所以应提供文件的输入、输出等操作;在程序中需要对订户文件进行添加和查询,所以应提供添加、显示、查找等操作;另外还应提供选择菜单实现功能选择。
3、总体设计
下面来分析一下整个系统,根据上面的需求分析,可以将这个系统的设计分为四大模块:添加、查询、统计、退出。其中主要功能是查询和统计两个模块。
││││
4、详细设计
1、主函数
主函数设计得比较简洁,只提供菜单界面及各模块函数的调用。
main()
{
FILE *fp;
fp=fopen("record.txt","w"); /*建立一个"record.txt"记事本*/
fclose(fp);
menu();
}
void menu()
{
int n,w; /*n表示菜单选择数字*/
do
{
printf("\t\t ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ \n\n\n"); printf("\t\t 欢迎来到杂志订阅系统! \n\n\n");
printf("\t\t ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ \n");
printf("\n\n\t\t ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ \n\n"); printf("\t\t 1:订户信息添加 \n");
printf("\t\t 2:订户信息浏览 \n");
printf("\t\t 3:订户信息统计 \n");
printf("\t\t 4:退出系统 \n\n");
printf("\t\t ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ \n\n");
printf("选择您的操作(1-4):[ ]\b\b");
scanf("%d",&n);
if(n<1||n>4)
{
w=1;
getchar();
}
else w=0;
}
while (w==1); /*选择功能*/
switch(n)
{
case 1:add();break; /*增加新订户记录*/
case 2:search();break; /*查找过期的订户记录并删除*/
case 3:statistic();break; /*统计*/
case 4:exit(0);break; /*退出*/
}
}
2、各功能模块设计
(1)添加模块
主要用于添加订户信息。
void add()
{
int t,i,m;
t=load_record();
printf("您希望添加几组订户的信息?\n");
printf("请输入数字:[ ]\b\b\b");
scanf("%d",&m);
for(i=0;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", &order[i].name, &order[i].sex, &order[i].addr, &order[i].phone_number, &order[i].unit_price, &order[i].amount, &order[i].time_limit); } (2)查询模块 主要用于根据日记查询订户信息,并可以选择是否删除过期订户信息。 void search() { FILE *fp; char date[11],str[2]; int t,i,sum=0; t=load_record(); printf("请输入日期:[ ]\b\b\b\b\b\b\b\b\b"); scanf("%s",date); printf("\n"); if((fp=fopen("record.txt","w"))==NULL) /*以只写方式打开*/ { printf(" 对不起,文件打不开! \n\n"); exit(0); } printf("\n"); for(i=0;i { if(strcmp(order[i].time_limit,date)<0) { sum++; printf("\n"); printf_one(i); /*把符合条件的记录显示出来*/ printf("\n\n 此订户信息已过期!"); printf("\n\n 您希望删除此条信息吗?(‘Y’或‘N’):[ ]\b\b"); scanf("%s",str);; if(strcmp(str,"Y")==0||strcmp(str,"y")==0)