完整word版杂志订阅管理系统_第1页
完整word版杂志订阅管理系统_第2页
完整word版杂志订阅管理系统_第3页
完整word版杂志订阅管理系统_第4页
完整word版杂志订阅管理系统_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言图书信息管理系统课程设计题目:设计者:所属院系:专业:班级:学口号:工程学院安全工程055101指导教师:吴湘宁C语言课程设计报告杂志订阅管理软件要求使用计算机对一种杂志的订阅进行管理,该杂志拥有的最多订户 不超过10人,每个订户的信息包括:姓名,性别,地址,电话号码,杂志单 价,订阅数,订阅的期限(至XX年XX月).现在要求用菜单选择并完成下述的功能:(1)增加新订户,即将订户的全部信息输入到文件中;根据当天的日期对订户文件进行查询,删除已经到期的订户记(3)统计本期杂志的订户数并打印运算结果;本期订户信息表:订户名订阅数单价金额李平25.511.0黄海15.55.5合计31.016.

2、5.需求分析根据题目要求,由于杂志的订户信息要用文件存储,所以要提供文件的输入输出操作;提供文件的添加操作增加新订户;对订户文件的查阅,提供文件的查找操作;通过文件的删除操作删除已经到期的订户记录;提供统计和显示操作统计本期杂志订户数并打印运算结果 另外还要提供键盘式选择菜单以实现功能选择三.总体设计经过分析整个系统,根据上面的需求分析,可以将整个系统的设计分为如下三大模块:增加新订户,查询,统计.杂志订阅管理软件增加统计查询四.详细设计1.主函数.主函数只提供输入,处理和输出部分的函数调用.每个功能模块用菜单方式选择.设置一个menu()函数,再用主函数调用 menu()函数,使系统执行完每

3、部分功能模块后能够方便返回到系统界面流程图NY程序void mai n()FILE *fp;fp=fo pen (record.txt,w);/*建立一个record.txt记事本*/fclose(fp);menu();void menu()int n,w;/*n表示菜单选择数字*/doprin tf(tt A-A A-A A-A A-A A-A A-A A-A A-A A-A A-A A-A A-A 门门门);prin tf(tt欢迎来到杂志订阅系统!nnrr);printf(tt 7 7 7 7 7 7 7 7 八-八八-八 W);prin tf(nntt心A-A A-A A-A A-A心

4、心心心心心心门门);prin tf(tt1:订户信息添加n);prin tf(tt2:订户信息浏览n);prin tf(tt3:订户信息统计n);prin tf(tt A-A A-A A-A A-A A-A A-A A-A A-A A-A A-A A-A A-A 门门);printf(选择您的操作(1-3): bb);sea nf(%d,&n);if(n 3)w=1;getcharO;else w=0;While(w=1);/*选择功能*/switch( n)case 1:add();break;/*增加新订户记录*/case 2:search();break; /*查找过期的订户记录并删除*

5、/*退出*/case3:statistic();break; /* 统计*/case4:exit();2.各功能模块设计(1) 增加新订户模块数据结构单独看各个信息,姓名,性别和地址是字符型的,电话号码,订阅数和订阅期限是整型的,杂志单价是实数型的.数据信息以文件的形式存放,一条记录对应一个订户.由于信息有整型,实数型和字符型,所以应采用结构体数组来存放信息.如下:struct magaz inecharn ame6;charsex2;charaddr13;charphone_nu mber11;charunit_p rice5;charamoun t4;chartime_limit8;由于题

6、目中明确订户最多不超过10人,所以这里定义reader10就够了 .使用宏定义倂define N 2)方便改变每次要输入新订户的个流程图输入N个订户的信息将订户信息输入到record10建立并打开文件record.txt【程序】void add()int t,i,m;t=load_record();printf(您希望添加几组订户的信息?n);printf(请输入数字:bbb);sca nf(%d,&m);for(i=0;im;i+)input(t+i);/*调用输入函数*/printf(”n请输入第%d组订户记录! n”,i+1);menu();/*返回登陆界面*/void inpu t(i

7、 nt i)printf(请输入:n姓名 性别 地址 电话号码杂志单价 订阅数订阅期限n);sca nf(%s%s%s%s%s%s%s,&orderi. name,&orderi.sex, &orderi .addr, &o rderi. phone_nu mber, &o rderi. unit_p rice,&o rderi.am ount,&o rderi.time_limit);(2) 查询订户信息模块【需求分析】需要根据现在日期删除已经过期订户的信息。 先设计个deadline ()函数用来输入各用户的截止日期。在query ()函数中调用该函数与现在日期进行比较。【流程图】【程序】

