《学位论文-—c语言课程设计报告:商品售后管理.doc》由会员分享,可在线阅读,更多相关《学位论文-—c语言课程设计报告:商品售后管理.doc(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 商品售后管理HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGYC语言程序设计课程设计报告课设题目: 商品售后管理 专 业: 电气工程及其自动化 班 级: 姓 名: 成 绩: 完成日期: 2013年5月27日2012年6月21日 指导教师: 胡宁亚 目 录C语言程序设计0课程设计报告01.课程设计目的22.需求分析22.1要求22.2任务描述32.3运行环境32.4开发工具33.总体设计33.1系统流设计33.2系统模块设计54.详细设计54.1数据结构设计54.2模块接口设计64.3 以下是几个主要模块的流程图:75.运行结果115.1主菜单界面:125.2信
2、息录入界面:135.3信息浏览界面:145.4 信息查询界面:145.5信息修改界面:175.6信息插入界面:185.6信息删除界面:196.程序调试与测试196.1程序调试196.2程序测试206.3程序测试的正确的界面247.问题与不足278.建议279.编程体会2810.程序源代码:2811.参考文献4912.用户使用手册501.课程设计目的1) 通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。2) 通过课程设计,进一步掌握C语言中重要的数据结构。掌握并熟练运用指针、链表、结构体、文件等数据结构。3) 通过课程设计,提高程序开发能力,能运用合理
3、的控制流编写清晰高效的程序。4) 通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。5) 通过课程设计,加强了自己的程序分析能力。2.需求分析2.1要求1) 遵循软件开发过程的基本规范;能灵活应用,初步具备运用C程序解决实际问题的能力。2) 运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。3) 学会利用数组、结构体、链表进行相关信息表示。4) 功能模块划分清晰,系统结构图符合功能操作要求,且有详尽的功能描述5) 各主要功能模块
4、有详尽的流程图及描述,用函数的形式实现,且调用入口、功能、出口等关系正确。6) 所设计的C程序较好的可读性和可靠性;程序书写风格规范,注释清晰。7) 界面友好(良好的人机互交),凡需要输入信息时,都有较详尽的提示信息,并对输入信息有较完善的值域分析。8) 程序经上机调试通过,不应出现语法型、功能型错误,并获得满意的结果。9) 学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现。10) 掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。11) C语言课程设计报告的内容反应实际设计过程,且符合格式要求,无抄袭现象。2.2任务描述已知一售后服务站负责10个公
5、司各10种产品的售后服务,产品信息包括:编号,型号,名称,生产厂家、保修期内返修、保修期外返修(维修)等;经手人10人,信息为:编号。维修站需要经常统计产品售后返修情况,以便给产品生产厂商提出改进意见。此系统以商品售后管理为背景,提供对商品维修信息的录入、编辑、查找、统计等功能。具体功能实现如下:1) 信息录入:实现商品维修信息的录入功能,并能将其以文件形式加以保存。2) 编辑功能:实现商品的维修信息的添加,并对指定的信息进行删除或修改等功能。3) 信息浏览功能:实现全部维修信息的浏览。4) 查询功能:实现按商品编号查询、按公司名称查询维修信息的功能。5) 统计功能: 指定时间内的全部维修信息
6、查询。6) 系统以菜单方式工作,界面清晰,易于操作。2.3运行环境1) WindowsXP/7系统2) VC+6.0编译环境2.4开发工具C语言3.总体设计3.1系统流设计 系统的功能模块大致如图1所示:程序欢迎界面主菜单界面学生信息录入统计男女人数学生信息修改学生信息查询学生信息删除学生信息浏览退出系统按学号查询按姓名查询指定班级浏览全部信息浏览操作模式界面管理模式界面查询模式界面帐号信息建立管理数据建立图1系统功能模指定商品编号浏览快3.2系统模块设计1) 课程名称界面:构造函数void question();,实现课程设计名称以及设计内容要求的显示。2) 主菜单界面:构造函数int me
7、nu_select();,实现系统主菜单的显示。3) 维修信息录入:构造函数void loadRec();,实现维修信息的录入及显示。4) 维修信息修改:构造函数void modifyRec(),实现对需要修改维修信息的商品的查找,并实现商品维修信息修改界面的显示并对维修信息进行修改。5) 维修信息查询:构造函数void select(),实现查询界面的显示。并通过对按商品编号查询函数void searchRec()、按公司名称查询函数 void searchgongsi()、按照维修日期查询函数 void searchqijian()、按照是否在维修期内查询函数 void searchwei
8、xiu() 的调用,实现相应的商品维修信息的查询。6) 维修信息删除:构造函数void deleteRec(),实现对指定学商品编号的维修信息的删除。并通过函数free(),释放内存空间。7) 维修信息浏览:构造函数void listRec(),实现全部维修信息的浏览。4.详细设计4.1数据结构设计根据系统要求,系统中需要保存的数据信息,其结构如下:数据项名称数据项系统表示数据类型数据长度备注商品编号num字符串10经手人编号maker双精度实数8公司名称name字符串10维修时间tiem字符串10维修期shi字符串10根据系统要求,系统中需要保存的类别信息,其结构如下:类别代号char nu
9、mdouble makerchar numchar shichartime类别名称商品编号经手人编号公司名称维修期维修时间为了能实现不受限制的增加商品维修信息,采用链表的结构保存维修信息,在增加商品的基本信息时,创建一个维修信息的节点,将其插入到链表中,示意图如下。 维修信息1维修信息2通讯录信息1221维修信息3维修信息4为此,先声明一个类型为struct student的结构体,其成员为学生的简历信息。然后通过对指针、链表、文件等数据结构的操作,实现对学生简历信息的录入,插入,存盘,查询,浏览,删除,修改等一系列操作。其中,结构体定义如下:struct product char num10
10、;double maker;char name10; char time10;char shi20;struct product *next; ;4.2模块接口设计1) 所有函数模块声明如下:void createRec();/*新建商品维修记录*/void loadRec();/*从磁盘文件导入商品信息到内存*/int selectmenu(); /*查询的子菜单*/void searchRec();/*输入商品编号以查询维修记录*/void modifyRec();/*输入商品编号以修改维修记录*/void insertRec();/*插入商品维修记录*/void deleteRec();
11、/*删除商品维修记录*/void listRec();/*显示所有商品维修记录信息*/void writeInfo();/*保存商品维修记录*/void exit0(); /*退出*/void question();/*显示上平售后管理的题目和要求*/int menu_select();/*主菜单*/void select(); /*选择函数*/void searchmaker(); /*根据商品编号查询商品维修信息*/void searchgongsi(); /*根据公司名称查询商品维修信息*/void searchweixiu(); /*根据是否在维修期查询商品维修信息*/void sea
12、rchqijian(); /*根据维修期查询商品维修信息*/2) 并定义一个全局变量: struct product *head = NULL;3) 主要模块的实现系统以主函数void main()为入口,首先通过textcolor(YELLOW)以及textbackgroud(GREEN)将文本颜色置为黄色,背景颜色置为绿色。调用void auther()函数,显示课程设计名称及作者信息。调用void welcome()函数,显示系统欢迎界面。然后调用void mainmenu()函数,进入主菜单界面。系统接收用户输入的选择,调用相应的函数,进入到下一级菜单进行相关工作。4.3 以下是几个主
13、要模块的流程图:1) 主菜单函数:调用对应选项函数退出系统打印主菜单接受用户选项是否合法是否为0是否是否图2 主函数流程图2) 信息浏览函数:需要修改的产品编号是否存在修改界面是选择修改内容实现修改回主菜单打印信息查询子菜单接收用户选项是否合法是否为0否是是否回主菜单按照商品编号查询按照公司名称查询根据维修日期查询图3 信息浏览流程图3) 信息修改函数:否图4 信息修改流程图4) 信息插入函数:完成插入插入界面是否存在插入位置(输入数字)需要插入位置是否回主菜单 图5 维修信息的插入5) 维修信息的删除函数:需要删除的产品编号是否存在删除界面是选择删除信息实现修改回主菜单否 图6 维修信息的删
14、除6) 显示题目的函数:打印主菜单接受用户选项显示题目按任意键返回主菜单图7 显示题目和要求7) 保存维修信息的函数:打印主菜单接受用户选项保存维修信息图8 保存维修信息5.运行结果5.1主菜单界面:图9主菜单界面输入功能选择,系统自动进入相应功能界面。5.2信息录入界面:图10 信息录入界面5.3信息浏览界面: 图11 全部信息浏览5.4 信息查询界面:从键盘中输入选择,可以按产品编号,公司名称和维修日期进行查询,并显示结果。 图12 按商品售后查询的主界面 图13 按产品编号查询的结果 图14 按照公司名称查询 图15 按照维修日期查询 5.5信息修改界面:从键盘中输入需要修改维修信息的商
15、品编号,自动提示输入新的信息。 图16 维修信息修修改界面5.6信息插入界面: 图17 维修信息插入界面5.6信息删除界面: 图 18 维修信息删除界面 6.程序调试与测试6.1程序调试(1) 各模块分别调试过程及结果。我设计的商品售后管理系统(c语言程序)有17个函数,主函数可以调用这17个函数,首先由void loadRec()实现从文件中读取商品的编号,经手人编号,维修公司,是否在维修期,维修的时间(年-月-日)。调试的结果是该函数可以成功从文件中读取到相应的信息。void createRec() 用来新建商品维修记录void loadRec() 从磁盘文件导入商品信息到内存void s
16、earchRec() 输入商品编号以查询维修记录void modifyRec() 输入商品编号以修改维修记录void insertRec() 插入商品维修记录void delete () 删除商品维修记录void list () 显示一段时间内所有商品维修记录信息void writeInfo() 保存商品维修记录void exit0() 退出void question() 显示题目和要求int menu_select() 主菜单void select() 子菜单void searchmaker() 根据经手人查询void searchgongsi() 根据公司名称查询void searchwe
17、ixiu() 根据是否在维修期查询void searchqijian() 根据维修时间查询各项运行良好,均能达到基本要求。(2) 集成调试过程及结果。各项运行良好,主函数可以调用其它函数,各项功能也可以实现。(3) 功能调试过程及结果可以根据上述的子函数分别实现商品售后管理的查询,新建,删除,保存,退出,插入各项功能。 6.2程序测试文件录入出错界面主菜单输入出错界面新建商品维修记录出错界面查询界面出错插入界面出错删除界面出错6.3程序测试的正确的界面文件录入正确主菜单输入正确界面新建维修记录查询界面正确输入删除正确界面插入正确界面注:测试中出现的问题的原因和分析当执行完所有操作退出系统时一定
18、要按照系统指示退出系统,不能强行退出,否则本次操作将会无效!7.问题与不足(1) 需求分析中存在的问题和分析 题目并没有说明可以按照日期或是编号对维修记录进行排序。(2) 概要设计中存在的问题和分析 系统在进行维修查询上有些粗糙,不是很完美。(3) 详细设计中存在的问题和分析 新建维修信息这个功能不是特别的人性化,而且我没有对输入的维修日期是否不正确进行判断,比如输入2099-89-98这个不正确的日期,依然会被读入并进行操作。(4) 代码编制中存在的问题和分析在输入函数中,再输入的地方加一个while(1)if()break;对输入的选择进行判断,输入的数据以字符串的形式赋给一个数组对输入数
19、据的前两位进行判断,这样系统会更完美。(5) 调试和测试中存在的问题和分析每执行一个操作后一定要执行保存功能,这样才能将信息及时准确无误的把存入文件。8.建议对于课设的时间按排,可以提前把题目给学生,这样可以提前做课设以及复习考试。建议使用集中的时间来做课程设计,把时间分成一段一段的会影响学生的的积极性和效率。就我所知,很多同学都不参加周末的课设,等到了最后几周才去编程序。而且由于最后几周都临近考试,好多编程序的同学甚至没有时间去复习考试科目。可以说这对于绝大多数人来说都是不小的负担。像那种一下子就把程序编出来的人不多。9.编程体会大的C语言程序编程,对于我们初学者来说,是有一定困难的。在本次
20、的课程设计编程中,我遇到了许多问题和困难,函数功能的不熟悉,对文件的读入不是很熟悉,更有一些函数从来没了解过,在程序的一次一次调试失败下,我曾经灰心过,但在同学和老师的指导下,我有找回了信心,最终克服了许多困难,终于完成了程序的编写。在这里要感谢指导老师的悉心指导和同学们的无私帮助。通过这次课程设计,我受益匪浅,感受颇多。首先,我对很多的函数有了新的认识,对这些函数有了更深刻的理解;其次,学会了多种函数同时运用的设计和编程,明白了编写源程序的基本过程和基本方法;再次,写源程序的过程中我又学到了一些新的函数或是自己不会的函数的用法,例如我学会了如何自动从文件中读入数据,如何调用函数,对于函数和变
21、量都有所认知。了解了getchar()和system(cls)的用法和作用等,对指针和链表有了更深刻的认识,比如建立链表的具体操作、在进行文件操作时,文件末尾不能存在回车、写入文件时一定要注意文件中数据的格式,否则在后面的读文件中会出错、在用“fscanf“写整型和浮点型的数据到文件是不能把“&”漏掉。这次课程设计课总的来说,让我明白了许多,学会了许多,我编写程序的能力有了很大的提高,此次编程过程的经验和知识对于进我今后的学习有很大的帮助。通过这次课设的编程,我发现了自己平时学习中的许多漏洞,这是学习时的不认真造成的。我相信自己,在今后的学习中,会更加认真刻苦,掌握更多的知识。做一个有用的人。
22、10.程序源代码:/* 一件商品的信息为:商品编号、经手人编号、商品生产公司,从键盘输入 n 件商品的信息,并保存在 c:/1/1.txt 文件中。 */#include#include#include#include #include#define LEN sizeof(struct product)struct productchar num10;double maker;char name10;char shi10;char time10;struct product *next;void createRec();/*新建商品维修记录*/void loadRec();/*从磁盘文件导入商
23、品信息到内存*/int selectmenu();void searchRec();/*输入商品编号以查询维修记录*/void modifyRec();/*输入商品编号以修改维修记录*/void insertRec();/*插入商品维修记录*/void deletes ();/*删除商品维修记录*/void list ();/*显示一段时间内所有商品维修记录信息*/void writeInfo();/*保存商品维修记录*/void exit0(); /*退出*/void question();/*显示题目和要求*/int menu_select();/*主菜单*/void select();
24、/*子菜单*/void searchmaker(); /*根据经手人查询*/void searchgongsi(); /*根据公司名称查询*/void searchweixiu(); /*根据是否在维修期查询*/ void searchqijian(); /*根据维修日期查询*/*链表操作所用结构体指针*/struct product *head=NULL,*p1,*p2,*p3;/*定义结构体指针head 为头指针p1 为输入数据缓存空间指针p2 为尾指针*/intwriteinfo_flag=0;int main() loadRec();for(;)switch(menu_select()
25、case 1: system(cls); createRec();break;case 2: system(cls); select();break;case 3: system(cls); modifyRec();break; case 4: system(cls); insertRec();break;case 5: system(cls); deletes ();break;case 6: system(cls); list ();break;case 7: system(cls); writeInfo();break;case 0: system(cls); exit0();retur
26、n 0;case 8: system(cls); question();break;default :getchar();printf(n 选择错误,请正确输入你的选择(05),:n);printf(n 按任意键返回.n);getchar();getchar();system(cls);/*清屏*/ return 0;int menu_select()int c; printf(nnn ttn);printf( tttttt t n);printf( ttt 题目:商品售后管理t n);printf( tttttt t );printf( nttn); printf(tt 欢迎使用本商品售后管
27、理系统 n);printf(tt *主菜单*n);printf(ttt 1.新建商品维修记录n);printf(ttt 2.查询商品维修记录n);printf(ttt 3.修改商品维修记录n);printf(ttt 4.插入商品维修记录n);printf(ttt 5.删除商品维修记录n);printf(ttt 6.显示全部商品维修记录信息n);printf(ttt 7.保存商品维修记录n);printf(ttt 8.显示本题目和主菜单n);printf(ttt 0.退出n);printf(tt 谢谢使用本商品售后管理系统 n);printf(tt 指导老师:胡宁亚n); printf(tt T
28、1223-9 00 QQ: n);printf(tt 联系方式:(短号)n);printf(tt 版权所有 n);printf(n 输入你的选择(08):n);scanf(%d,&c);return c;int selectmenu()int c; printf(tt 欢迎使用本商品售后管理系统 n);printf(tt*查询菜单*n);printf(ttt 1.商品编号n);printf(ttt 2.公司名称n);printf(ttt 3.维修时间n); /* printf(ttt 4.是否在维修期间n);*/printf(ttt 0.退出n);printf(n 输入你的选择(03):n);
29、scanf(%d,&c);return c;void select()while(1)switch(selectmenu()case 1:system(cls);searchRec();printf(nttt按任意键继续n); getch(); system(cls);break;case 2:system(cls); searchgongsi();printf(nttt按任意键继续n); getch(); system(cls);break;case 3:system(cls);searchweixiu();printf(nttt按任意键继续n); getch(); system(cls);
30、break; case 4:system(cls); searchqijian();printf(nttt按任意键继续n); getch(); system(cls);break;case 0: system(cls); return ;break;/*从磁盘文件导入商品信息到内存*/void loadRec()FILE *fp;int n=0;if(fp=fopen(c:11.txt,r)=NULL)/*打开文件*/printf(文件不存在或无法打开!n);return;head=p1=(struct product *)malloc(LEN);/*开辟一个新单元*/p1-next =NUL
31、L;while(!feof(fp)n+;fscanf(fp,%s%lf%s%s%s, p1-num,&p1-maker,p1-name,p1-shi,p1-time);if(p1-num0num09) n-;break;p2=(struct product *)malloc(LEN);/*开辟一个新单元*/p1-next =p2;p3=p1;p1=p2;p1-next =NULL;free(p2);p3-next=NULL;printf(n %d项信息输入完毕,按任意键返回.n,n);getchar();system(cls);/*清屏*/writeinfo_flag=0;/*设置保存记录标志
32、*/if( fclose(fp) )/* 关闭文件 */ printf( Can not close the file!n ); exit(0); void question() system(cls);printf(nnn ttn);printf( tttttt t n);printf( ttt 题目:商品售后管理t n);printf( tttttt t );printf( nttn); printf( 某售后服务站负责10个公司各10种产品的售后服务。 n);printf( 产品信息包括产品编号,生产厂家,维修人编号 n);printf( 1、新建商品维修记录 n);printf( 2、
33、查询商品维修记录 n);printf( 3、修改商品维修记录 n);printf( 4、插入商品维修记录 n); printf( 5、删除商品维修记录 n);printf( 6、显示一段时间内商品维修记录信息 n);printf( 7、显示本题目和主菜单 n);printf( 8、显示本题目和主菜单 n); printf( n);system(pause);system(cls);return;/*新建商品维修记录*/void createRec()int n,i;if(head!=0) p3=head;while( p3-next!=NULL)p3=p3-next;getchar();pri
34、ntf(n 维修数据库已存在,新建维修信息将接续在信息库的后面,按任意键继续.:n);getchar();system(cls);/*清屏*/p3-next=p1=(struct product *)malloc(LEN);/*开辟一个新单元*/ else head=p1=(struct product *)malloc(LEN);/*开辟一个新单元*/p1-next =NULL;printf(nn 请输入希望建立的维修基本信息条数:n);doscanf(%d,&n);if(n10) printf(nn输入范围有误,请重新输入希望建立的维修基本信息条数n(n1&n10):n);while(n1
35、0);printf(nn 请每行按产品编号(num=2位) 经手人编号 公司名称(name=10汉字) 是否在维修期 维修的时间的形式输入%d条维修记录:n,n);for(i=0;inum,&p1-maker,p1-name,p1-shi,p1-time);p2=(struct product *)malloc(LEN);/*开辟一个新单元*/p1-next =p2;p3=p1;p1=p2;p1-next =NULL;free(p2);p3-next=NULL;printf(n %d项信息输入完毕,按任意键返回.n,n);getchar();system(cls);/*清屏*/writeinfo_flag=1;/*清除保存记录标志*/*查询商品维修记录*/void searchRec()char num10;p1=head;if(p1=NULL) printf(nn维修信息数据库为空! n); printf(n 按任意键返回.n);getch();system(cls);