C语言课程设计 杂志阅读管理软件.docx
- 文档编号:5842449
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:17
- 大小:116.08KB
C语言课程设计 杂志阅读管理软件.docx
《C语言课程设计 杂志阅读管理软件.docx》由会员分享,可在线阅读,更多相关《C语言课程设计 杂志阅读管理软件.docx(17页珍藏版)》请在冰豆网上搜索。
C语言课程设计杂志阅读管理软件
C语言课程设计
题目名称:
姓名:
学号:
班级序号:
指导老师:
前言*******************************************2
设计思路及要求********************************3
1.程序设计思路****************************3
2.程序设计要求****************************3
程序总体设计流程图***************************5
功能模块的调试和测试**************************5
1.增加订户模块****************************6
2.删除过期订户****************************7
3.输出所有信息****************************8
4.统计本月订户****************************9
5.查询用户********************************10
程序设计的原代码*****************************11
结束语***************************************18
前言
C语言是一种计算机程序设计语言。
它既有高级语言的特点,又具有汇编语言的特点。
它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
C语言是一种结构化语言。
它层次清晰,便于按模块化方式组织程序,易于调试和维护。
C语言的表现能力和处理能力极强。
它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。
它还可以直接访问内存的物理地址,进行位(bit)一级的操作。
因此,它的应用范围广泛。
C语言在很多方面都可以用,不仅仅是在软件开发上,各类科研都是需要用到C语言的。
具体应用比如我是学硬件的,单片机以及嵌入式系统都可以用C来开发。
C语言发展如此迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。
许多著名的系统软件,如DBASEⅢPLUS、DBASEⅣ都是由C语言编写的。
用C语言加上一些汇编语言子程序,就更能显示C语言的优势了,像PC-DOS、WORDSTAR等就是用这种方法编写的。
在信息化迅速更新的今天,计算机已经普及,而C语言为计算机的更新换代提供了很好的基础平台,作为当代的大学生学好C语言是很重要的。
为此学校为我们提供了提高C语言专业知识的载体,为我们开设了C语言上机实习课程。
设计思路及要求
程序设计思路
C语言程序设计主要是利用C语言的设计操作能力设计出一个杂志订阅管理系统,一个完整的杂志订阅管理软件至少应该具有:
(1)能够提供文件的储存、输入、输出、删除等操作;
(2)能够提供文件的添加操作,增加新用户等操作;
(3)能够提供文件的查询,查找等操作;
(4)能够通过文件的删除操作纪实删除已到期的订户记录;
(5)能够提供统计和显示操作统计本期杂志本期用户数并打印运算结果;
(6)另外文件还要具备提供键盘式选择菜单以实现功能选择.
程序设计要求
C语言程序的设计需要明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识,提高学生用高级语言进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平,并能够初步了解软件开发的一般方法和步骤,提高撰写技术文档的能力。
而对于本次程序设计的要求则是:
使用计算机对一种杂志的订阅进行管理,该杂
志拥有的最多用户不能超过10人,每个订户的信息包括:
姓名,性别,地址,电话号码,杂志单价,订阅数,订阅的期限(至**年**月)。
要求用菜单选择并完成下述功能:
(1)增加新用户,即将订户的全部信息输入的文件中;
(2)根据当天的日期对订户文件进行查询,删除已到期的订户记录:
(3)统计本期杂志订户数并打印运算结果:
本期订户信息表
订户名订阅数单价金额
李平25.511.0
黄海15.55.5
合计31.016.5
程序总体设计流程图
功能模块的调试和测试
1.增加订户模块
2.删除过期订户
在上图中我假设当前时间为2008\08\08对文件中订户信息进行更新。
下面来看看保存有订户信息的文本文件中的数据情况。
在上图中我们可以看出所有的到期时间在2008\08\08之前的订户的信息都被一段特殊的信息所代替。
3.输出所有信息
在上图中我输出了在MSG.txt中的所有订户的信息。
4.统计本月订户
上图中假设这个月是2008\08\08。
注意这个功能与删除过期订户的差异,统计功能只是输出文件中没有过期的订户,而没有在文件中将过期的订户删除,而删除过期订户在文件中将过期的订户删除。
5.查询用户
以上是查询姓名是"xiao"的订户的信息。
程序设计的原代码
#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("******WRITENBYDAVIDX.H.OFCUG******\n");
printf("************\n");
printf("************\n");
printf("******DAVIDX.H.ALLRIGHTSRESERVED******\n");
printf("****************************************************************************\n");
}
voidTextOut(){
printf("\t\twannacheckmessage,press------------------0.\n\n");
printf("\t\twannaADDanewreader,press---------------1.\n\n");
printf("\t\twannaupdatethemessagetable,press-------2.\n\n");
printf("\t\twannaoutputallthemessage,press--------3.\n\n");
printf("\t\twannadisplayreadersthismonth.,press---4.\n\n");
printf("\t\twannaexit,press---------------------------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("CannotopenthefileorCannotfindthefile.pleasecheckout.\n");
getch();
return0;
}
printf("inputstart.^_^\n");
printf("pleaseinputthename:
^_^\n");
scanf("%s",ad.name);
printf("pleaseinputthesex[male/female]:
^_^\n");
scanf("%s",ad.sex);
printf("pleaseinputthedialnumber:
^_^\n");
scanf("%s",ad.dialnumber);
printf("pleaseinputthecount:
^_^\n");
scanf("%d",&ad.count);
printf("pleaseinputtheprice:
^_^\n");
scanf("%f",&ad.price);
printf("pleaseinputthedate:
^_^\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("theformatisnotrightorthedateisnotexisted.\n");
printf("Youshouldinputthedatelikethis'YYYY.MM.DD'\n");
printf("pleaseinputthedateagain:
^_^\n");
scanf("%s",ad.date);
}
printf("pleaseinputtheaddressofreader:
^_^\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","CannotopenthefileorCannotfindthefile.pleasecheckout.");
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("CannotopenthefileorCannotfindthefile.pleasecheckout.\n");
getch();
return0;
}
printf("%15s%8s%13s%7s%7s%10s%13s%-50s\n"
"readername","readsex","number"
"count","price","moneysum","date","readeraddress");
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);
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("CannotopenthefileorCannotfindthefile.pleasecheckout.");
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("Thereaderyouarecheckingisexistedinthelist.\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("CannotopenthefileorCannotfindthefile.pleasecheckout.");
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;
}
main(){
charstr[30];
intch;
Start();
TextOut();
scanf("%d",&ch);
while(ch!
=5){
if(ch==0){
printf("Pleaseinputthenameyouwannaindex:
^_^\n");
scanf("%s",str);
if(CheckReader(str))
printf("Youhavesuccessfullyindexthereader!
\n");
TextOut();
scanf("%d",&ch);
continue;
}
if(ch==1){
if(AddReader())
printf("Youhavesuccessfullyaddareader!
\n");
TextOut();
scanf("%d",&ch);
continue;
}
if(ch==2){
printf("Pleaseinputthecurrentdate:
^_^\n");
scanf("%s",str);
if(UpdateMsg(str))
printf("Youhavesuccessfullyupdatethelist!
\n");
TextOut();
scanf("%d",&ch);
continue;
}
if(ch==3){
if(OutputAll())
printf("Youhavesuccessfullyoutputthelist!
\n");
TextOut();
scanf("%d",&ch);
continue;
}
if(ch==4){
printf("Pleaseinputthemonthyouwannadisplay:
^_^\n");
scanf("%s",str);
if(DisplayReader(str))
printf("Youhavesuccessfullyallthereadersthismonth!
\n");
TextOut();
scanf("%d",&ch);
continue;
}
elsereturn;
}
}
结束语
通过近八天的C语言上机实习,我基本掌握了程序设计的基本方法和步骤。
程序设计的基础就是基本的C语言知识,无论设计什么样的程序最重要的就是要有自己的设计思路,设计理念,设计过程中当然不能避免会出现漏洞,这需要我们利用所学到的C语言知识大胆的尝试,只有这样我们才能在错误中不断的进步。
学习和练习C程序的设计是一个漫长的过程,这需要我们要有持之以恒的学习态度和不懈的努力。
在当今信息社会高度发展的今天,C语言的重要性是不言而喻的,而实践设计则是巩固C语言的重要渠道之一。
学好C语言无论是对自身素质的提高还是以后走向工作岗位都是很重要的。
在这近八天的时间里,我学到了很多知识,这些少不了老师的辛苦指导,同学之间的帮助,相互鼓励,以及相互探讨,这些给了我极大的信心和跨越式的进步。
在此感谢老师的辛苦指导和同学们的帮助,同时还要感谢为教育事业做出贡献的工作人员!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言课程设计 杂志阅读管理软件 语言 课程设计 杂志 阅读 管理软件
![提示](https://static.bdocx.com/images/bang_tan.gif)