8、void search。FILE *fp;char date11,str2;int t,i,sum=0;t=load_record();printf(请输入日期:bbbbbbbbb);sca nf(%s,date);/*以只写方式打开*/prin tf(n);if(fp=fo pen( record.txt,w)=NULL) prin tf(n);printf(对不起,文件打不开! nn);for(i=0;it;i+)if(strc mp (orderi.time_limit,date)0) sum+;prin tf(n);printfon e(i);/*把符合条件的记录显示出来*/print

9、f(nn此订户信息已过期!);printf(nn您希望删除此条信息吗?( Y或 N )bb);sca nf(%s,str);if(strcm p( str, Y )=0|strcm p( str,y)=0) con ti nue;fwrite (&o rderi,sizeof(struct magaz in e),1,f p);fclose(fp);if(sum=0)rH步menu();(3) 统计信息并输出【分析】在此另外建立一个新的结构体数组P【10】,将文件printf(nnn 任意键返回 nn);getcharO;reader.Txt中的信息输入到数组中,读取一次count增加一,以统

10、计订户总数。【流程图】结束【程序】void t;t=load_record();pnntf_n( t);menu();void printf_one(int i)/*显示一个仪器记录的函数*/prin tf(%-10s%-5s %-10s %-11s %-4s %-3s %-10s nn.orderi. name,orderi.sex, orderi.addr,orderi .phone_nu mber,orderi. unit_p rice, orderi.am ount, &orderi.time_limit);void p ri ntf_n (i nt n)/

