杂志订阅3 课程设计报告.docx

上传人:小飞机 文档编号:3588481 上传时间:2023-03-14 格式:DOCX 页数:23 大小:46.05KB
返回 下载 相关 举报
杂志订阅3 课程设计报告.docx_第1页
第1页 / 共23页
杂志订阅3 课程设计报告.docx_第2页
第2页 / 共23页
杂志订阅3 课程设计报告.docx_第3页
第3页 / 共23页
杂志订阅3 课程设计报告.docx_第4页
第4页 / 共23页
杂志订阅3 课程设计报告.docx_第5页
第5页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《杂志订阅3 课程设计报告.docx》由会员分享,可在线阅读,更多相关《杂志订阅3 课程设计报告.docx(23页珍藏版)》请在三一办公上搜索。

1、杂志订阅3 课程设计报告 测控技术与仪器 专业 课程设计题单 班级 学号 姓名 课程名称 计算机课程设计 课 题 杂志订阅管理系统 设计要求 分组后,每组抽取一个题目,每人完成该题目 的一个功能模块的设计; 锯齿型书写格式,菜单式界面 ; 必须上机调试通过; 每人单独完成一份完整的课程设计报告。 课 题 发 给 日 期 课程设计完成日期 指 导 教 师 评语: 1 计算机课程设计细则 一、设计要求: 1、分组后,每组抽取一个题目,每人完成该题目的一个功能模块的设计。 2、模块化程序设计,锯齿型书写格式。 3、输出要求: 1) 应用程序正常运行后,要在屏幕上显示一个文字菜单;2) 要求用户输入数

2、据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式等;3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。 4、必须上机调试通过。 二、设计报告格式: 写设计报告,内容包括: 1、题目 2、计算机课程设计细则 3、前言,需求分析 4、概要设计 5、详细设计 6、源程序清单和执行结果:清单中应有足够的注释 7、用户使用说明 8、调试与测试:调试方法,测试结果及采取的解决措施的分析与讨论。 9、附录或参考资料 三、检查要求: 1、每个人必须有可运行的程序 2、每个人必须单独完成一份完整的课程设计报告。 四、打分标准: 1、教师定期检查学

3、生进度,学生不得以自己有私人电脑为借口而不来上机。 2、根据程序运行结果; 3、根据计算机课程设计报告,学生能正确并熟练地解释清楚教师对程序的提问。 以上三项缺一不可,否则不能到得相应学分。 2 杂志订阅管理系统 设有一本杂志,该杂志最多拥有订户不超过10户,每个订户的信息包括:姓名,订户编号,性别,电话号码,订阅数,订阅日期,订阅期限 ,设计一杂志订阅管理系统 ,系统以菜单方式工作,能提供以下功能: 1、录入订户信息到文件 由李琴波完成 2、主界面及浏览所有订户信息 由周鑫完成 3、查询功能: 如:按订户编号查询、按订阅期限查询等 由李永健完成 4、修改功能:修改订户信息 由程蔚濯完成 5、

4、删除功能:删除已到期的订户记录 由饶雅清完成 6、统计功能:统计本期杂志订户数和订阅总量等 由张佩利完成 附一:时间安排表 教学内容 设计动员,布置任务 查阅资料,分析、讨论与设计 集体讨论 编写程序,进行调试 学时 0.5天 1天 0.5天 4天 地点 10211 图书馆、10211 10211 10211 备注 18周周一上午 18周周一下午至周二上午 18周周二下午 18周周三至 19周周一 19周周二至周三 19周四至周五 完成模块联调,进行测试 成果验收,完成设计报告 2天 2天 10211 10211 本人完成查询模块设计 3 杂志订阅管理系统课程设计 目 录 一、前言-5 1.1

5、 特色-5 二、需求分析-6 2.1 系统目标-6 2.2 运行环境-6 2.3 用户特点-6 2.4 功能要求-6 三、概要设计-7 四、主界面流程图-9 五、统计订户信息流程图-10 六、详细设计-11 七、数据结构设计-11 八、源程序清单-12 8.1 源代码-12 8.2 统计程序源代码-16 九、用户使用说明-18 十、调试与测试-21 10.1 逻辑调试-21 10.2 语法调试-21 10.3 测试结果-21 10.4 采取的解决措施的分析与讨论-21 十一、心得体会-23 十二、参考文献-24 4 一、前言 据调查得知,以前订阅管理的方式主要是基于文本、表格等纸介质的手工处理

