C语言销售管理及设计程序管理知识分析报告(共45页).doc_第1页
C语言销售管理及设计程序管理知识分析报告(共45页).doc_第2页
C语言销售管理及设计程序管理知识分析报告(共45页).doc_第3页
C语言销售管理及设计程序管理知识分析报告(共45页).doc_第4页
C语言销售管理及设计程序管理知识分析报告(共45页).doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGYC语言程序设计课程设计报告课设题目: 学生信息管理系统 专 业: 电气工程及其自动化 班 级: 商品销售管理 姓 名: 胡军 成 绩: 完成日期: 2012年6月18日2012年6月22日指导教师: 史旅华 梅琴 目 录1.课程设计目的32.需求分析32.1要求32.2任务描述32.3运行环境32.4开发工具43.总体设计43.1系统流设计43.2系统模块设计54.详细设计54.1数据结构设计54.2模块接口设计74.3 以下是几个主要模块的流程图:85.运行结果165.1主菜单界面:165.2信息录入界面:16

2、5.3信息浏览界面:175.4 信息查询界面:175.5信息修改界面:186.程序调试与测试206.1程序调试206.2程序测试217.问题与不足238.建议239.编程体会2410.程序源代码:2411.参考文献3912.用户使用手册401.课程设计目的1) 通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。2) 通过课程设计,进一步掌握C语言中重要的数据结构。掌握并熟练运用指针、链表、结构体、文件等数据结构。3) 通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。4) 通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获

3、得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。5) 通过课程设计,加强了自己的程序分析能力。2.需求分析2.1要求1) 遵循软件开发过程的基本规范;能灵活应用,初步具备运用C程序解决实际问题的能力。2) 运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。3) 学会利用数组、结构体、链表进行相关信息表示。4) 功能模块划分清晰,系统结构图符合功能操作要求,且有详尽的功能描述5) 各主要功能模块有详尽的流程图及描述,用函数的形式实现,且调用入口、功能、出口等关系正确。6) 所设计的C程序

4、较好的可读性和可靠性;程序书写风格规范,注释清晰。7) 界面友好(良好的人机互交),凡需要输入信息时,都有较详尽的提示信息,并对输入信息有较完善的值域分析。8) 程序经上机调试通过,不应出现语法型、功能型错误,并获得满意的结果。9) 学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现。10) 掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。11) C语言课程设计报告的内容反应实际设计过程,且符合格式要求,无抄袭现象。2.2任务描述此系统以键盘输入和导入文件获得商品信息,通过选择操作码实现录入信息、查询信息、保持你信息等不同的功能。具体有以下功能:1)

5、 显示主界面并提示用户选择。2) 导入商品信息:实现从键盘输入或从文件导入10个商品信息。3) 输入销售记录:从键盘输入销售记录,以进行下面的查询。4) 按编号查询销售历史:根据输入的商品编号从销售信息中显出对应的销售信息。5) 按顾客姓名查询销售历史:根据输入的顾客姓名在输入的销售记录查询其购买的商品信息。6) 计算时间段内销售总额:更具输入的时间从销售信息中计算销售总和。7) 显示顾客信息:从销售记录中抽取并显示顾客姓名。8) 保存销售信息:保存所输入的销售信息。9) 保存顾客信息:保存顾客的编码及姓名。10) 退出:退出系统,谢谢使用。2.3运行环境1) WindowsXP/7系统2)

6、VC+6.0编译环境2.4开发工具C语言3.总体设计3.1系统流设计开始主菜单导入商品信息退出保存顾客信息保存商品信息显示顾客姓名按顾客姓名按编码查询输入销售记录按时间段查询3.2系统模块设计1) 主菜单界面:构造函数int select(),实现系统主菜单的显示。2) 商品信息导入:构造函数void Enter_productmessage(),实现商品信息的导入及显示。并通过分别调用函数void comp()和void file(),实现从键盘输入信息和通过文件导入信息。3) 输入销售记录:构造函数void Creat(),实现对从键盘输入销售记录并通过调用int judgech(char

7、 *a)、 int judgedate(char date10)函数判断商品名、销售日期是否合法 。4) 按编号查询销售历史:构造函数void Search_num(),实现从键盘输入商品编号查询该编号对应商品的销售记录。5) 按顾客姓名查询销售历史:构造函数void Saerch_ customername (),实现从键盘输入顾客姓名查询该顾客的购买历史信息。如果没有该顾客信息可选择新建该顾客销售记录。6) 计算各时段内销售总额:构造函数void Search_date(),实现从键盘输入日期并调用int judgedate(char date10)判断日期输入是否合法查询从输入时间导系统