11、*显示n个仪器记录的函数*/int j;printf(姓名 性别 地址 电话号码 杂志单价 订阅数 订阅期限nn);for(j=0;jesktop,Deb u-X;=欢迎来到杂志订阅系统!尺A_A=_聖0 一一龙 订订订A几12 J选择您的操作】(2) 输入1,进入增加新订户界面。输入信息并显示如下:if C;UseridellDesktopDebugSSixT.eKe欢迎来到杂志订阅系统!孫训统 自j自S自3 A 信信亠信木_ HHR- ttt选择您的操作您希S添旭几组订户的信息?1撅入第i组订户记录!请输人;址名性别地址电话号码杂志单价订阅数订阅期限 圭平男 CU3 1234t7 S.G2

12、2010-02-01J(3) 输入2进入查询模块,输入日期可以删除已经过期订户信息,显示已过期订户信息如下:冋C:Usersde llDe s kto pDeb u*自自4 A TTTA flflfl _ :A 12 32120110261李平男cug cusf1235675-522砒-黄海此订户信息已过期!您希望删準此条信息吗?宀或细,(4) 输入3,进入统计界面,删除过期用户显示订户及其信息如下:I *C:Use ride I IVDeskto pVDebu gK fKx exe *欢迎来到杂志订阅系统!息自-J A兰豆亘-一文户户户木tttA12 3码杂志单价订阅数订阅期限董海男hmKi

13、 hzkj1Z3M765232012-聊-黃悔半:六,实习心得由于我大一时学过VFP所以心里总是觉得课程设计是件很简单的事情,可是当我拿上题目时才发现事情并非我想的那样,虽然 题目差不多可是做法却大相径庭,用C语言做程序需要很强的逻辑思 维,只有有了清晰的思路才能做出好的程序。 一开始拿上题目时并不 知道从何下手,所以有了偷懒的念头,拿了以前人家编好的程序,可 是运行时发现有很多问题,后来根据老师给的例题,自己又认真思考 了一下午发现其实并没有自己想的那么难, 后来通过自己的努力终于 写出了一套完整的程序,虽然期间遇到许多困难,但在老师的细心讲 解下都一一解决了。这次实习,我从中不仅学习到了关

14、于C语言的知识,同时也感受 到了自己成功编写出程序的喜悦。虽然这只是一个比较简单的程序, 但是这是我通过自己学习到的知识完成的,期间也有过犯错的念头, 但是后来还是改正了。学习和练习C程序的设计是一个漫长的过程,这几天的学习只是 让我们接触到了 C语言程序设计,只是肤浅的了解了它的一些基本操作,我们学习C语言需要不断的练习积累才能使我们的水平提高, 虽 然学习C语言有时很枯燥,我们需要认真的对待它,虽然编写一个程 序需要很长的时间,因此我们需要耐心,最重要的是,我们需要独立 的思考和编写程序。这样才能提高我们的C语言设计的能力,更好的 运用它解决一些问题。附录 源代码#i ncludevstd

15、io.h #i ncludevstri ng.h #defi ne max 10 struct magaz ine charn ame6;charsex2;charaddr13;charphone_nu mber11;charunit_p rice5;charamoun t4;char ordermax;time_limit8;void save(i nt n);int load_record(); void searchO; void pnntf_n (i nt n); void pnntf_on e(i nt i); void inpu t(i nt i); void statistic(

16、); void add(); void menu();/*添加模块*/void add()int t,i,m; t=load_record(); printf(您希望添加几组订户的信息?n); printf(请输入数字:bbb); sca nf(%d,&m);for(i=0;im;i+)printf(n请输入第%d组订户记录! n,i+1); inpu t(t+i);save(t+m);menu();void inpu t(i nt i)printf(请输入:n姓名性别地址电话号码n);sca nf(%s%s%s%s%s%s%s, & orderi. name,/*调用输入函数*/*调用保存函

17、数 保存t+m组数据*/*返回登陆界面*/杂志单价 订阅数 订阅期限&orderi. phone_nu mber,& orderi.time_limit); & orderi.u ni t_price,& orderi.sex,&orderi.addr,& orderi.am ount,/*查询模块*/void search()FILE *fp;char date11,str2; int t,i,sum=0; t=load_record(); printf(请输入日期:bbbbbbbbb);sea nf(%s,date);prin tf(n);/*以只写方式打开*/if(fp=fo pen(

18、record.txt,w)=NULL) printf(对不起,文件打不开!nn);prin tf(n);for(i=0;it;i+)if(strc mp (orderi.time_limit,date)vO) sum+;prin tf(n);printf_one(i);/*把符合条件的记录显示出来*/printf(nn此订户信息已过期!);printf(nn您希望删除此条信息吗?( Y或 N)回b);sca nf(%s,str);if(strc mp (str,Y)=0|strc mp (str,y)=0)con ti nue;fwrite(&orderi,sizeof(struct maga

19、z in e),1,fp);fclose(fp);if(sum=0)printf(对不起,找不到您要的信息!nn);printf(nnn任意键返回上一步n);getchar();menu();/*统计模块*/void statistic()int t;t=load_record();pnntf_n( t);printf(nnn 任意键返回 nn); getcharO;menu();/*显示一个仪器记录的函数*/void pnntf_on e(i nt i) printf(%-10s %-5s %-10s %-11s %-4s %-3s %-10snn, , orderi.

20、sex, orderi.addr, orderi. phone_nu mber, orderi.u nit_p rice, orderi.am ount, & orderi.time_limit);void printf(i nt n) int j;printf(姓名性别地址 for(j=0;j n;j+) if(j+1)%10=0) /*显示n个仪器记录的函数*/电话号码 杂志单价 订阅数 订阅期限nn);/*控制显示,每屏显示10行*/printf(nn 任意键继续); getchar(); p uts(nn);/*调用显示一个仪器记录的函数*/ pnntf_on e(j);/*公共函数*

21、/int load_record()/*加载仪器信息并计算记录仪器个数的函数*/FILE *fp;int i;/*以只读方式打开*/if(fp=fo pen (record.txt,广)=NULL)printf(n文件无法打开n);for(i=0;!feof(fp);i+)/*从文件中读入数据并保存在结构体数组中*/fread(&orderi,sizeof(struct magaz in e),1,fp);fclose(fp);return(i-1);void save(int n)/*n表示保存n组数据,m表示保存在哪个文件夹里*/FILE *fp;int i;fp=fopen(record.txt,); /* 以只写方式打开 */if(fp=NULL)printf(n文件无法打开n);for(i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论