6、,对于订阅等情况的统计和核实等往往采用对账本的人工检查,这样容易出错,由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统、规范的信息管理手段,而且,一般的订阅情况是记录在账本上的,订阅工作人员只是当时记得比较清楚,时间一长,如果再要进行查询,就得在众多的资料中翻阅查找了,这样造成费时、费力,因此,很有必要建立一个订阅管理系统,使其管理工作规范化,系统化,程序化。提高信息处理的速度和准确性。 杂志订阅管理的特点是信息处理量比较大,所管理的报刊种类繁多,因此在管理上实现起来有一定的困难。在本系统的设计过程中,为了克服这些困难,满足计算机管理工作的需要。本程序的是一个关于杂志订阅信息处理的数据库

7、系统,通过这个系统管理员可以简捷、方便的录入订阅人员信息、杂志基本信息以及对信息记录查阅、增加、删除、编辑信息等功能。 1.1特色: C语言是一个有结构化程式设计、具有变量作用域以及递归功能的过程式语言。 传递参数是以值传递,也可以透过指针来传递参数。 5 不同的变量类型可以用结构体组合在一起。 只有32个保留字,使变量、函数命名有更多弹性。 部份的变量类型可以转换,例如整型和字符型变量。 透过指针,C语言可以容易的对内存进行低阶控制。 编译预处理让C语言的编译更具有弹性。 二、需求分析 2.1系统目标 本系统总体目标是运用该管理系统,对一期杂志的订阅用户信息进行统一,方便的管理。在设计该管理

8、系统的过程中,应实现以下操作: 1) 程序正常运行后,在屏幕上显示一个文字菜单; 2)用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式等; 3)应用程序运行后,先显示主菜单,用户可以根据菜单选择所需操作,继而完成相应的操作。 4)具有较高的可靠性和可用性; 5)使用方便,直观且便于操作; 6)系统易于管理维护。 2.2、运行环境 一台能运行.exe可执行文件和读取txt文本文档的计算机或其他电子设备。 2.3、用户特点 具备基础的计算机操作技能、了解简单的英语单词。 2.4、功能需求 6 1)录入订户信息到文件 2)主界面及浏览所有订户信息 3)查询功能: 如:按订户编号查询

9、、按订阅期限查询等 4)修改功能:修改订户信息 5)删除功能:删除已到期的订户记录 6)统计功能:统计本期杂志订户数和订阅总量等 三、概要设计 杂志订阅管理系统 按姓名查找订户信息 按订户编号查找订户信息 浏览所有订户添加新订户信删除订户修改订户统计本期杂志订户数 统计本期杂志订阅总量 退出 信息 信息 信息 息 程序框图 7 1. 主要的结构体为node,包括用户的基本信息:姓名,订户编号,性别,地址,电话号码,订阅数和订阅期限。全局变量为结构体变量typedef struct entry。主函数采用while循环语句,9个语句分别对应9个子函数,操作简单方便。 2. 调用void inse

10、rt函数,增加新订户。打开文件,采用while语句判断用户数是否超过10个,若没有,采用for循环依次写入需添加的用户信息并保存,即完成添加用户功能。 3. 调用int del函数,删除到期订户记录。采用while语句依次检查文件中的到期用户,采用if判断语判断系统中是否存在到期用户,若存在,删除其用户信息并保存。即完成删除操作。 4. 调用int customerNum和int orderNum函数,统计杂志订阅用户数和订阅总量。主要采用while循环语句依次统计订户数和订阅总量并输出,即完成统计操作。 5. 调用void modify函数,修改订户信息。用While循环语句依次查找文件中需

11、要修改的用户,用if语句判断所需修改用户是否存在并逐次修改其信息并保存,即实现修改功能。 6. 调用void showlist函数,浏览所有订户信息。在程序运行开始时键入“hello”时系统会显示一次当前订户信息,按3调用模块时,用指针P依次指向文件中信息,并依次输出信息。 7. 调用int searchbyName和int searchByid函数,以姓名和订户编号查找用户信息。采用while循环语句依次查找系统中所存在的所有用户,采用if语句判断是否存在所查找用户并输出。 8 8. 调用void tuichu函数,退出并判断是否保存当前订户信息。在程序运行结束时,系统会自动根据用户需求做出

12、相应的响应,即完成是否保存操并退出系统。 四、主界面流程图:9 开始 提示验证信息 输入password,判断是否为Hello? 根据i值调用相应功能模块函数 结束 五、查询订户信息流程图:开始 进入主界面 输入要查找的姓名或订户编号 判断是否找到所要查找的用户 输出该用户 结束 10 六、详细设计 杂志订阅管理系统 该系统管理一期杂志,最多订户不超过10户,其订户信息包括:姓名,订户编号,性别,电话号码,订阅数,订阅日期,订阅期限,此外,该系统以菜单方式工作,提供以下功能: 1、录入订户信息到文件 2、主界面及浏览所有订户信息 3、查询功能: 即按订户编号查询、按订户姓名查询等 4、修改功能