8、时间内的销售总额。7) 显示顾客姓名:构造函数void Printf_customername(),实现显示所有顾客的姓名。8) 保存销售信息:构造函数 void Save_product(),实现保存销售商品的信息。9) 保存顾客信息:构造函数void Save_customername(),实现保存顾客的信息。10) 退出:构造函数void Exit(),实现退出系统,显示“谢谢使用”。4.详细设计4.1数据结构设计根据系统要求,系统中需要保存的数据信息,其结构如下:数据项名称数据项系统表示数据类型数据长度备注商品名称productnamechar20必须汉子商品编码numint商品产地p

9、lacechar30必须汉子商品价格pricefloat顾客名字namechar20必须汉子顾客购买编码numint顾客购买数量countint顾客购买日期datechar10顾客编码IDint根据系统要求,系统中需要保存的类别信息,其结构如下:类别代号datecoutIDname类别名称销售日期销售数量顾客编码顾客名字为了能实现不受限制的增加商品,各科信息,采用链表的结构保存商品和销售信息,在增加商品和顾客的基本信息时,分别创建一个对应的节点,将其插入到对应的链表中,示意图如下。 商品信息1商品信息2通讯录信息1221商品信息3商品信息4销售信息1销售信息2通讯录信息1221销售信息3销售信

10、息4为此,先声明一个类型为struct product和sturct sell的结构体,对应的成员分别为商品编码、商品名称、商品售价、商品产地商品库存和顾客代码、顾客姓名、商品编码、销售数量、销售日期信息。然后通过对指针、链表、文件等数据结构的操作,实现对商品和顾客信息的录入、查询、浏览等一系列操作。其中,结构体定义如下:struct product /定义商品数据结构 int num; /商品编号 char productname20; /商品名称 float price; /商品售价 char place30; /商品产地 int storage; /商品库存 struct product

11、 *next;*head,*p1,*p2;、struct time /定义时间结构体int year; / 年int month; /月int day; /天struct sell /定义销售数据结构 int ID; /顾客代码 char customername20; /顾客姓名 int num; /商品编号 int count; /销售数量 char date10; /日期 struct sell * next1; *head1; 4.2模块接口设计1) 所有函数模块声明如下:int select(); /主菜单函数void Enter_productmessage(); /导入商品信息v

12、oid Creat(); /导入销售记录void Search_num(); /按编号查询销售历史void Search_customername(); /按顾客姓名查询购买历史 void Search_date(); /计算时间段内销售总额void Printf_customername(); /显示顾客信息void Save_product(); /保存销售信息void Save_customername(); /保存顾客信息void Exit(); /退出程序int judgech(char *a) /判断是否为汉字int judgedate(char date10) /判断日期是否合法

13、void file() /从文件导入商品信息void comp() /从键盘输入商品信息2) 主要模块的实现系统以主函数int main()为入口,首先通过int select()函数,显示课程设计名称、作者信息及主菜单。提示用户选择,系统接收用户输入的选择,通过主函数根据用户选择进行判断,选择合法后调用相应的函数,进入到下一级菜单进行,在下一个功能中进行对应的工作。4.3 以下是几个主要模块的流程图:1) 主菜单函数:主菜单判断对应功能用户选择YN2) 信息导入函数: 导入信息菜单判断从文件导入从键盘输入用户选择12N3) 输入商品信息函数输入商品的信息判断显示信息Y修正N判断YN返回主菜单

14、4) 按编码查询函数输入要查询商品的编码判断显示信息Y返回主菜单N5) 按顾客姓名查询函数返回主菜单Y判断输入要查询商品的编码 输入要查询顾客的姓名判断显示信息YN 6) 时间段内销售总额函数输入要查询时间段判断显示信息YN7) 保存销售商品信息函数 输入保存文件名判断显示信息保存成功YN8) 保存顾客信息函数输入保存文件名判断显示信息保存成功YN5.运行结果5.1主菜单界面:主菜单界5.2信息导入界面:信息导入界面从文件导入信息界面从键盘输入商品信息 5.3销售信息录入界面: 从键盘输入销售信息5.4 按编码信息查询界面: 从键盘中输入要查询的商品编码,进行查询,并显示结果。5.5按顾客姓名

