杂志订阅管理系统.docx

上传人:b****5 文档编号:4316996 上传时间:2022-11-29 格式:DOCX 页数:25 大小:111.63KB
下载 相关 举报
杂志订阅管理系统.docx_第1页
第1页 / 共25页
杂志订阅管理系统.docx_第2页
第2页 / 共25页
杂志订阅管理系统.docx_第3页
第3页 / 共25页
杂志订阅管理系统.docx_第4页
第4页 / 共25页
杂志订阅管理系统.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

杂志订阅管理系统.docx

《杂志订阅管理系统.docx》由会员分享,可在线阅读,更多相关《杂志订阅管理系统.docx(25页珍藏版)》请在冰豆网上搜索。

杂志订阅管理系统.docx

杂志订阅管理系统

 

00000000

C语言课程设计

 

设计(论文)题目:

杂志订阅管理系统

所在院:

信息工程学院

专业班级:

15计算机科学与技术0班

学生姓名:

张三

学号:

000000000

指导教师:

0000

2016年9月11日

000000

课程设计(论文)任务书

设计题目:

杂志订阅管理系统

专业班级:

15计算机科学与技术2班

学号000000000姓名00000

主要内容

设计学生成绩管理系统,主要包含:

输入记录模块、查询记录模块、更新记录模块、统计记录模块和输出记录模块。

采用字符用户界面,通过菜单选择相应的操作,直观且操作简单。

数据的存储选用数据文件方式;编辑平台选用MicrosoftVisualC++6.0。

所用到的知识点有:

三种基本程序结构,数组,函数,指针,结构体,文件操作和链表。

基本要求:

按照内容要求,设计完整的学生成绩管理系统。

要求调试通过,不存在漏洞,方便用户操作。

功能的实现上力求容错能力要强且提示信息完备。

 

完成期限:

2016年9月11日

指导教师签名:

杂志订阅管理系统

一、问题描述

杂志订阅用户的基本信息包括:

姓名、性别、地址、电话号码、杂志单价、订阅数、订阅的期限,设计一个杂志订阅系统对用户进行管理,其基本功能为:

(1)主函数提示用户选择功能:

输入、删除、浏览、查询

(2)数据添加模块

根据提示把新增订户信息写入订户信息数组中。

(3)数据输出

将所有用户的订阅信息输出。

(4)数据删除模块

采用基本的查找算法,查找订户信息文件,判断该条订户信息是否要删除并做出相应的操作。

(5)数据统计模块

对本期杂志订户数的统计,,输出订户名、订阅数、单价,并计算金额(单价*订阅数)。

可以定义变量统计订户数、订阅数和总金额,最后输出。

二、设计要求

1.界面清晰,美观大方。

2.要求使用菜单的形式描述功能项,菜单设计美观大方、实用,可仿照课程说明书模板或自行设计。

3.模块化程序设计:

要求在设计的过程中,按功能定义函数或书写多个文件,进行模块化设计,各个功能模块用函数的形式来实现。

4.程序以缩进格式书写,要求清晰、易懂。

5.各功能模块要求必须有准确描述函数功能的注释,重要语句最好也加上注释,以更好地让读者理解。

6.要求对2-3个重要功能模块进行描述。

7.课程设计题目选择要求一个班最多有两人可选择同一题目,但要求不得抄袭,最终每个人(即使题目相同)内容都是独立的。

8.课程设计至少包含5-10个功能模块,若题目中不够5-10个功能项,请自行设计功能项(5-10个功能项数目不同,得分也不同)。

9.可以选择老师提供的参考选题,也可以自选,如果自选,需要将自选题目的详细内容以及实现要求提供给老师,老师批准后方可采用。

10.要求利用结构化程序设计方法以及C的编程思想来完成系统的设计。

11.编辑平台选用MicrosoftVisualC++6.0。

三、分析与实现

本程序采用模块化设计,主函数清晰、共有六个功能模块,每个功能模块以函数的形式表示,实现了杂志订阅管理的六项功能。

具体实现如下:

(1)首先声明必要的变量及数据结构。

#include"stdio.h"

#include"string.h"

#include"stdlib.h"

//符号常量定义