13、:修改订户信息 5、删除功能:删除已到期的订户记录 6、统计功能:统计本期杂志订户数和订阅总量。 七、数据结构设计: 在整个程序中采用了多种数据类型: 整型int 整型 长整型long 基本类型 字符型 char 空类型 viod 数据类型 构造类型 结构体类型 指针类型 、数组、链表 11 八、源程序清单 8.1源代码: #include /*标准输入输出头文件*/ #include /*申请动态内存头文件*/ #include /*字符串头文件*/ int flag=0; /*定义整型变量flag并赋值0*/ typedef struct entry /*声明结构体*/ char id30

14、; /*定义字符型数组*/ char gender; /*定义字符型变量*/ char name20; /*定义字符型数组*/ long tele; /*定义长整型变量*/ int quantity; /*定义整型变量*/ char date20; /*定义字符型数组*/ char dueDate20; /*定义字符型数组*/ struct entry *next; /*定义指向entry结构体的指针*/ node; node *head, *tail; /* 头指针,尾指针指向node中的结构体*/ void draw_service /* service 菜单模块*/ printf(t*n

15、); printf(t* *n); printf(t* Welcome to Magzine Customer Managment System *n); printf(t* *n); printf(t*n); printf(nnnn); printf(*n); /*输出*/ printf(* please choose a service *n); printf(* *n); printf(* 1.-serach by name *n); printf(* 2.-serach by id *n); printf(* 3.-display *n); printf(* 4.-add new re

16、cord *n); 12 printf(* 5.-delete *n); printf(* 6.-modify *n); printf(* 7.-show customer number *n); printf(* 8.-show magzine quantity *n); printf(* 9.-exit *n); printf(* *n); printf(*n); void read int i; /*定义整型变量i*/ node *p, *s, *pre; /*定义三个指向结构体的指针变量*/ FILE *fp=NULL; /*将NULL赋给指向文件的指针*/ if (fp = fope

17、n(info.txt,r+) = NULL) /*以读写方式打开文件,打开失败返回NULL*/ printf(ERROR openning filen); /*输出信息*/ system(pause); /*系统暂停*/ return; p=head; s=head; /*将头指针的起始地址赋给指针变量p,s*/ i = 0; printf(Reading records from filen); while ( (fscanf(fp,%s %s %c %ld %d %s %s, /*将fp指定的文件按给定格式输入数据送到指定内存单元*/ p-id, p-name, &p-gender, &p

18、-tele, &p-quantity ,p-date, p-dueDate) != EOF) printf(No.%dt id:%st name:%st gender:%ct telephone: %ldt quantity:%dt issueDate:%st dueDate:%snn, i,p-id, p-name, p-gender, p-tele, p-quantity, p-date, p-dueDate); i+; 13 flag+; if(i=10) s = (node *)malloc(sizeof(node); /*分配字节存储区*/ pre = p; printf(用户最多只

19、能十个n); break; p-next = s; p = s; pre-next = NULL; free(s); /*释放内存*/ p-next=NULL; tail = pre; fclose(fp); /*关闭文件*/ printf(File Reading Succeeded!n); system(pause); /*系统暂停*/ int main system(color 3f); /*设置背景色及字体色*/ char password20 = hello , inputpass20; /*定义一个字符型数组*/ int choice; head=(node *)malloc(si

20、zeof(node); /*head为动作指针,申请内存空间,分配SIZE字节的内存区*/ while (1) /*当表达式为非0时,执行while语句中的内嵌语句 */ 14 printf(t*n); printf(t* *n); printf(t* Welcome to Magzine Customer Managment System *n); printf(t* *n); printf(t*n); printf(please input the Password(the password is hello)n); scanf(%s, inputpass); /*从键盘输入通行字*/ i

21、f (strcmp(password,inputpass) = 0) /*判断通行字是否正确*/ break; else system(cls); /*清屏*/ printf(nWrong Password please try againn); /*输出提示语句*/ read; /*调用read函数*/ int count = 0; /*定义一个整形变量count,将0赋给这个变量 */ while (1) /*当表达式为非0时,执行while语句中的内嵌语句 */ system(cls); /*清屏*/ system(color 2f); /*设置背景色及字体色*/ draw_servic

22、e; /*调用draw_service模块*/ scanf(%d, &choice); switch (choice) /*利用switch语句实现多分支选择结构*/ case 1: searchbyName; break; /*实现按姓名查找操作*/ case 2: searchbyid; break; /*按订户编号信息查找*/ case 3: showlist;break; /*浏览所有订户信息 */ case 4: insert; break; /*录入订户信息*/ case 5: del;break; /*删除订户信息*/ case 6: modify;break; /*修改订户信息

23、*/ case 7: system(cls); count = customerNum; /*清屏,将订户总数赋给count*/ printf(There are %d customers.n, count); /*输出count值*/ 15 system(pause);break; /*系统暂停,按任意键继续*/ case 8: system(cls); count = orderNum; /*清屏,将订户数赋给count*/ printf(There are %d magzine ordered.n, count); /*输出count*/ system(pause);break; /*系

24、统暂停,按任意键继续*/ case 9: writefile; break; /*保存当前信息*/ case 10: exit;return 0; /*退出*/ return 0; 8.2 查询模块源代码: int searchbyName node *p; char key30; p = head; /* 将头指针head的起始地址赋给指针p */ system(cls); printf(please input the name you are looking for:t); scanf(%s,key); while ( p != NULL) if(strcmp(key,p-name) =

25、 0) printf(Item Found:n); printf(id:%st name:%st gender:%ct telephone:%ldt quantity:%dt issueDate:%st dueDate:%snn,p-id, p-name, p-gender, p-tele, p-quantity, p-date, p-dueDate); 16 system(pause); return 0; p = p - next; /*使p指向下一个节点*/ printf(Item Not Foundn); /*输出*/ system(pause); /*暂停*/ return 0; i

26、nt searchByid node *p; char key30; p = head; system(cls); printf(please input the id you are looking for:t); scanf(%s,key); while ( p != NULL) if(strcmp(key,p-id) = 0) printf(Item Found:n); printf(id:%st name:%st gender:%ct telephone:%ldt quantity:%dt issueDate:%st dueDate:%snn,p-id, p-name, p-gende

27、r, p-tele, p-quantity, p-date, p-dueDate); system(pause); return 1; p = p - next; printf(Item Not Foundn); 17 system(pause); /*暂停*/ return 0; int searchid(char *key) node *p; p = head; system(cls); while ( p != NULL) if(strcmp(key,p-id) = 0) return 1; p = p - next; return 0; 18 九、用户使用说明 用户运行程序后,需按要求

28、从键盘输入通行字“hello”,验证通过后可浏览当前所有订户信息,按任意键,进入选择菜单,根据用户需求从键盘输入相应数字调用相应模块,实现订户所需服务。退出时,系统会自动输出提示语以判断是否需要保存添加,修改,或者删除后的用户信息并作出相应选择。完成用户需求后,按任意键退出即可。 运行界面 19 十、调试与测试 20 10.1逻辑调试 设计主界面时需要先判断当前文件中是否存有内容,有则直接进行各功能的选择和函数的调用,没有则先录入信息再进行各功能的选择和函数的调用。当函数调用完成后必须要进行保存。 10.2语法调试 在写好程序后,进行上机调试中有许多由于疏忽而造成的错误。 1)定义变量类型错误

29、,用户姓名应该定义为字节类型。 2)当语句结束时,最后不能忽略分号。 3)不同程序段调用相同函数的函数名要统一,对于不同函数要用到相同的数据时, 定义此数据的变量也要统一。 4)当字符串进行比较是否相等时,不能用“=”来进行比较,必须用strcmp来进行比较,strcmp是用于字符串比较的,而“=”是用于数据比较的。 5) 清屏功能必须要写在函数段的输出前才有效,并且每个函数段都要用到清屏功能。 6)主界面的设计当中也要进行对文件的输入、读取和保存的使用。 7)在程序结束之前,要保存文件以免丢失文件。 10.3测试结果 经过反复的调试之后,对每一个错误和警告进行修改,对每一个函数的功能进行分析