15、信息界面: 从键盘输入要查询顾客的姓名,进行查询,并显示结果。5.6查询时间段内信息界面: 从键盘输入两个时间,查询改时间内的销售信息,是结果5.7显示顾客姓名 保存顾客学名5.8保存销售商品信息 保存销售商品信息5.9保存顾客信息 保存顾客信息5.10退出程序 退出程序6.程序调试与测试6.1程序调试 导入商品信息模块从文件导入 从键盘输入输入销售记录6.2程序测试 查询:输入数字大于10输入1输入错误顾客姓名真确姓名输入时间段不符合(2011-05-052011-05-05)输入真确日期(2011-02-032011-02-03)7.问题与不足(1)题目重要求判断是否是汉字,要求时间调用系

16、统时间。但是由于这些并不会,所以借用了判断汉子。但调用时间任然不会。(2)在设计中不能一次输入多条商品信息和多条销售记录,而是需选择Y/y后输入下一条。(3)没有设计一个判断商品信息是否错误的函数。(4)在编码中由于没有判断商品信息是否合法的函数,使程序很长。有些是反复使用,有些语句显得太罗嗦。(5)在调试时,如果看提示信息,不按要求而是乱输可能会导致程序不能正常运行或者结果错误。8.建议 在本次课设中,在时间上我觉得时间有点短,虽然差不多是两个周,但是由于要准备考试所以不能完全投入到课设中去。课设的题目分配时难易度不一样,而又不是自己选取题目,这样对于学得好的与学的差的所接受的任务不符合。对

17、我自己来说,我的题目让同学帮忙,基本都说链表不会。在辅导时候老师只有两个,有时候有问题却没有老师。等老师有时间我们自己又不想弄了。在以后的课设中,我希望老师按照个人所学的程度来分配难易的题目或者都是一样的题目,当然我知道老师也有老师的道理,但是学习是自己的事,想抄袭的人不管啥样的题目他都会抄袭的。在时间上可以放宽一些以便程序更完美。辅导老师辛苦些,多加几个老师辅导更多的学生。9.编程体会通过这次课设,我知道了自己C语言不懂不会的地方,在前面学习的知识后来不能灵活运用,有些东西虽然当时觉得很简单,也掌握了,但是到自己用的时候却总是出错!自从上了结构体之后,C语言的学习难度加大,但我依旧不重视,和

18、前面一样的学习。结果后面的全听不懂,特别是链表和指针。本次的课设编程题目对我来说是很难的。里面要用到链表指针但通过课设,这些都是我不会的。通过请教同学和老师总算编好了程序,同时对链表和指针有些了解,虽然用的不灵活但知道了怎么用。编完程序我反思自己的学习,发现学习C语言只看懂书是没用的,平时要多练习。当然不是简单的题,而是难题。在练习难题的时候多思考,运用不同的方法解决问题。遇到不懂的要问老师问同学或者看书来解决。总之,在课设中我清楚的认识了自己C语言的现状,在经后的练习中我会努力克服不足学好C语言、灵活运用C语言。10.程序源代码:#include<stdio.h>#include

19、<stdlib.h>#include<string.h>#include<malloc.h>struct product /定义商品数据结构 int num; /商品编号 char productname20; /商品名称 float price; /商品售价 char place30; /商品产地 int storage; /商品库存 struct product *next; *head,*p1,*p2; /定义主结构体数组和备用结构体数组及指针struct time /定义时间结构体int year;int month;int day;struct s

20、ell /定义销售数据结构 int ID; /顾客代码 char customername20; /顾客姓名 int num; /商品编号 int count; /销售数量 char date10; /日期 struct sell * next1; *head1; /定义头指针head,缓冲指针p1,以及尾指针p2/*函数申明*/void Enter_productmessage(); /导入商品信息void Creat(); /输入销售记录void Search_num(); /按编号查询销售历史void Search_customername(); /按顾客姓名查询购买历史void Pri

