杂志订阅管理系统Word格式文档下载.docx
- 文档编号:18495035
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:18
- 大小:323.94KB
杂志订阅管理系统Word格式文档下载.docx
《杂志订阅管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《杂志订阅管理系统Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
提供文件的添加操作增加新订户;
对订户文件的查阅,提供文件的查找操作;
通过文件的删除操作删除已经到期的订户记录;
提供统计和显示操作统计本期杂志订户数并打印运算结果;
另外还要提供键盘式选择菜单以实现功能选择.
三.总体设计
经过分析整个系统,根据上面的需求分析,可以将整个系统的设计分为如下三大模块:
增加新订户,查询,统计.
四.详细设计
1.主函数.
主函数只提供输入,处理和输出部分的函数调用.每个功能模块用菜单方式选择.设置一个menu()函数,再用主函数调用menu()函数,使系统执行完每部分功能模块后能够方便返回到系统界面.
[流程图]
N
Y
[程序]
voidmain()
{
FILE*fp;
fp=fopen("
record.txt"
"
w"
);
/*建立一个"
记事本*/
fclose(fp);
menu();
}
voidmenu()
intn,w;
/*n表示菜单选择数字*/
do
printf("
\t\t^-^^-^^-^^-^^-^^-^^-^^-^^-^^-^^-^^-^\n\n\n"
\t\t欢迎来到杂志订阅系统!
\n\n\n"
\t\t^-^^-^^-^^-^^-^^-^^-^^-^^-^^-^^-^^-^\n"
\n\n\t\t^-^^-^^-^^-^^-^^-^^-^^-^^-^^-^^-^^-^\n\n"
\t\t1:
订户信息添加\n"
\t\t2:
订户信息浏览\n"
\t\t3:
订户信息统计\n"
\t\t^-^^-^^-^^-^^-^^-^^-^^-^^-^^-^^-^^-^\n\n"
选择您的操作(1-3):
[]\b\b"
scanf("
%d"
&
n);
if(n<
1||n>
3)
{
w=1;
getchar();
}
elsew=0;
While(w==1);
/*选择功能*/
switch(n)
case1:
add();
break;
/*增加新订户记录*/
case2:
search();
/*查找过期的订户记录并删除*/
case3:
statistic();
/*统计*/
case4:
exit();
/*退出*/
2.各功能模块设计
(1)增加新订户模块
[数据结构]
单独看各个信息,姓名,性别和位置是字符型的,电话号码,订阅数和订阅期限是整型的,杂志单价是实数型的.数据信息以文件的形式存放,一条记录对应一个订户.由于信息有整型,实数型和字符型,所以应采用结构体数组来存放信息.如下:
structmagazine
charname[6];
charsex[2];
charaddr[13];
charphone_number[11];
charunit_price[5];
charamount[4];
chartime_limit[8];
由于题目中明确订户最多不超过10人,所以这里定义reader[10]就够了.使用宏定义(#defineN2)方便改变每次要输入新订户的个数.
[流程图]
N
【程序】
voidadd()
intt,i,m;
t=load_record();
printf("
您希望添加几组订户的信息?
\n"
请输入数字:
[]\b\b\b"
scanf("
m);
for(i=0;
i<
m;
i++)
printf("
\n请输入第%d组订户记录!
i+1);
input(t+i);
/*调用输入函数*/
save(t+m);
/*调用保存函数,保t+m组数据*/
/*返回登陆界面*/
voidinput(inti)
请输入:
\n姓名性别位置电话号码杂志单价订阅数订阅期限\n"
%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)查询订户信息模块
【需求分析】需要根据现在日期删除已经过期订户的信息。
先设计一个deadline()函数用来输入各用户的截止日期。
在query()函数中调用该函数与现在日期进行比较。
【流程图】
N
Y
voidsearch()
chardate[11],str[2];
intt,i,sum=0;
t=load_record();
请输入日期:
[]\b\b\b\b\b\b\b\b\b"
%s"
date);
if((fp=fopen("
))==NULL)/*以只写方式打开*/
对不起,文件打不开!
\n\n"
t;
if(strcmp(order[i].time_limit,date)<
0)
{
sum++;
printf_one(i);
/*把符合条件的记录显示出来*/
\n\n此订户信息已过期!
"
\n\n您希望删除此条信息吗?
(‘Y’或‘N’):
scanf("
str);
;
if(strcmp(str,"
Y"
)==0||strcmp(str,"
y"
)==0)
continue;
}
fwrite(&
order[i],sizeof(structmagazine),1,fp);
fclose(fp);
if(sum==0)
printf("
对不起,找不到您要的信息!
\n\n\n任意键返回上一步…\n"
getchar();
menu();
(3)统计信息并输出
【分析】在此另外建立一个新的结构体数组p【10】,将文件reader.Txt中的信息输入到数组中,读取一次count增加一,以统计订户总数。
voidstatistic()
intt;
printf_n(t);
\n\n\n任意键返回…\n\n"
getchar();
voidprintf_one(inti)/*显示一个仪器记录的函数*/
%-10s%-5s%-10s%-11s%-4s%-3s%-10s\n\n"
order[i].name,
order[i].sex,order[i].addr,order[i].phone_number,order[i].unit_price,order[i].amount,&
voidprintf_n(intn)/*显示n个仪器记录的函数*/
intj;
姓名性别位置电话号码杂志单价订阅数订阅期限\n\n"
for(j=0;
j<
n;
j++)
if((j+1)%10==0)/*控制显示,每屏显示10行*/
{
\n\n任意键继续…"
puts("
\n\n"
}
printf_one(j);
/*调用显示一个仪器记录的函数*/
五,运行结果
(1)菜单的显示界面如下:
(2)输入1,进入增加新订户界面。
输入信息并显示如下:
(3)输入2进入查询模块,输入日期可以删除已经过期订户信息,显示已过期订户信息如下:
(4)输入3,进入统计界面,删除过期用户显示订户及其信息如下:
六,实习心得
由于我大一时学过VFP,所以心里总是觉得课程设计是件很简单的事情,可是当我拿上题目时才发现事情并非我想的那样,虽然题目差不多可是做法却大相径庭,用C语言做程序需要很强的逻辑思维,只有有了清晰的思路才能做出好的程序。
一开始拿上题目时并不知道从何下手,所以有了偷懒的念头,拿了以前人家编好的程序,可是运行时发现有很多问题,后来根据老师给的例题,自己又认真思考了一下午发现其实并没有自己想的那么难,后来通过自己的努力终于写出了一套完整的程序,虽然期间遇到许多困难,但在老师的细心讲解下都一一解决了。
这次实习,我从中不仅学习到了关于C语言的知识,同时也感受到了自己成功编写出程序的喜悦。
虽然这只是一个比较简单的程序,但是这是我通过自己学习到的知识完成的,期间也有过犯错的念头,但是后来还是改正了。
学习和练习C程序的设计是一个漫长的过程,这几天的学习只是让我们接触到了C语言程序设计,只是肤浅的了解了它的一些基本操作,我们学习C语言需要不断的练习积累才能使我们的水平提高,虽然学习C语言有时很枯燥,我们需要认真的对待它,虽然编写一个程序需要很长的时间,因此我们需要耐心,最重要的是,我们需要独立的思考和编写程序。
这样才能提高我们的C语言设计的能力,更好的运用它解决一些问题。
附录
源代码
#include<
stdio.h>
string.h>
#definemax10
charname[6];
order[max];
voidsave(intn);
intload_record();
voidsearch();
voidprintf_n(intn);
voidprintf_one(inti);
voidinput(inti);
voidstatistic();
voidadd();
voidmenu();
/*添加模块*/
intt,i,m;
for(i=0;
input(t+i);
save(t+m);
/*调用保存函数,保存t+m组数据*/
\n姓名性别位置电话号码杂志单价订阅数订阅期限\n"
&
order[i].name,&
order[i].sex,&
order[i].addr,&
order[i].phone_number,&
order[i].unit_price,&
order[i].amount,&
/*查询模块*/
if((fp=fopen("
对不起,文件打不开!
if(strcmp(order[i].time_limit,date)<
printf_one(i);
fwrite(&
对不起,找不到您要的信息!
/*统计模块*/
intt;
printf_n(t);
order[i].name,order[i].sex,order[i].addr,order[i].phone_number,order[i].unit_price,order[i].amount,&
intj;
for(j=0;
if((j+1)%10==0)/*控制显示,每屏显示10行*/
puts("
printf_one(j);
/*公共函数*/
intload_record()/*加载仪器信息并计算记录仪器个数的函数*/
inti;
r"
))==NULL)/*以只读方式打开*/
\n文件无法打开\n"
!
feof(fp);
i++)/*从文件中读入数据并保存在结构体数组中*/
fread(&
return(i-1);
voidsave(intn)/*n表示保存n组数据,m表示保存在哪个文件夹里*/
);
/*以只写方式打开*/
if(fp==NULL)
i++)
{
}
}
intn,w;
do
\t\t1:
scanf("
if(n<
w=1;
elsew=0;
while(w==1);
case3:
/*统计*/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 杂志 订阅 管理 系统