typedefstructmsg{

charname[20];

charsex[10];

chardialnumber[11];

intcount;

floatprice;

floatmoney;

chardate[20];

charreaderaddr[50];

}msgnode;

(2)显示帮助界面函数

以菜单显示帮助用户选择功能选项,输入0-5以选择相应的选项,将选项值传回主调函数。

voidStart(){

printf("\n");

printf("\n");

printf("欢迎来到杂志订阅系统!

\n");

printf("\n");

printf("\n");

printf("\n");

}

voidTextOut(){

printf("\t\t*----------订户信息检查-------------0.\n\n");

printf("\t\t*----------订户信息添加-------------1.\n\n");

printf("\t\t*----------订户信息更新-------------2.\n\n");

printf("\t\t*----------订户信息输出-------------3.\n\n");

printf("\t\t*----------订户信息统计-------------4.\n\n");

printf("\t\t*----------退出-------------5.\n\n");

}

intCheckDateMon(char*date){

charchdate[3];

chdate[0]=date[5];

chdate[1]=date[6];

chdate[2]='\0';

returnatoi(chdate);

}

intCheckDateDay(char*date){

charchdate[3];

chdate[0]=date[8];

chdate[1]=date[9];

chdate[2]='\0';

returnatoi(chdate);

}

(3)录入每个学生的信息

依次输入每个订阅者的信息,数据信息以文件的形式存放,一条记录对应一个订户,由于信息有整形和字符型,所以应采取结构体数组来存放信息。

intAddReader()

{

FILE*fp;

msgnodead;

if((fp=fopen("MSG.txt","at"))==NULL){

printf("无法打开文件或找不到文件请检查.\n");

getch();

return0;

}

printf("输入开始.^_^\n");

printf("请输入名字:

^_^\n");

scanf("%s",ad.name);

printf("请输入性别:

^_^\n");

scanf("%s",ad.sex);

printf("请输入电话号码:

^_^\n");

scanf("%s",ad.dialnumber);

printf("请输入数量:

^_^\n");

scanf("%d",&ad.count);

printf("请输入价格:

^_^\n");

scanf("%f",&ad.price);

printf("请输入日期:

^_^\n");

scanf("%s",ad.date);

while(ad.date[4]!

='.'||ad.date[7]!

='.'||strlen(ad.date)!

=10

||CheckDateMon(ad.date)>=13||CheckDateDay(ad.date)>=32)

{

printf("格式不正确或不存在日期.\n");

printf("你输入的日期格式'YYYY.MM.DD'\n");

printf("请你再次输入日期:

^_^\n");

scanf("%s",ad.date);

}

printf("请你输入读者地址:

^_^\n");

scanf("%s",ad.readeraddr);

fprintf(fp,"%15s%8s%13s%7d%7.2f%10.2f%13s%-50s\n"

ad.name,ad.sex,ad.dialnumber,ad.count,ad.price,ad.count*ad.price,ad.date,ad.readeraddr);

fclose(fp);

return1;

}

intUpdateMsg(char*currdate)

{

msgnodecurrnode,movenode;

inti=0,j=0;

FILE*fp;

if((fp=fopen("MSG.txt","rt+"))==NULL)

{

printf("%s\n","无法打开文件或找不到文件请检查.");

return0;

}

i=ftell(fp);

fscanf(fp,"%s%s%s%d%f%f%s%s"

currnode.name,currnode.sex,currnode.dialnumber

&currnode.count,&currnode.price,&currnode.money,currnode.date,currnode.readeraddr);

j=ftell(fp);

j=j-i;

rewind(fp);

while(!

feof(fp))

{

fscanf(fp,"%s%s%s%d%f%f%s%s"

currnode.name,currnode.sex,currnode.dialnumber

&currnode.count,&currnode.price,&currnode.money,currnode.date,currnode.readeraddr);

if(feof(fp))

break;

if(strcmp(currdate,currnode.date)>0)

{

fseek(fp,-j,1);

fprintf(fp,"%15s%8s%13s%7d%7.2f%10.2f%13s%-50s"

"NULL","NULL","NULL",0

0.0,0.0,"9999.99.99","NULL");

fseek(fp,2L,1);

}

}

return1;

}

intOutputAll()

{

FILE*fp;

msgnodeoa;

intallcount=0;

floatallmoney=0;

if((fp=fopen("MSG.txt","rt"))==NULL){

printf("无法打开文件或找不到文件请检查.\n");

getch();

return0;

}

printf("%15s%8s%13s%7s%7s%10s%13s%-50s\n"

"姓名","性别","电话号码"

"数量","价格","总计","日期","地址");

while(!

feof(fp))

{

fscanf(fp,"%s%s%s%d%f%f%s%s"

oa.name,oa.sex,oa.dialnumber,&oa.count

&oa.price,&oa.money,oa.date,oa.readeraddr);

(4)计算每个订户的消费

订户的信息储存在结构体数组中,外循环用来控制信息控制。

if(feof(fp))

break;

allcount+=oa.count;

allmoney+=oa.money;

if(strcmp(oa.sex,"NULL"))

printf("%15s%8s%13s%7d%7.2f%10.2f%13s%-50s\n"

oa.name,oa.sex,oa.dialnumber,oa.count,oa.price,oa.money,oa.date,oa.readeraddr);

}

printf("%15s%8s%13s%7d%7.2f%10.2f%13s%-50s\n"

"heji","--","-----------",allcount,"----",allmoney,"2007.09.04","----");

return1;

}

intCheckReader(char*name)

{

FILE*fp;

inti,j;

charch;

msgnodecr;

if((fp=fopen("MSG.txt","rt"))==NULL)

{

printf("无法打开文件或找不到文件请检查.");

getch();

return0;

}

i=ftell(fp);

fscanf(fp,"%s%s%s%d%f%f%s%s"

cr.name,cr.sex,cr.dialnumber,&cr.count,&cr.price,&cr.money,cr.date,cr.readeraddr);

j=ftell(fp);

rewind(fp);

j=j-i;

while(!

feof(fp))

{

fscanf(fp,"%s%s%s%d%f%f%s%s",cr.name,cr.sex,cr.dialnumber,&cr.count,&cr.price,&cr.money,cr.date,cr.readeraddr);

i=ftell(fp);

if(!

strcmp(cr.name,name))

{

printf("您检查的读者在列表中.\n");

fseek(fp,-j,1);

fscanf(fp,"%s%s%s%d%f%f%s%s"

cr.name,cr.sex,cr.dialnumber,&cr.count

&cr.price,&cr.money,cr.date,cr.readeraddr);

if(feof(fp))

break;

printf("%15s%8s%13s%7d%7f%10f%13s%-50s\n"

cr.name,cr.sex,cr.dialnumber,cr.count

cr.price,cr.money,cr.date,cr.readeraddr);

return1;

}

}

}

intDisplayReader(char*date)

{

FILE*fp;

inti,j;

msgnodecr;

if((fp=fopen("MSG.txt","rt"))==NULL)

{

printf("无法打开文件或找不到文件请检查.");

getch();

return0;

}

while(!

feof(fp))

{

fscanf(fp,"%s%s%s%d%f%f%s%s"

cr.name,cr.sex,cr.dialnumber,&cr.count,&cr.price,&cr.money,cr.date,cr.readeraddr);

if(feof(fp))

break;

if(!

strcmp("9999.99.99",cr.date))

continue;

if(strcmp(date,cr.date)<0)

{

printf("%15s%8s%13s%7d%7f%10f%13s%-50s\n"

cr.name,cr.sex,cr.dialnumber,cr.count

cr.price,cr.money,cr.date,cr.readeraddr);

}

}

return1;

}

(5)查询订户信息模块

需要根据现在日期删除已经过期订户的信息,先设计一个函数用来输入各用户的截止日期。

main()

{

charstr[30];

intch;

Start();

TextOut();

scanf("%d",&ch);

while(ch!

=5)

{

if(ch==0)

{

printf("请输入你想要的名称索引:

^_^\n");

scanf("%s",str);

if(CheckReader(str))

printf("你已经成功的索引了读者!

\n");

TextOut();

scanf("%d",&ch);

continue;

}

if(ch==1)

{

if(AddReader())

printf("你成功的添加了读者!

\n");

TextOut();

scanf("%d",&ch);

continue;

}

if(ch==2)

{

printf("请输入当前日期:

^_^\n");

scanf("%s",str);

if(UpdateMsg(str))

printf("你成功的更新了列表!

\n");

TextOut();

scanf("%d",&ch);

continue;

}

if(ch==3)

{

if(OutputAll())

printf("你成功的输出了列表!

\n");

TextOut();

scanf("%d",&ch);

continue;

}

if(ch==4){

 

printf("请输入你想显示的月份:

^_^\n");

scanf("%s",str);

if(DisplayReader(str))

printf("你这个月成功成为读者!

\n");

TextOut();

scanf("%d",&ch);

continue;

}

elsereturn;

}

}

四、运行与测试

2,增加订户模块

 

 

 

3.查询用户

4.删除过期用户

5.输出所有信息

 

6.统计本月订户

 

五、总结与思考

通过这次编程实践,巩固了C语言的知识,对C语言的内容有了深入的理解,尤其对系统的管理知识加深理解。

计算机语言只有通过不断的实践才能掌握和熟练运用,所以我们的课程设计非常有必要。

学习之后进行课程设计是对我们学习的检验,也是我们学习C语言的一种提升。

通过这次课程设计,我巩固了C语言的语法和一些函数,特别是对系统管理的函数,领悟了模块设计的基本思想。

课程设计是一个很好的提高我们专业编程水平的方法,让我们充分了解我们自己的水平,自主学习一些我们所短缺的知识。

主动督促我们去补充我们的知识漏洞。

这次实习,我从中不仅学习到了关于C语言的知识,同时也感受到了自己成功编写出程序的喜悦。

虽然这只是一个比较简单的程序,但是这是我通过自己学习到的知识完成的,期间也有过犯错的念头,但是后来还是改正了。

学习和练习C程序的设计是一个漫长的过程,这几天的学习只是让我们接触到了C语言程序设计,只是肤浅的了解了它的一些基本操作,我们学习C语言需要不断的练习积累才能使我们的水平提高,虽然学习C语言有时很枯燥,我们需要认真的对待它,虽然编写一个程序需要很长的时间,因此我们需要耐心,最重要的是,我们需要独立的思考和编写程序。

这样才能提高我们的C语言设计的能力,更好的运用它解决一些问题

 

附录:

杂志订阅管理系统

编程实现如下菜单驱动的学生成绩管理系统:

*----------订户信息检查-------------0.

*----------订户信息添加-------------1.

*----------订户信息更新-------------2.

*----------订户信息输出-------------3.

*----------订户信息统计-------------4.

*----------退出-------------5.

 

源代码

#include"stdio.h"

#include"string.h"

#include"stdlib.h"

typedefstructmsg{

charname[20];

charsex[10];

chardialnumber[11];

intcount;

floatprice;

floatmoney;

chardate[20];

charreaderaddr[50];

}msgnode;

voidStart(){

printf("\n");

printf("\n");

printf("欢迎来到杂志订阅系统!

\n");

printf("\n");

printf("\n");

printf("\n");

}

voidTextOut(){

printf("\t\t*----------订户信息检查-------------0.\n\n");

printf("\t\t*----------订户信息添加-------------1.\n\n");

printf("\t\t*----------订户信息更新-------------2.\n\n");

printf("\t\t*----------订户信息输出-------------3.\n\n");

printf("\t\t*----------订户信息统计-------------4.\n\n");

printf("\t\t*----------退出-------------5.\n\n");

}

intCheckDateMon(char*date){

charchdate[3];

chdate[0]=date[5];

chdate[1]=date[6];

chdate[2]='\0';

returnatoi(chdate);

}

intCheckDateDay(char*date){

charchdate[3];

chdate[0]=date[8];

chdate[1]=date[9];

chdate[2]='\0';

returnatoi(chdate);

}

intAddReader(){

FILE*fp;

msgnodead;

if((fp=fopen("MSG.txt","at"))==NULL){

printf("无法打开文件或找不到文件请检查.\n");

getch();

return0;

}

printf("输入开始.^_^\n");

printf("请输入名字:

^_^\n");

scanf("%s",ad.name);

printf("请输入性别:

^_^\n");

scanf("%s",ad.sex

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1