21、ntf_customername(); /显示顾客信息void Search_date(); /计算时间段内销售总额void Save_product(); /保存销售信息void Save_customername(); /保存顾客信息void Exit(); /退出程序/*主菜单*/int select()int c; printf("tt*欢迎使用商品销售管理程序*n");printf("tt T1123-5班 胡 军 一分耕耘 一分收获 n");printf("n-n");printf("n");print

22、f("tt*n"); printf("tt*欢迎使用商品销售管理系统*n"); printf("tt* *n"); printf("tt* 1:导入商品信息 *n"); printf("tt* 2:输入销售记录 *n"); printf("tt* 3:按编号查询销售历史 *n"); printf("tt* 4: 按顾客姓名查询购买历史 *n"); printf("tt* 5:计算时段内各销售总额 *n"); printf("t

23、t* 6:显示顾客信息 *n"); printf("tt* 7:保存销售信息 *n"); printf("tt* 8:保存顾客信息 *n");printf("tt* 0:退出 *n"); printf("tt*n"); printf("n-n"); printf("tt请输入您的选择(08的整数): ");scanf("%d",&c);return c;/*主函数*/int main()for(;)switch(select()case

24、1:system("cls");Enter_productmessage();break;case 2:system("cls");Creat();break;case 3:system("cls");Search_num();break;case 4:system("cls");Search_customername();break;case 5:system("cls");Search_date();break;case 6:system("cls");Printf_cu

25、stomername();break;case 7:system("cls");Save_product();break;case 8:system("cls");Save_customername();break; case 0:system("cls");Exit();break;default : system("cls"); printf("nnnnnn");printf("tt*n"); printf("tt* 输入错误!请重新输入您的选择(08的整数)

26、*n");printf("tt* 请按Enter键返回! *n");printf("tt*n"); getchar();getchar();system("cls");return 0;/*/int judgech(char *a) /判断是否为汉字int i,flag;for(i=0;ai!='0'i+)if(ai>=0)flag=0;break;else flag=1; return flag;int judgedate(char date10) /判断日期是否合法int i,year,month,

27、day,s1=0; /日期格式输入正确则s1=1,否则s1=0for(i=0;i<10;i+)if(datei='0')s1=0;break;if(date4='-'&&date7='-')if(strlen(date)=10)year=1000*(date0-48)+100*(date1-48)+10*(date2-48)+(date3-48);/年月日 month=10*(date5-48)+(date6-48); day=10*(date8-48)+(date9-48);if(i=10)if(year%4=0&

28、&month=2&&day>0&&day<=29) s1=1;else if(year%4!=0&&month=2&&day>0&&day<=28) s1=1;else if(month=1|month=3|month=5|month=7|month=8|month=10|month=12)&&day>0&&day<=31) s1=1;else if(month=4|month=6|month=9|month=11)&&da

29、y>0&&day<=30) s1=1;return s1;void file() /读入文件操作int i=0,m=0,k=1,j=1,c=1,o=1,v=1; FILE *fp;char filename30; printf("请输入读入文件路径:");rewind(stdin);gets(filename);rewind(stdin);p1=p2=head=(struct product*)malloc(sizeof(struct product);if(fp=fopen(filename,"r+")=NULL) prin

30、tf("tt*n"); printf("tt* 导入信息文件错误!请检查文件路径! *n"); printf("tt*n");getchar();system("cls");Enter_productmessage(); printf("*商品信息*n"); printf("编号(1-10的整数) 名称(汉字) 价格(数字) 产地(汉字) 库存数量n"); printf("*n"); while(!feof(fp) p1=(struct product*)

31、malloc(sizeof(struct product);p2->next=p1;p1->next=NULL;p2=p1;fscanf(fp,"%d%s%f%s%d",&p2->num,p2->productname,&p2->price,p2->place,&p2->storage); while(k=1)if(p2->num>10|p2->num<=0) printf("t*n"); printf("tt第%d个商品编码!请重新输入(1-10):&q

32、uot;,i+1); rewind(stdin); scanf("%d",&p2->num);k=1;else k=0;while(j=1)if(judgech(p2->productname)=0)printf("tt第%d个商品名称错误!请重新输入(汉字):",i+1); rewind(stdin);scanf("%s",p2->productname);j=1;else j=0;while(o=1)if(p2->price<=0) printf("tt第%d个商品价格错误!请重新输

33、入价格(>0):",i+1); rewind(stdin); scanf("%f",&p2->price);o=1; else o=0;while(c=1)if(judgech(p2->place)=0) printf("tt第%d个商品产地格式错误!请重新输入(汉字):",i+1); rewind(stdin);scanf("%s",p2->place);c=0; else c=0;while(v=1)if(p2->storage!=1000) printf("t*n&quo

34、t;); printf("tt第%d个商品数量错误!请输入1000:",i+1); rewind(stdin);scanf("%d",&p2->storage);v=1;else v=0;printf("t%-12d%-15s %-15.2f%-15s%-12dn",p2->num,p2->productname,p2->price,p2->place,p2->storage); fclose(fp); void comp() FILE *fp;int i=0,n,k=1,m=1,c=1,l

35、=1,d=1;char filename20,a;printf("t请输入商品信息保存路径:");rewind(stdin);gets(filename);p1=p2=head=(struct product*)malloc(sizeof(struct product);if(fp=fopen(filename,"a+")=NULL) printf("tt*n"); printf("tt* 不能打开文件!请检查文件路径! *n"); printf("tt*n"); getchar(); syst

36、em("cls"); Enter_productmessage(); printf("nnn"); printf("tt*n");printf("tt* 若输入路径与从文件导入商品信息路径相同!*n"); printf("tt* 并已导入十个商品信息,请不要再导入! *n"); printf("tt* 注意商品编号不要和已导入的编码重复! *n");printf("tt*n");printf("nnn");getchar();syste

37、m("cls");printf("t已从文件导入的个数和要输入的个数和不超过十!nn");printf("t请输入要导入的销售记录个数:");scanf("%d",&n);if(n>0)dop1=(struct product*)malloc(sizeof(struct product); p2->next=p1;p1->next=NULL; p2=p1; printf("*商品信息*n"); printf(" 编号(整数) 名称(汉字) 价格(数字) 产地(

38、汉字) 库存数量n"); scanf("%d%s%f%s%d",&p2->num,p2->productname,&p2->price,p2->place,&p2->storage); while(k=1)if(p2->num>10|p2->num<=0) printf("t*n"); printf("tt 商品编码!请重新输入(1-10):"); rewind(stdin); scanf("%d",&p2->nu

39、m);k=1;else k=0;while(m=1)if(judgech(p2->productname)=0)printf("tt商品名称错误!请重新输入(汉字):"); rewind(stdin);scanf("%s",p2->productname);m=1;else m=0;while(l=1)if(p2->price<=0) printf("tt商品价格错误!请重新输入价格(>0):"); rewind(stdin); scanf("%f",&p2->price

40、);l=1; else l=0;while(c=1)if(judgech(p2->place)=0) printf("tt商品产地格式错误!请重新输入(汉字):"); rewind(stdin);scanf("%s",p2->place);c=1; else c=0;while(d=1)if(p2->storage!=1000) printf("t*n"); printf("tt 商品数量错误!请输入1000:"); rewind(stdin);scanf("%d",&

41、p2->storage);d=1;else d=0;p2=head->next;fprintf(fp,"n%-6d%-6s%-6.2f%-6s%-6dn",p2->num,p2->productname,p2->price,p2->place,p2->storage);printf("n%-6d%-6s%-6.2f%-6s%-6dn",p2->num,p2->productname,p2->price,p2->place,p2->storage); printf("tt是否

42、继续输入信息(Y/N)?n");getchar(); a=getchar();while(a='Y'|a='y');fclose(fp); /关闭文件夹if(n=0) printf("tt不从键盘输入入信息!");getchar(); getchar();system("cls"); fclose(fp); /关闭文件夹 void Enter_productmessage() /导入销售信息 int a;printf("t*n"); printf("t* 请输入10种产品的信息-编号、名称、价格、产地、数量: *n");printf("t* 1:通过文件导入(推荐)! *n");printf("t* 2: 通过键盘输入! *n");printf("t*n"); printf(&q

温馨提示

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

评论

0/150

提交评论