C语言课程设计报告-销售管理系统-报告-代码_第1页
C语言课程设计报告-销售管理系统-报告-代码_第2页
C语言课程设计报告-销售管理系统-报告-代码_第3页
C语言课程设计报告-销售管理系统-报告-代码_第4页
C语言课程设计报告-销售管理系统-报告-代码_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

-.z......资料....HUBEIUNIVERSITYOFAUTOMOTIVETECHNOLOGYC语言程序设计课程设计报告课设题目:销售系统专业:电气工程及其自动化班级:T1123-6姓名:成绩:完成日期:2012年6月18日-2012年6月22日指导教师:胡宁亚目录TOC\o"1-2"\h\z\u1.课程设计目的22.需求分析22.1要求22.2任务描述22.3运行环境32.4开发工具33.总体设计33.1系统流设计33.2系统模块设计44.详细设计54.1数据结构设计54.2模块接口设计64.3以下是几个主要模块的流程图:75.运行结果105.1主菜单界面:105.2销售员信息录入界面:105.3销售产品信息录入界面:115.4销售信息录入界面:115.5销售信息查寻界面:115.6销售信息保存界面:115.7题目显示界面:115.8信息删除界面:125.9销售报表显示界面:126.程序调试与测试126.1程序调试126.2程序测试127.问题与不足128.建议129.编程体会1210.程序源代码:1211.参考文献1312.用户使用手册131.课程设计目的通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。通过课程设计,进一步掌握C语言中重要的数据结构。掌握并熟练运用指针、链表、结构体、文件等数据结构。通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。通过课程设计,加强了自己的程序分析能力。2.需求分析2.1要求遵循软件开发过程的基本规;能灵活应用,初步具备运用C程序解决实际问题的能力。运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。学会利用数组、结构体、链表进行相关信息表示。功能模块划分清晰,系统结构图符合功能操作要求,且有详尽的功能描述各主要功能模块有详尽的流程图及描述,用函数的形式实现,且调用入口、功能、出口等关系正确。所设计的C程序较好的可读性和可靠性;程序书写风格规,注释清晰。界面友好(良好的人机互交),凡需要输入信息时,都有较详尽的提示信息,并对输入信息有较完善的值域分析。程序经上机调试通过,不应出现语法型、功能型错误,并获得满意的结果。学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现。掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。C语言课程设计报告的容反应实际设计过程,且符合格式要求,无抄袭现象。2.2任务描述问题根据需求,该系统所应包含的信息有以下一些:销售管理的基本信息:销售员编号,产品编号,销售日期,销售数量根据需求,该系统所应实现的功能有以下一些:各种基本数据的录入。如:销售信息的录入各种基本数据的修改。即:允许对已录入的基本信息进行编辑、修改。例:对销售员编号的修改各种基本数据的删除。如:指定销售员、产品、销售日期的记录删除基于各种数据的查询。例:根据销售员编号查询销售历史系统以菜单方式工作,界面清晰,易于操作。2.3运行环境Windows*P/7系统VC++6.0编译环境2.4开发工具C语言3.总体设计3.1系统流程设计菜单显示用户输入操作判断用户选择的操作菜单显示用户输入操作判断用户选择的操作执行相应的操作退出退出图1系统功能流程图3.2系统模块设计从文件导入销售员信息退出系统从文件导入销售员信息退出系统主菜单界面创建销售员信息显示销售报表创建产品资料输入销售信息查询销售信息显示题目删除销售信息保存销售信息屏幕显示销售信息按销售员编号查询信息按销售日期删除信息按产品编号删除信息按销售员标号删除信息从键盘输入销售信息从文件导入销售信息从文件导入产品信息从文件导入产品信息从键盘输入销售员信息图2系统功能模块图模块设计1.主菜单界面:构造函数intmenu_show(),实现完成系统菜单的显示。2.创建销售员信息界面:构造函数voidCreate_clerk(),实现销售员信息创建系统的显示。3.从文件导入销售员信息界面:构造函数函数voidscanf_clerk()实现从文件导入销售员信息。4从键盘输入销售员信息界面:构造函数voidclerk(),实现从键盘输入销售员信息。5.创建产品信息界面:构造函数voidCreate_product(),实现产品信息创建系统的显示。6.从文件导入销售员信息界面:构造函数voidscanf_product()实现从文件导入产品信息的界。7从键盘输入销售员信息界面:构造函数voidproduct(),实现从键盘输入产品信息。8.创建销售信息界面以及从文件导入销售信息界面:构造函数voidadd(structinformation*head),实现销售信息创建系统的显示和通过构造函数voidimport(char*filename,structinformation*p_root)从文件导入销售信息。9.从键盘输入销售员信息界面:构造函数voidinformation(structinformation*head),实现从键盘输入销售信息。10.保存销售信息界面:构造函数voide*port(char*filename,structinformation*p_root),实现销售信息的保存。11查询销售信息界面:构造函数voidsearch(structinformation*head),实现对销售信息的查询。12.显示销售报表:构造函数voidprint(structinformation*head)实现对查询界面的显示并通过创建调用函数voidpri_*in(structinformation*head)实现对销售报表的指定时间段的查询。13.显示题目界面:构造函数voidshowoo()实现对题目的显示。14.删除销售信息界面:构造函数voidDelete(structinformation*head)实现对删除销售信息的界面显示并通过调用构造的函数voiddclerk(structinformation*head),voiddpro(structinformation*head),voiddclerk(structinformation*head)分别实现对指定销售员编号,产品编号,销售时间的销售信息的删除。15.退出系统:用系统函数e*it(0);实现退出系统。4.详细设计4.1数据结构设计根据系统要求,系统中需要保存的数据信息,其结构如下:数据项名称数据项系统表示数据类型数据长度备注销售员编号num,znum整数,整数4,4销售员name字符串30销售员性别se*字符串3产品代号mark,zmark整数,整数4产品名称cp**字符串30产品价格price长整形8销售时间date字符串11销售数量amount整数4根据系统要求,系统中需要保存的类别信息,其结构如下:类别代号类别名称为了能实现不受限制的增加销售信息,采用链表的结构保存销售信息,在增加销售基本信息时,创建一个销售信息的节点,将其插入到链表中,示意图如下。销售销售信息1销售信息2通讯录信息1221销售信息3销售信息4为此,先声明一个类型为structinformation的结构体,其成员为销售信息。然后通过对指针、链表、文件等数据结构的操作,实现对销售信息的录入,插入,存盘,查询,浏览,删除等一系列操作。其中,结构体定义如下:structinformation{ intznum;/*销售员编号*/ intzmark;/*产品代号*/ chardate[11];/*销售日期*/ intamount;/*销售数量*/ structinformation*ne*t;};4.2模块接口设计所有函数模块声明如下:voidCreate_clerk();/*录入销售员资料函数*/voidCreate_product();/*录入产品资料函数*/voidadd(structinformation*head);/*定义输入销售信息函数*/voidsearch(structinformation*head);/*定义查询信息函数*/voidDelete(structinformation*head);/*定义删除函数*/voiddclerk(structinformation*head);/*定义删除指定销售员的记录函数*/voiddpro(structinformation*head);/*定义删除指定产品的记录函数*/voiddinf(structinformation*head);/*定义删除指定日期的记录函数*/voidprint(structinformation*head);/*定义显示报表函数*/intmenu_show();/*主菜单函数*/voidmenu_select(intsel,structinformation*head);/*功能函数*/intjudge_date();/*判断日期函数*/voidscanf_clerk();/*导入销售员资料函数*/voidscanf_product();/*导入产品资料函数*/voidimport(structinformation*head);/*导入销售信息函数*/voide*port(char*filename,structinformation*p_root)/*保存函数*/intchange_date();/*定义把时间格式转换成整形*/主要模块的实现系统以主函数voidmain()为入口,首先通过voidmenu_select(intsel,structinformation*head)以及intmenu_show()的嵌套使用进入主菜单界面。voidmenu_select(intsel,structinformation*head)接收intmenu_show()的返回值让系统接收用户输入的选择,调用相应的函数,进入到下一级菜单进行相关工作。4.3以下是几个主要模块的流程图:主菜单函数:否否打印主菜单接收用户选项是否合法调用对应选项函数进入下一级菜单退出系统是否是是否为0图3主函数流程图销售信息输入函数:打印信息输入子菜单打印信息输入子菜单接收用户选项是否合法是否为0否是是否是否为1从文件导入销售信息从键盘输入销售信息是否回主菜单图4销售信息输入图4销售信息输入流程图销售信息删除函数:打印信息输入子菜单打印信息输入子菜单回主菜单选择删除方式回主菜单选择删除方式按销售员编号删除按产品编号删除按销售日前删除按销售员编号删除按产品编号删除按销售日前删除否否是否存在是否存在是是删除界面删除界面实现修改实现修改图5销售信息删除流程图图5销售信息删除流程图5.运行结果5.1主菜单界面:图6主菜单界面输入功能选择,系统自动进入相应功能界面。5.2销售员信息录入界面:图7信息录入界面1图8信息录入界面2图9信息录入界面35.3产品信息录入界面图10信息录入界面4图11信息录入界面6图12信息录入界面75.4销售信息录入界面图13信息录入界面8图14信息录入界面9图15信息录入界面10:5.5销售信息查询界面:图16销售信息查寻界面115.6销售信息保存界面图17销售信息保存界面5.7课题显示界面图18课题显示界面5.8销售信息删除界面图18销售信息删除界面5.9销售报表浏览界面图19销售报表浏览界面1图19销售报表浏览界面26.程序调试与测试6.1程序调试调试过程及结果见板块五各界面图,分别对本程序输入,保存,浏览,删除以及显示界面的美观进行了详细的调试展示。6.2程序测试一.输入模块的测试数字输入正确输入为1~8的整数,测试用例abc;测试结果日期输入测试正确输入格式为YYYY-MM—DD(日期界限为2001~2012年);测试用例1999-01-01,2013-01-01和20111-13-32;测试结果汉字输入测试正确格式为汉字输入如:鲁迅,男;测试用例“abc”和“hao”测试结果测试问题分析1,测试中可能出现第一次输入错误后输入正确信息也显示错误分析原因:输入缓存未及时清除处理办法:调用系统函数rewind(stdin)或fflush(stdin)清除缓存;2,对整数及特定格式的输入无法很好的控制分析原因:仅采用单一的char或者int型控制;解决办法:本程序大量采用字符型数组进行控制,必要时用系统函数atoi转换为int型。7.问题与不足需求分析中存在的问题和分析程序中缺少对销售数量的排序以及对各个销售数量段的统计,对于销售管理系统而言,不便于对销售员进行奖罚管理。概要设计中存在的问题和分析本程序再设计中模块过余冗杂,且分划时相互嵌套,不利于管理。详细设计中存在的问题和分析本程序在设计时文件和指针采用的是分开单独编写,因此在衔接过程中可能存在衔接问题。代码编制中存在的问题和分析因为考虑到各个模块的独立性以便后续的其他功能的添加,本程序未使用全局变量,因此在程序的全面控制方面有缺陷。调试和测试中存在的问题和分析虽然程序指针走向在程序未运行时每一步都基本了解,但程序函数相互调用时指针的走向不是很明确,需要不断的调试才能确定程序的正确性。8.建议我本次的课设题目是销售管理系统,对这个题目,我建议加入销售信息中销售数量的排序功能,包括对每一天各销售员销售数量的排序和销售员自己销售数量的排序,这有利于销售管理中对于销售员的销售业绩的统计,方便管理另外我的题目中要求手动输入销售日期并判断日期格式,我认为可以改为调用系统时间,对时间的要求可以更精确。9.编程体会先吐吐苦水,这次课程设计熬了大概二十多天的夜,中途还夹着各种考试,很累啊。但是真的很不错,充实!通过这次的课程设计对C语音的认识和了解都有加深,在编写过程中遇到很多的问题,看书,查资料,问老师,请教学长,每一各问题的解决都伴随着轻松与沉重,因为问题只会越来越少但是也会越来越困难。具体的我掌握了很多以前不知道或者不熟悉不会用的函数,对C语音文件和指针的实用和认识也更加熟悉,更重要的是了解到在程序编写之前建立程序的主体框架图是非常重要的,对于程序后续的编写也具有指导作用。最后对在我的程序编写过程中给我提供帮助和指导的老师、学长、同学表示感,你们!10.程序源代码:/*销售管理系统 制作者:春恒*/*include<stdio.h>*include<stdlib.h>*include<string.h>/*销售员信息结构体*/structclerk{ intnum;/*编号*/ charname[30];/**/ charse*[3];/*性别*/}cle[4];/*产品信息结构体*/structproduct{ intmark;/*产品代号*/ charcp**[30];/*产品名称*/ doubleprice;/*销售价格*/}prod[5];/*销售信息结构体*/structinformation{ intznum;/*销售员编号*/ intzmark;/*产品代号*/ chardate[11];/*销售日期*/ intamount;/*销售数量*/ structinformation*ne*t;};//intwriteinfo_flag=0;//structinformation*head=NULL,*temp;voidCreate_clerk();/*录入销售员资料函数*/voidCreate_product();/*录入产品资料函数*/voidadd(structinformation*head);/*定义输入销售信息函数*/voidsearch(structinformation*head);/*定义查询信息函数*/voidDelete(structinformation*head);/*定义删除函数*/voiddclerk(structinformation*head);/*定义删除指定销售员的记录函数*/voiddpro(structinformation*head);/*定义删除指定产品的记录函数*/voiddinf(structinformation*head);/*定义删除指定日期的记录函数*/voidprint(structinformation*head);/*定义显示报表函数*//*文件保存*/voide*port(char*filename,structinformation*p_root){ FILE*fp=fopen(filename,"w+"); structinformation*p_current=p_root; inti=0; if(fp==NULL||p_current==NULL) return; while((p_current=p_current->ne*t)!=NULL) { fprintf(fp,"%d%d%s%d\n",p_current->znum,p_current->zmark,p_current->date,p_current->amount); } fclose(fp); printf("\n\n\n\n\n文件已保存!!!请按任意键继续"); getchar();getchar();}/*从文件导入*/voidimport(char*filename,structinformation*p_root){ FILE*fp=fopen(filename,"r+"); structinformation*p_current=p_root,*p_new; inti=0,rtn; if(fp==NULL) return;do { p_new=(structinformation*)malloc(sizeof(structinformation)); if(p_new==NULL) return; rtn=fscanf(fp,"%d%d%s%d",&p_new->znum,&p_new->zmark,p_new->date,&p_new->amount); if(rtn!=EOF) { p_current->ne*t=p_new; p_current=p_new; } } while(rtn!=EOF); p_current->ne*t=NULL; free(p_new); fclose(fp); printf("\n\n\n\n\n文件已导入!!!请按任意键继续"); getchar();getchar();}/**显示函数*/intmenu_show();/*主菜单函数*/voidmenu_select(intsel,structinformation*head);/*功能函数*/intjudge_date();/*判断日期函数*/voidscanf_clerk();/*导入销售员资料函数*/voidscanf_product();/*导入产品资料函数*/voidscanf_add(structinformation*head);/*导入销售信息函数*/intchange_date();/*定义把时间格式转换成整形*//*根据参数选择相应的功能函数sel功能选择代码head链表头节点*/voidmenu_select(intsel,structinformation*head) { voidshowoo();// voidwriteInfo(); switch(sel) { case0:Create_clerk();break; case1:Create_product();break; case2:add(head);break; case3:system("cls");e*port(".\\*.t*t",head);break; case4:search(head);break; case5:print(head);break; case6:system("cls"); case7:showoo();break; case8:Delete(head);break; printf("\n\n*****************************使用***************************************\n\n\n"); e*it(0); }}voidshowoo(){ system("cls"); printf("\n\n\n***********************************题目****************************************\n\n"); printf("问题描述:\n\n已知一公司*公司有4个销售员(编号、、性别)\n"); printf("负责销售5种产品(产品代号、产品名称,销售价格)。设计一程序,完成以下功能:"); printf("\n从键盘输入销售信息:销售员编号、产品编号、销售日期、销售数量"); printf("\n输入时需要判断销售员编号是否存在、产品编号是否存在、销售数量是否大于0,\n销售日期日期格式是否合法(格式为:YYYY-MM-DD(年限2001-2012),如2009-01-02)))"); printf("\n能输出指定时间段的销售统计报表"); printf("\n根据销售员编号查询销售历史情况"); printf("\n能删除指定销售员、产品、销售日期的记录"); printf("\n所有数据符合实际应用要求"); printf("\n\n请按任意键继续、、、、、、"); printf("\n********************************************************************************"); getchar();}/*菜单函数,函数返回值为整数,代表所选的菜单项*/intmenu_show(){ chars[80]; inti; printf("\n\t********************销售管理系统***********************\n"); printf("\n\t\t0.创建销售员个人资料\n"); printf("\n\t\t1.创建产品资料\n"); printf("\n\t\t2.输入销售信息\n"); printf("\n\t\t3.保存销售信息\n"); printf("\n\t\t4.查询销售信息\n"); printf("\n\t\t5.显示销售信息报表\n"); printf("\n\t\t6.退出(任何情况下按Ctrl+C退出程序)\n"); printf("\n\t\t7.显示题目\n"); printf("\n\t\t8.删除销售信息\n"); printf("\n\t*******************************************************\n"); printf("\n请输入0-8之间的数选择需要的操作:");/*提示输入选项*/gets(s);while(1){ if(strlen(s)!=1||s[0]<'0'||s[0]>'8') {printf("\n输入错误请输入0-8之间的数:"); fflush(stdin); gets(s);} elsebreak;}/*i=(int)s[0]-48;*/i=atoi(s); returni;/*返回选择项,主程序根据该数调用相应的函数*/ }/******主函数开始*******/main(){ structinformation*head;/*定义链表的头节点*/ intsize=sizeof(structinformation); head=(structinformation*)malloc(size); head->ne*t=NULL; for(;;)/*无限循环*/ { system("cls");/*清屏*/ menu_select(menu_show(),head); }}/*定义键盘输入销售员函数*/voidclerk(){ structclerk*pt1; inti,j=0; chars[100]; system("cls");/*清屏*/ printf("**********************************输入界面**************************************\n"); printf("\n销售员的编号性别(男or女)\n");printf("\n"); for(i=0;i<4;i++){ pt1=cle+i;printf("\n第%d个人资料(请输入回车键开始):",i+1);getchar();printf("\n请输入销售员的编号%d:",i+1);gets(s);while(1){ if(strlen(s)!=1||atoi(s)!=i+1) {printf("\n输入错误请输入销售员的编号%d:",i+1); fflush(stdin); gets(s);} elsebreak;}/*pt1->num=(int)s[0]-48;*/pt1->num=atoi(s);printf("\n请输入(汉字):");scanf("%s",pt1->name);while(pt1->name[j]!=0){if(pt1->name[j]<0)j++;else{printf("\n输入错误请再输入(汉字):");fflush(stdin);scanf("%s",pt1->name);}}printf("\n请输入性别(男或女):");scanf("%s",pt1->se*);while(!((strcmp(pt1->se*,"男")==0)||(strcmp(pt1->se*,"女")==0))){ printf("\n性别输入有误请重新输入(男或女):");fflush(stdin); scanf("%s",pt1->se*);}}printf("\n输入完毕!!\n\n");}/*定义文件导入销售员函数*/voidscanf_clerk(){ structclerk*pt1=cle; FILE*fp; system("cls");/*清屏*/ if((fp=fopen("*iaoshoury.t*t","r"))==NULL){ printf("Fileopenerror!\n"); e*it(0); } printf("\n*********************************输入界面**************************************\n"); printf("\n销售员的编号(1-4)性别(男或女)\n"); while(!feof(fp)) { fscanf(fp,"%d%s%s",&pt1->num,pt1->name,pt1->se*); printf("\n%-12d%-15s%-15s\n",pt1->num,pt1->name,pt1->se*); pt1++; } if(fclose(fp)){ printf("不能关闭文件!!\n"); e*it(0); } printf("\n\n导入成功,按任意键返回!\n\n"); getchar();}/*定义创建销售员资料函数*/voidCreate_clerk(){ intcel; chars[90];system("cls");/*清屏*/ printf("\n\n\n\n\t\t*******************输入资料界面***************\n\n"); printf("\n\t\t1.通过文件导入销售员资料\n"); printf("\n\t\t2.通过键盘输入销售员资料\n"); printf("\n\t\t0.返回\n\n"); printf("\n\t\t***********************************************\n"); printf("\n请输入0-2之间的数选择需要的操作:");gets(s);while(1){ if(strlen(s)!=1||s[0]<'0'||s[0]>'2') { printf("\n输入错误请输入0-2之间的数:"); fflush(stdin); gets(s);} elsebreak;}/*i=(int)s[0]-48;*/cel=atoi(s); switch(cel) { case1:scanf_clerk();break; case2:clerk();break; case0:break; }/*getchar();读入任意字符卡住屏幕信息*/}/*键盘输入*/voidproduct(){ structproduct*pt2; inti=0,j; chars[81]; system("cls");/*清屏*/ printf("**********************************输入界面**************************************\n"); printf("\n产品代号(1-5)名称价格:"); printf("\n"); for(j=0;j<5;j++) { pt2=prod+j; printf("\n第%d个产品资料(请输入回车键开始):",j+1); getchar();printf("\n请输入产品代号数字%d:",j+1);gets(s);while(1)/*(pt2->mark!=j+1)*/{if(strlen(s)!=1||atoi(s)!=j+1) {printf("\n输入错误请输入产品编号%d:",j+1); fflush(stdin); gets(s);} elsebreak;}pt2->mark=atoi(s);printf("\n请输入产品名称(请输入汉字):");scanf("%s",pt2->cp**);while(pt2->cp**[i]!=0){if(pt2->cp**[i]<0)i++;else{printf("\n输入错误请再输入产品名称(请输入汉字):");fflush(stdin);scanf("%s",pt2->cp**);}}fflush(stdin);printf("\n请输入产品价格(数字):");scanf("%d",&(pt2->price));} printf("\n输入完毕,按任意键返回!"); /*getchar();*/}/*定义文件导入产品资料*/voidscanf_product(){ structproduct*pt1=prod; FILE*fp; system("cls");/*清屏*/ if((fp=fopen("chanpin.t*t","r"))==NULL) { printf("Fileopenerror!\n"); e*it(0); } printf("************************************输入界面************************************\n"); printf("\n产品代号(1-5)产品名称价格\n"); while(!feof(fp)) { fscanf(fp,"%d%s%lf",&pt1->mark,pt1->cp**,&pt1->price); printf("\n%10d%19s%16.lf\n",pt1->mark,pt1->cp**,pt1->price); pt1++; } if(fclose(fp)){ printf("不能关闭文件!!\n"); e*it(0); } printf("\n\n导入成功,按任意键返回!"); getchar();}/*新建产品资料*/voidCreate_product(){ intcel; chars[82]; system("cls");/*清屏*/ printf("\n\n\n\n\n\n\t\t**********************输入资料界面**********************\n"); printf("\n\t\t1.通过文件导入产品资料\n"); printf("\n\t\t2.通过键盘输入产品资料\n"); printf("\n\t\t0.返回\n"); printf("\n\t\t********************************************************\n"); printf("\n请输入0-2之间的数选择需要的操作:");gets(s);while(1){ if(strlen(s)!=1||s[0]<'0'||s[0]>'2') {printf("\n输入错误请输入0-2之间的数:"); fflush(stdin); gets(s);} elsebreak;}cel=atoi(s);/*i=(int)s[0]-48;*/ switch(cel) { case1:scanf_product();break; case2:product();break; case0:break; }/*getchar();读入任意字符卡住屏幕信息*/}/*定义判断时间格式是否正确*/intjudge_date(chardate[11]){ inti,y,m,d,s1; s1=0; for(i=0;i<10;i++){ if(date[i]=='\0'){ s1=0; break; } } if(date[4]=='-'&&date[7]=='-'){ y=1000*(date[0]-48)+100*(date[1]-48)+10*(date[2]-48)+date[3]-48; m=10*(date[5]-48)+date[6]-48; d=10*(date[8]-48)+date[9]-48; } if(i==10&&y<2013&&y>2000){ if(y%4==0&&m==2&&d>0&&d<=29)s1=1; elseif(y%4!=0&&m==2&&d>0&&d<=28)s1=1; elseif((m==1||m==3||m==5||m==7||m==8||m==10||m==12)&&d>0&&d<=31)s1=1; elseif((m==4||m==6||m==9||m==11)&&d>0&&d<31)s1=1; }if(s1==0)printf("日期输入错误!!"); returns1;}/*定义把时间格式转换成整形*/intchange_date(chardate[11]){ inty; y=(int)10000000*(date[0]-48)+1000000*(date[1]-48)+100000*(date[2]-48)+10000*(date[3]-48)+1000*(date[5]-48)+100*(date[6]-48)+10*(date[8]-48)+date[9]-48;return(y);}/*定义键盘输入销售信息函数*/voidinformation(structinformation*head){ structinformation*temp,*p; chars[89]; inti=0; intsize=sizeof(structinformation); p=head; temp=(structinformation*)malloc(size);temp->ne*t=NULL; while(p->ne*t!=NULL) { p=p->ne*t; } system("cls"); printf("*********************************请输入销售信息********************************\n\n"); printf("销售员编号(1~4)产品代号(1~5)日期(YYYY-MM-DD(年限2001-2012))销售数量\n"); printf("\n"); printf("\n请输入销售员编号(1~4):"); gets(s);while(1){if(strlen(s)!=1||s[0]<'1'||s[0]>'4') {printf("\n输入错误请输入销售员的编号(1~4):"); fflush(stdin); gets(s);} elsebreak;} temp->znum=atoi(s); printf("\n请输入产品代号(1~5):"); gets(s);while(1){if(strlen(s)!=1||s[0]<'1'||s[0]>'5') {printf("\n输入错误请输入产品编号(1~5):"); fflush(stdin); gets(s);} elsebreak;} temp->zmark=atoi(s); printf("\n请输入日期(YYYY-MM-DD(年限2001-2012)):"); scanf("%s",temp->date); while(judge_date(temp->date)==0) { printf("\n输入错误请输入日期(YYYY-MM-DD(年限2001-2012)):"); fflush(stdin); scanf("%s",temp->date); }fflush(stdin); printf("\n请输入销售数量(数字):"); scanf("%d",&temp->amount); p->ne*t=temp; printf("\n\n输入完毕,按任意键返回!"); getchar();getchar();}/*定义文件导入销售信息函数*/voidscanf_add(structinformation*head){ structinformation*pt1=head; structinformation*temp; intsize=sizeof(structinformation); FILE*fp; system("cls");/*清屏*/ if((fp=fopen("*in.t*t","r"))==NULL){ printf("Fileopenerror!\n"); e*it(0); } printf("\t**********************输入销售信息界面***************************\n"); printf("销售员编号(1~4)产品代号(1~5)日期(YYYY-MM-DD(年限2001-2012))销售数量(数字)\n"); while(!feof(fp)) { while(pt1->ne*t!=NULL) { pt1=pt1->ne*t; } temp=(structinformation*)malloc(size);/*申请新的地址*/ temp->ne*t=NULL; fscanf(fp,"%d%d%s%d",&temp->znum,&temp->zmark,temp->date,&temp->amount); printf("\n%8d%14d%26s%15d",temp->znum,temp->zmark,temp->date,temp->amount); pt1->ne*t=temp; pt1=temp; } if(fclose(fp)){ printf("不能关闭文件!!\n"); e*it(0); } printf("\n\n导入成功,按任意键返回!\n"); getchar();}/*定义输入销售信息函数*/voidadd(structinformation*head){ intcel; chars[84]; system("cls");/*清屏*/ printf("\n\n\n\n\n\n\t\t*********************输入销售信息界面***************\n"); printf("\n\t\t1.通过文件导入销售信息记录\n"); printf("\n\t\t2.通过键盘输入销售信息记录\n"); printf("\n\t\t0.返回\n"); printf("\n\t\t*****************************************************\n"); printf("\n请输入0-2之间的数选择需要的操作:");gets(s);while(1){ if(strlen(s)!=1||s[0]<'0'||s[0]>'2') {printf("\n输入错误请输入0-2之间的数:"); fflush(stdin); gets(s);} elsebreak;}cel=atoi(s); switch(cel) { case1:import(".\\*.t*t",head);break; case2:information(head);break; case0:break; }/*getchar();读入任意字符卡住屏幕信息*/}/*定义删除函数**/voidDelete(structinformation*head){ intcel; chars[85]; system("cls");/*清屏*/ printf("\n\t\t******************删除记录系统*****************\n\n"); printf("\n\t\t1.删除指定销售员的销售信息记录\n"); printf("\n\t\t2.删除指定产品的销售信息记录\n"); printf("\n\t\t3.删除指定销售日期的销售信息记录\n"); printf("\n\t\t0.返回\n"); printf("\n\t\t***********************************************\n"); printf("\n请输入0-3之间的数选择需要的操作:");gets(s);while(1){ if(strlen(s)!=1||s[0]<'0'||s[0]>'3') {printf("\n输入错误请输入0-3之间的数:"); fflush(stdin); gets(s);} elsebreak;}/*i=(int)s[0]-48;*/cel=atoi(s); switch(cel) { case1:dclerk(head);break; case2:dpro(head);break; case3:dinf(head);break; case0:break; } return;}voiddinf(structinformation*head){ chartemp[11]; inti=0;//;,qp; structinformation*p,*ptr1,*ptr2; p=head->ne*t; if(p==NULL) {/*未建销售信息*/ printf("\n***销售信息记录为空!***\n***请先输入销售信息!***\n\n"); printf("按任意键返回!"); getchar();getchar(); return; } printf("\n请输入要删除记录的销售日期(YYYY-MM-DD(年限2001-2012)):"); scanf("%s",temp); while(judge_date(temp)==0) { printf("\n输入错误请输入日期(YYYY-MM-DD(年限2001-2012)):"); fflush(stdin); scanf("%s",temp); } //qp=atoi(temp); while(p!=NULL&&p->date==temp){/*要删除结点为表头结点*/ ptr2=p; p=p->ne*t; free(ptr2); } if(p==NULL){ printf("\n删除成功!销售信息已为空!\n"); printf("按任意键返回!");// writeinfo_flag=1; return; } /*要删除结点为非表头结点*/ ptr1=p; ptr2=p->ne*t; while(ptr2!=NULL){ if(strcmp(temp,ptr2->date)==0){ ptr1->ne*t=ptr2->ne*t; free(ptr2); i++; } else ptr1=ptr2; ptr2=ptr1->ne*t; } if(i!=0) printf("\n***删除成功!***\n\n"); else printf("\n***没有该日期的销售信息****\n\n"); printf("按任意键返回!"); getchar();}/*定义删除指定产品的记录函数*/voiddpro(structinformation*head){ inta,i=0; chars[92]; structinformation*p,*ptr1,*ptr2; p=head->ne*t; if(p==NULL) {/*未建销售信息*/ printf("\n***销售信息记录为空!***\n***请先输入销售信息!***\n"); printf("按任意键返回!"); getchar(); getchar(); return; } printf("\n请输入要删除记录的产品编号(1~5):");gets(s);while(1){if(strlen(s)!=1||s[0]<'1'||s[0]>'5') {printf("\n输入错误请输入销售员的编号(1~5):"); fflush(stdin); gets(s);} elsebreak;} a=atoi(s); /*scanf("%d",&a);*/ while(p!=NULL&&p->zmark==a){/*要删除结点为表头结点*/ ptr2=p; p=p->ne*t; free(ptr2); } if(p==NULL){ printf("\n删除成功!销售信息已为空!\n"); printf("按任意键返回!"); getchar(); getchar();// writeinfo_flag=1; return; } /*要删除结点为非表头结点*/ ptr1=p; ptr2=p->ne*t; while(ptr2!=NULL){ if(ptr2->zmark==a){ ptr1->ne*t=ptr2->ne*t; free(ptr2); i++; } else ptr1=ptr2; ptr2=ptr1->ne*t; } if(i!=0) printf("\n***删除成功!****\n\n"); else printf("\n***没有该产品的销售信息****\n"); printf("按任意键返回!"); getchar(); getchar();}/*定义删除指定销售员的记录函数*/voiddclerk(structinformation*head){ structinformation*p,*ptr1,*ptr2; chars[91]; inttemp,i=0; p=head->ne*t; if(p==NULL){/*未建销售信息*/ printf("\n***销售信息记录为空!***\n***请先输入销售信息!***\n\n"); printf("按任意键返回!"); getchar();getchar(); return; } printf("\n请输入要删除记录的销售员编号(1~4):");gets(s);while(1){if(strlen(s)!=1||s[0]<'1'||s[0]>'4') {printf("\n输入错误请输入销售员的编号(1~4):"); gets(s);} elsebreak;} temp=atoi(s); /* scanf("%d",&temp);*/ while(p!=NULL&&p->znum==temp){/*要删除结点为表头结点*/ ptr2=p; p=p->ne*t; free(ptr2); } if(p==NULL){ printf("\n删除成功!销售信息已为空!\n\n"); printf("按任意键返回!"); getchar();getchar(); return; } /*要删除结点为非表头结点*/ ptr1=p; ptr2=p->ne*t; while(ptr2!=NULL){ if(ptr2->znum==temp){ ptr1->ne*t=ptr2->ne*t; free(ptr2); i++; } else ptr1=ptr2;/*ptr1后移一个结点*/ ptr2=ptr1->ne*t;/*ptr2指向ptr1的后一个结点*/ } if(i!=0) printf("\n***删除成功!***\n\n\n"); else printf("\n***没有该销售员的销售信息****\n\n"); printf("按任意键返回!"); getchar(); getchar();}voidsearch(structinformation*head){ intinum,i=0; chars[95]; structinformation*ptr=head->ne*t; system("cls");/*清屏*/ printf("\n************************************查询界面************************************\n\n"); if(ptr==NULL){ printf("\n\n\n\n*****销售信息记录为空!按任意键返回!*****"); getchar(); getchar(); return; } printf("\n请输入要查询的销售员的编号(1~4):");gets(s);while(1){if(strlen(s)!=1||s[0]<'1'||s[0]>'4') {printf("\n输入错误请输入销售员的编号(1~4):"); fflush(stdin); gets(s);} elsebreak;} inum=atoi(s); /*scanf("%d",&inum);*/ for(;ptr;ptr=ptr->ne*t) { if(ptr->znum==inum) { printf("\n销售员编号:%d产品代号:%d销售日期:%s销售数量:%d\n",inum,ptr->zmark,ptr->date,ptr->amount); i++; } } if(i==0) printf("\n***没有该销售员的销售信息!***\n\n"); printf("\n显示完毕,按任意键返回!"); getchar(); getchar();}/*定义导出销售信息报表函数*/voidfpint(structinformation*head){ inti,j; chars1[11],s2[11]; intreport[5][6]; inta,b; FILE*fp; structinformation*ptr=head->ne*t; system("cls");/*清屏*/ printf("\n请输入销售信息起始日期<YYYY-MM-DD(年限2001-2012)>:"); gets(s1);while(judge_date(s1)==0) { printf("\n输入错误请输入起始日期(YYYY-MM-DD(年限2001-2012)):"); gets(s1); } printf("\n请输入销售信息截止日期<YYYY-MM-DD(年限2001-2012)>:"); gets(s2); while(judge_date(s2)==0||change_date(s2)<change_date(s1)) { printf("\n输入错误请输入截止日期(YYYY-MM-DD(年限2001-2012)):"); fflush(stdin); gets(s2); } for(i=0;i<5;i++) for(j=0;j<6;j++) report[i][j]=0; if((fp=fopen("baobiao.t*t","w"))==NULL) { printf("不能打开文件!"); e*it(0); } fprintf(fp,"\n*********************************销售信息统计报表*******************************\n"); fprintf(fp,"产品代号销售之和\n"); fprintf(fp,"销售员代号12345\n"); for(i=0;i<4;i++) { fprintf(fp,"%10d",i+1); for(j=0;j<5;j++) { for(ptr=head->ne*t;ptr;ptr=ptr->ne*t){ a=strcmp(s2,ptr->date); b=strcmp(ptr->date,s1); if(((ptr->zmark)==(j+1))&&((ptr->znum)==(i+1))&&(a>=0)&&(b>=0)) report[i][j]+=(ptr->amount); }/*累加指定销售员,产品代号的销售数量*/ fprintf(fp,"%11d",report[i][j]);/*打印指定销售员,产品代号的销售数量*/ report[i][5]+=report[i][j]; } fprintf(fp,"%10d\n",report[i][5]); } fprintf(fp,"每种产品之和"); for(j=0;j<6;j++){ for(i=0;i<4;i++) report[4][j]+=report[i][j]; fprintf(fp,"%9d",report[4][j]); } fprintf(fp,"\n\n"); if(fclose(fp)) { printf("文件无法关闭"); e*it(0); } printf("\n 报表导出成功!!!"); printf("\n按任意键返回!");getchar();}/*定义显示报表函数*/voidpri_*in(structinformation*head){ inti,j;

温馨提示

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

评论

0/150

提交评论