30、,对各模块之间的函数关系进行整理,逐个改正错误,使得调试成功! 10.4 采取的解决措施的分析与讨论 在编写复杂的程序时要多利用函数,用一个函数来实现一个单独的功能。各函数之间除用参数传递数据外,尽量少出现耦合关系,便于分别检查和处理。 21 编译时出现语法错误的信息,调试时根据提示信息找出程序中出错之处并进行逐一分析改正,直至无错误出现。 运行结果错误时,大多属于逻辑错误。我们采用以下办法: 将程序与流程图仔细对照,如果流程图是正确的,程序写错了,是很容易发现的。例如,复合语句忘记写花括弧,只要一对照流程图就能很快发现。果正确与否。 实在找不到错误,可以采用“分段检查”的方法。在程序不同的位置设几个printf函数语句,输出有关变量的值,逐段往下检查。直到找到在某一段中数据不对为止。这时就已经把错误局限在这一段中了。不断减小“查错区”,就能发现错误所在。 也可以用“条件编译”命令进行程序调试。这种方法可以不必一一去掉printf函数语句,以提高效率。 22 十一、心得体会 刚开始那到这个题目的时候,感到一片茫然,不知道如何下手。前面的C语言实习似乎还没让我找到感觉。结果就产生了一些错误的念头,便从网上搜索出来一些相关的程序,结果运行时出现了很多错误,漏洞百出。后来认识到这样做不对,不仅投机取巧,还对我的程序设计能力没有一点提高。但是还给了我许多提示。让我有了一定的思路了。在设

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号