C语言课程设计报告对杂志的订阅进行管理.docx
《C语言课程设计报告对杂志的订阅进行管理.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告对杂志的订阅进行管理.docx(16页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告对杂志的订阅进行管理
中国地质大学
本科生课程论文封面
课程名称计算机高级语言课程设计(C)
教师姓名zzzzzz
本科生姓名zzzzzz
本科生学号zzzzzzzzzzzz
本科生专业zzzzzzzzzzzz
所在院系地球科学学院
类别:
C.本科生
日期:
2014-1-12
课程设计评语
对课程论文的评语:
平时成绩:
课程论文成绩:
总成绩:
评阅人签名:
注:
1、无评阅人签名成绩无效;
2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;
3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。
1.题目要求
使用计算机对一种杂志的订阅进行管理,该杂志拥有最多订户不超过10人,每个订户的信息包括:
姓名、性别、地址、电话号码、杂志单价、订阅数、订阅的期限(至**年**月).
现要求用菜单选择并完成下述的功能:
(1)增加新订户,即将订户的全部信息输入到文件中。
(2)根据当天的日期对订户文件进行查询,删除已到期的订户记录。
(3)统计本期杂志订户数并打印运算结果。
本期订户信息表
定户名订阅数单价金额
李平25.511.0
黄海15.55.5
合计35.516.5
2.需求分析
本题目是对杂志的订阅进行管理。
首先,将杂志订阅信息作出有利的整理和分类,利用我们设计的程序进行规划和整理,接下来,对已存入的信息数据进行调用,修改及删除。
最后得到数据库的完善。
这就是我们对此数据的需求分析。
3.总体设计
图1.系统的总体流程图
3.详细设计
杂志订阅管理系统源程序代码
/*杂志订阅管理软件
*
(1)增加新订户,即将订户的全部信息输入到文件中。
要求:
使用计算机对一种杂志进行订阅管理,该杂志拥有最多订户不超过10人,
每个订户的信息包括:
姓名、性别、地址、电话号码、杂志单价、订阅数、订阅期限、(至**年**月)。
*
(2)根据当天的日期对订户文件进行查询,删除已到期的订户记录。
*(3)统计本期杂志订户数并打印运算结果
*/
#include
#include
#include
#definemax10//最多订户不超过10人
//存储每个订户的信息的数据结构
structmagazine
{
charname[6];
charsex[3];
charaddr[13];
charphone_number[12];
charunit_price[5];
charamount[4];
chartime_limit[9];
}order[max];
voidmenu();
voidadd();
voidsearch();
voidstatistic();
intload_record();
voidinput(inti);
voidsave(intn);
voidprint_one(inti);
voidprint_n(intn);
intmain()
{
FILE*fp;
fp=fopen("record.txt","w");
fclose(fp);
menu();
return0;
}
//主菜单,与用户进行交互
voidmenu()
{
intn,w;
do
{
printf("\t\t********************************************\n\n\n");
printf("\t\t欢迎来到杂志订阅系统\n\n\n");
printf("\t\t********************************************\n\n\n");
printf("\t\t********************************************\n\n");
printf("\t\t1:
订户信息添加\n");
printf("\t\t2:
订户信息浏览\n");
printf("\t\t3:
订户信息统计\n");
printf("\t\t4:
退出系统\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);
switch(n)
{
case1:
add();break;
case2:
search();break;
case3:
statistic();break;
case4:
exit(0);break;
}
}
//增加新订户,即将订户的全部信息输入到文件中
voidadd()
{
printf("add\n");
intt,m,i;
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);//读取第t+i个用户的数据
}
save(t+m);//把新用户的数据存储到文件中
menu();
}
voidinput(inti)
{
printf("调用了input函数\n");
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);
}
//根据当天的日期对订户文件进行查询,删除已到期的订户记录
voidsearch()
{
printf("search\n");
FILE*fp;
chardate[9],str[2];
intt,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");
print_one(i);
printf("\n\n此用户信息已过期!
");
printf("\n\n您希望删除此条信息吗?
('Y'或'N'):
[]\b\b");
scanf("%s",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");
}
printf("\n\n\n任意键返回上一步...\n\n");
getchar();
getchar();
menu();
}
voidprint_one(inti)
{
printf("%-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,order[i].time_limit);
}
//统计本期杂志订户数并打印运算结果
voidstatistic()
{
printf("statistic\n");
intt;
t=load_record();
print_n(t);
printf("\n\n\n任意键返回...\n\n");
getchar();
getchar();
menu();
}
voidprint_n(intn)
{
intj;
printf("姓名性别地址电话号码杂志单价订阅数订阅期限\n\n");
for(j=0;j{
if((j+1)%11==0)
{
printf("\n\n任意键继续...");
getchar();
puts("\n\n");
}
print_one(j);
}
}
intload_record()
{
printf("load_record()\n");
FILE*fp;
if((fp=fopen("record.txt","r"))==NULL)
{
printf("\n文件无法打开\n");
exit(0);
}
inti;
for(i=0;!
feof(fp);i++)
{
fread(&order[i],sizeof(structmagazine),1,fp);
}
fclose(fp);
return(i-1);
}
voidsave(intn)
{
printf("调用了save函数\n");
FILE*fp;
inti;
fp=fopen("record.txt","w");
if(fp==NULL)
{
printf("\n文件无法打开!
\n");
exit(0);
}
for(i=0;i{
fwrite(&order[i],sizeof(structmagazine),1,fp);
}
fclose(fp);
}
各模块的功能和实现
1.菜单模块:
显示杂志订阅管理系统的主菜单,供用户选择所需的功能,通过自己定义的voidmenu()函数来实现。
2.输入模块:
输入订户的姓名以及其它的一些职工的相关信息,通过自己定义的voidinput()函数来实现。
3.保存模块:
将内存中订户的信息输出到磁盘文件中,可以通过自己定义的voidsave(int)函数来实现。
4.浏览模块:
浏览所有职工的相关信息,通过自己定义的voiddisplay()函数来实现。
5.删除模块:
删除需要删除的订户的所有信息,通过自己定义的voiddel()函数来实现。
6.添加模块:
添加需要添加的订户的相关信息,通过自己定义的voidadd()函数来实现。
7.按杂志订阅期限查询模块:
可以按志订阅期限来查询职工的相关信息,通过自己定义的voidsearch_num()函数来实现。
8.修改模块:
可以修改需要修改的订户的相关信息,通过自己定义的voidmodify()函数来实现。
9.退出系统模块:
退出杂志订阅信息管理系统,通过头文件windows.h中的exit(0)函数来实现。
5.上机操作
(数据源说明)
(操作步骤:
编译、链接和运行)
(运行结果:
增加运行效果界面,包括主界面、各功能模块的运行界面等)
使用说明及运行实例
1.运行程序,进入职工信息管理系统的主菜单:
图1:
进入主菜单界面
2.输入数字“1”进行订户信息添加:
图2:
订户信息添加
图3:
订户信息添加
4.输入“2”浏览订户信息:
图4:
浏览订户信息
5.输入“3”进行订户信息统计:
图5:
进行订户信息统计
6.进入主菜单输入”4”退出职工信息管理系统。
6.总结
通过这次课程设计,增加了我们对软件技术的了解,虽然还不明确软件技术包含的具体内容,但从C语言课程设计这门课程开始,已发现程序设计的好处,它对我们数学的学习也有很大的帮助。
在学习C语言课程设计的过程中也学到和巩固了许多计算机应用基础知识,对计算机的机体也有了一个较为详细的了解。
在具体操作中对这学期所学的C语言课程设计的理论知识得到巩固加强,达到实训的目的,也发现自己的不足之处,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。
发现上机操作的重要作用,特别是对数组和循环有了深刻的理解。
通过实际操作,学会C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。
由于本课题中的许多知识点都没有学过都要靠自己到课外的资料中去查找。
在用的时候难免出现这样那样的错误。
如开始设计出来的菜单不是预想的那样,而是总个窗中出现混乱。
解决的这个问题的办法是调整。
一个系统的菜单和提示信息非常重要。
如果没有这些用户根本不知道怎么用你设计的这个系统。
在设计的调试过程中也无法顺利的完成调试工作。
有了一个清晰简单的菜单和一些提示信息这后,调试过程完成的非常顺利。
回顾起此次课程设计,至今我们仍感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在这些日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识本次课程设计结束了,对于我们的影响很大。
我们通过这次实践学到了许多知识。
学到了设计一个简单的系统。
要注意哪些方面。
也使我们知道自己哪些方面做得还不够。
但我们总结出了一点点的经验如下:
①要对系统的功能和要求做出详细的分析,并合理分解任务。
②把分解出来的子任务,做给一个相对独立的模块。
③在设计一个模块之前,要简单构想一下总界面的显视情况。
④针对构想出来的界面进行程序的编写。
7.致谢
本次实习让我更加深刻的理解了c语言这门课,对于今后的应用会有帮助。
感谢老师的指导和帮助,让我在这七天时间内丰富了知识,掌握了所学。
参考文献
[1]谭浩强.C程序设计(第三版)[M].北京:
清华大学出版社,2005.
[2]张冬梅,刘远兴,陈晶,等.基于PBL的C语言课程设计及学习指导[M].北京:
清华大学出版社,2011.
[3]……