1、C语言课程设计报告对杂志的订阅进行管理中 国 地 质 大 学本科生课程论文封面课程名称 计算机高级语言课程设计(C)教师姓名 zzzzzz 本科生姓名 zzzzzz 本科生学号 zzzzzzzzzzzz 本科生专业 zzzzzzzzzzzz 所在院系 地球科学学院 类别: C. 本科生 日期: 2014-1-12 课程设计评语对课程论文的评语:平时成绩:课程论文成绩:总 成 绩:评阅人签名:注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。1题目要求 使用计算机对一种杂志的订阅进行管理,该杂志拥有最多订户不超过1
2、0人,每个订户的 信息包括:姓名、性别、地址、电话号码、杂志单价、订阅数、订阅的期限(至*年*月). 现要求用菜单选择并完成下述的功能:(1)增加新订户,即将订户的全部信息输入到文件中。(2)根据当天的日期对订户文件进行查询,删除已到期的订户记录。(3)统计本期杂志订户数并打印运算结果。本期订户信息表定户名 订阅数 单价 金额李平 2 5.5 11.0黄海 1 5.5 5.5合计 3 5.5 16.52需求分析本题目是对杂志的订阅进行管理。首先,将杂志订阅信息作出有利的整理和分类,利用我们设计的程序进行规划和整理,接下来,对已存入的信息数据进行调用,修改及删除。最后得到数据库的完善。这就是我们
3、对此数据的需求分析。3总体设计图1.系统的总体流程图3详细设计杂志订阅管理系统源程序代码/*杂志订阅管理软件*(1)增加新订户,即将订户的全部信息输入到文件中。 要求:使用计算机对一种杂志进行订阅管理,该杂志拥有最多订户不超过10人, 每个订户的信息包括:姓名、性别、地址、电话号码、杂志单价、订阅数、订阅期限、(至*年*月)。*(2)根据当天的日期对订户文件进行查询,删除已到期的订户记录。*(3)统计本期杂志订户数并打印运算结果*/#include #include #include #define max 10 /最多订户不超过10人/存储每个订户的信息的数据结构 struct magazi
4、ne char name6; char sex3; char addr13; char phone_number12; char unit_price5; char amount4; char time_limit9; ordermax;void menu();void add();void search();void statistic();int load_record();void input(int i);void save(int n);void print_one(int i);void print_n(int n);int main() FILE *fp; fp = fopen(
5、record.txt,w); fclose(fp); menu(); return 0; /主菜单,与用户进行交互 void menu() int n,w; do printf(tt*nnn); printf(tt 欢迎来到杂志订阅系统 nnn); printf(tt*nnn); printf(tt*nn); printf(tt 1:订户信息添加 n); printf(tt 2:订户信息浏览 n); printf(tt 3:订户信息统计 n); printf(tt 4:退出系统 nn); printf(tt*nn); printf(选择您的操作(1-4): bb); scanf(%d,&n);
6、 if(n 4) w = 1; getchar(); else w = 0; while(w); switch(n) case 1:add();break; case 2:search();break; case 3:statistic();break; case 4:exit(0);break; /增加新订户,即将订户的全部信息输入到文件中 void add() printf(addn); int t,m,i; t = load_record(); /加载文件中已有用户的个数 printf(您希望添加几组订户的信息?n); printf(请输入数字: bbb); scanf(%d,&m);
7、for(i = 0;i m;i +) printf(n请输入第%d组订户记录!n,i+1); input(t+i); /读取第t+i个用户的数据 save(t+m); /把新用户的数据存储到文件中 menu(); void input(int i) printf(调用了input函数n); printf(请输入:n姓名 性别 地址 电话号码 杂志单价 订阅数 订阅期限n); scanf( %s%s%s%s%s%s%s,&orderi.name,&orderi.sex, &orderi.addr,&orderi.phone_number,&orderi.unit_price,&orderi.am
8、ount,&orderi.time_limit); /根据当天的日期对订户文件进行查询,删除已到期的订户记录 void search() printf(searchn); FILE* fp; char date9,str2; int t,i,sum = 0; t = load_record(); printf(请输入日期: bbbbbbbbb); scanf( %s,date); printf(n); if(fp = fopen(record.txt,w) = NULL) printf(文件无法打开!nn); exit(0); printf(n); for(i=0;it;i+) if(strc
9、mp(orderi.time_limit,date) 0) sum +; printf(n); print_one(i); printf(nn此用户信息已过期!); printf(nn您希望删除此条信息吗?(Y或N): bb); scanf( %s,str); if(strcmp(str,Y) = 0 | strcmp(str,y) = 0) continue; fwrite(&orderi,sizeof(struct magazine),1,fp); fclose(fp); if(sum = 0) printf(找不到您要的信息!nn); printf(nnn任意键返回上一步.nn); ge
10、tchar(); getchar(); menu(); void print_one(int i) printf(%-10s %-5s %-10s %-11s %-4s %3s %-10snn, orderi.name,orderi.sex,orderi.addr,orderi.phone_number,orderi.unit_price,orderi.amount,orderi.time_limit); /统计本期杂志订户数并打印运算结果 void statistic() printf(statisticn); int t; t = load_record(); print_n(t); pr
11、intf(nnn任意键返回.nn); getchar(); getchar(); menu(); void print_n(int n) int j; printf(姓名 性别 地址 电话号码 杂志单价 订阅数 订阅期限nn); for(j=0;jn;j+) if(j+1) % 11 = 0) printf(nn任意键继续.); getchar(); puts(nn); print_one(j); int load_record() printf(load_record()n); FILE* fp; if(fp = fopen(record.txt,r) = NULL) printf(n 文件
12、无法打开 n); exit(0); int i; for(i=0;!feof(fp);i+) fread(&orderi,sizeof(struct magazine),1,fp); fclose(fp); return (i-1); void save(int n) printf(调用了save函数n); FILE* fp; int i; fp = fopen(record.txt,w); if(fp = NULL) printf(n 文件无法打开!n); exit(0); for(i=0;in;i+) fwrite(&orderi,sizeof(struct magazine),1,fp)
13、; fclose(fp); 各模块的功能和实现1.菜单模块:显示杂志订阅管理系统的主菜单,供用户选择所需的功能,通过自己定义的void menu()函数来实现。2.输入模块:输入订户的姓名以及其它的一些职工的相关信息,通过自己定义的void input()函数来实现。3.保存模块:将内存中订户的信息输出到磁盘文件中,可以通过自己定义的void save(int)函数来实现。4.浏览模块:浏览所有职工的相关信息,通过自己定义的void display()函数来实现。5.删除模块:删除需要删除的订户的所有信息,通过自己定义的void del()函数来实现。6.添加模块:添加需要添加的订户的相关信息
14、,通过自己定义的void add()函数来实现。7.按杂志订阅期限查询模块:可以按志订阅期限来查询职工的相关信息,通过自己定义的void search_num()函数来实现。8.修改模块:可以修改需要修改的订户的相关信息,通过自己定义的void modify()函数 来实现。9.退出系统模块:退出杂志订阅信息管理系统,通过头文件windows.h中的exit(0)函数来实现。5上机操作(数据源说明)(操作步骤:编译、链接和运行)(运行结果:增加运行效果界面,包括主界面、各功能模块的运行界面等)使用说明及运行实例1.运行程序,进入职工信息管理系统的主菜单:图1:进入主菜单界面2.输入数字“1”进
15、行订户信息添加:图2:订户信息添加图3:订户信息添加4.输入“2”浏览订户信息:图4:浏览订户信息5.输入“3”进行订户信息统计:图5:进行订户信息统计6.进入主菜单输入”4”退出职工信息管理系统。6总结通过这次课程设计,增加了我们对软件技术的了解,虽然还不明确软件技术包含的具体内容,但从C语言课程设计这门课程开始,已发现程序设计的好处,它对我们数学的学习也有很大的帮助。在学习C语言课程设计的过程中也学到和巩固了许多计算机应用基础知识,对计算机的机体也有了一个较为详细的了解。在具体操作中对这学期所学的C语言课程设计的理论知识得到巩固加强,达到实训的目的,也发现自己的不足之处,同时体会到C语言具
16、有的语句简洁,使用灵活,执行效率高等特点。发现上机操作的重要作用,特别是对数组和循环有了深刻的理解。通过实际操作,学会 C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。 由于本课题中的许多知识点都没有学过都要靠自己到课外的资料中去查找。在用的时候难免出现这样那样的错误。如开始设计出来的菜单不是预想的那样,而是总个窗中出现混乱。解决的这个问题的办法是调整。一个系统的菜单和提示信息非常重要。如果没有这些用户根本不知道怎么用你设计的这个系统。在设计的调试过程中也无法顺利的完成调试工作。有了一个清晰简单的菜单和一些提示信息这后,调试过程完成的非常顺利。回顾
17、起此次课程设计,至今我们仍感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在这些日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体通过这次
18、课程设计之后,一定把以前所学过的知识本次课程设计结束了,对于我们的影响很大。我们通过这次实践学到了许多知识。学到了设计一个简单的系统。要注意哪些方面。也使我们知道自己哪些方面做得还不够。但我们总结出了一点点的经验如下:要对系统的功能和要求做出详细的分析,并合理分解任务。 把分解出来的子任务,做给一个相对独立的模块。在设计一个模块之前,要简单构想一下总界面的显视情况。针对构想出来的界面进行程序的编写。7致谢 本次实习让我更加深刻的理解了c语言这门课,对于今后的应用会有帮助。感谢老师的指导和帮助,让我在这七天时间内丰富了知识,掌握了所学。参考文献1 谭浩强. C程序设计(第三版)M. 北京: 清华大学出版社, 2005.2 张冬梅, 刘远兴, 陈晶, 等. 基于PBL的C语言课程设计及学习指导M. 北京: 清华大学出版社, 2011.3
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1