HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGY
C语言程序设计
实训报告
课设题目:销售管理系统
专业:计算机科学与技术
班级: _____________
姓名:
成绩:
完成日期: 指导教师:
目录
1.课程设计目的 (2)
2.需求分析 (2)
2.1要求 (2)
2.2任务描述 (2)
2.3运行环境 (3)
2.4开发工具 (3)
3.总体设计 (3)
3.1系统流设计 (3)
3.2系统模块设计 (4)
4.详细设计 (5)
4.1数据结构设计 (5)
4.2模块接口设计 (6)
4.3 以下是几个主要模块的流程图: (8)
5.运行结果 (11)
5.1主菜单界面: (16)
5.2信息录入界面: (17)
5.3信息浏览界面: (18)
5.4 信息查询界面: (18)
5.5信息修改界面: (19)
6.程序调试与测试 (20)
6.1程序调试 (20)
6.2程序测试 (22)
7.问题与不足 (22)
8.建议 (22)
9.编程体会......................................................................................... 错误!未定义书签。
10.程序源代码: (22)
11.参考文献 (41)
12.用户使用手册 (41)
1.实训目的
1)通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,
并设计合理的模块化结构。
2)通过课程设计,进一步掌握C语言中重要的数据结构。掌握并熟练运用指针、
链表、结构体、文件等数据结构。
3)通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。
4)通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识
运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。
5)通过课程设计,加强了自己的程序分析能力。
2.需求分析
2.1要求
1)遵循软件开发过程的基本规范;能灵活应用,初步具备运用C程序解决实际问
题的能力。
2)运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据
结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。
3)学会利用数组、结构体、链表进行相关信息表示。
4)功能模块划分清晰,系统结构图符合功能操作要求,且有详尽的功能描述
5)各主要功能模块有详尽的流程图及描述,用函数的形式实现,且调用入口、功
能、出口等关系正确。
6)所设计的C程序较好的可读性和可靠性;程序书写风格规范,注释清晰。
7)界面友好(良好的人机互交),凡需要输入信息时,都有较详尽的提示信息,并
对输入信息有较完善的值域分析。
8)程序经上机调试通过,不应出现语法型、功能型错误,并获得满意的结果。
9)学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现。
10)掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基
本方法。
11)C语言课程设计报告的内容反应实际设计过程,且符合格式要求,无抄袭现象。
2.2任务描述
此系统以销售员销售信息为背景,提供对销售员信息的录入、编辑、查找、
统计等功能。具体功能实现如下:
1)信息录入:实现销售信息的录入功能,并能将其以文件形式加以保存。
2)编辑功能:实现对销售员销售信息的添加,并对指定时间销售员销售信息进行
删除或修改等功能。
3)信息浏览功能:实现对指定时间点(日期)或全部销售员某时间段的销售信息
浏览。
4)查询功能:实现按时间,销售员编号,商品编号查询销售信息的功能。
5)统计功能:实现对某时间段销售员销售统计报表功能。
6)系统以菜单方式工作,界面清晰,易于操作。
2.3运行环境
1)WindowsXP/7系统
2)VC++6.0编译环境
2.4开发工具
C语言
3.总体设计
3.1系统流设计
本系统的功能模块如图1所示,主要有以下模块:
图1系统功能模块图
3.2系统模块设计
1)主菜单界面:构造函数void menu(),实现系统主菜单的显示。
2)数据导入:构造函数void daoru()从指定文件或者默认文件导入数据,void
input()手动输入数据;选择这两种方式实现销售员销售信息的录入方式。
3)初始化:构造函数void def();,如果为首次使用可实现对销售员的销售信
息初始化,即把销售商品数目信息全部置零。
4)数据查询:构造函数void seek();实现查询界面的显示。按时间,销售员编
号、商品编号实现对销售员具体销售信息的定位并显示,void baobiao(),实现对报表查询统计的要求。void history(people);实现对销售历史查询
5)删除修改:构造函数void del(),实现对指定时间销售员销售信息的删除。
6)打印报表:构造函数void baobiao(),实现指定时间段内销售员销售额报表,
或者销售数量报表。
7)退出:略。
4.详细设计
4.1数据结构设计
为了实现能打印任意时间段(某月某日--某月某日)内报表,所以先用结构体数组对数据进行初始化,
为此,先声明类型为struct good的结构体,其成员为商品信息。
声明类型为struct seller的结构体,其成员为销售员的信息。
声明类型为struct day的结构体,其成员为struct seller sell[4]; 。
声明类型为struct year的结构体,其成员为struct day d[31];
然后通过对结构体数据结构的操作,实现对销售信息的录入,存盘,查询,浏览,删除,修改,报表等一系列操作。其中,结构体定义如下:
struct good
{
int num;//产品编号
int f_name[10];//产品名称
float price;//产品价格商品属性
int date;//销售日期
int sum;//销售数量
}good[5]; // 定义商品属性结构体,及五个商品
struct seller
{
int num;//销售员编号
char name[8];//销售员姓名
char sex;//销售员性别
struct good good[5]; //五种商品
}sell[4];//定义销售员结构体,及四个销售员
struct day
{
struct seller sell[4];
}d[31];
struct year
{
struct day d[31];
}m[12];
4.2模块接口设计
1)所有函数模块声明如下:
void input();//实现手动输入销售信息
void menu();//程序菜单主界面显示
void daoru(); //从文件导入数据
void seek();//销售信息查询
void save();//销售信息保存
void del();//销售信息删除
void def();//销售信息初始化
void clear();//实现清屏
void history(people);//实现销售历史查询
void filepath();//判断是否为默认文件位置,及询问是否要求修改文件位置void baobiao();
2)并定义两个全局变量:
CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
#define NULL 0
int file_choose=0;//文件导入初始状态//全局变量
char filename[30]="sell.txt";//默认文件位置
price[5]={2,2,2,2,2};//默认商品价格,定义为全局变量后可把上次输入的外部价格作为本次报表的商品价格
//结构体定义为全局变量便于函数相互使用
struct good
{
int num;//产品编号
int f_name[10];//产品名称
float price;//产品价格商品属性
int date;//销售日期
int sum;//销售数量
}good[5]; // 定义商品属性结构体,及五个商品
struct seller
{
int num;//销售员编号
char name[8];//销售员姓名
char sex;//销售员性别
struct good good[5]; //五种商品
}sell[4];//定义销售员结构体,及四个销售员
struct day
{
struct seller sell[4];
}d[31];
struct year
{
struct day d[31];
}m[12];
3)主要模块的实现
系统以主函数int main()为入口,接着MessageBox(NULL,"欢迎使用销售管理系统\n作者:陈帅\n班级:T1223-2", "欢迎",MB_OK);显示欢迎窗口
调用void menu();函数,显示菜单。调用void welcome()函数,
系统接收用户输入的选择,调用相应的函数,进入到下一级菜单进行相关工作。
4.3 以下是几个主要模块的流程图:
1)主菜单函数:
图2 主函数流程图
图 3 信息浏览图3 信息查询
4) 信息删除函数:
5) 数据保存函数:
图 4 信息修改流程图
图5 信息删除
图6 信息保存6)数据初始化函数:
图7 数据初始
化
7)文件路径判断函数:
判断
8)数据导入函数:
图8 数据导入9)打印报表函数:
10)打印报表函数:
图9 报表函数11)打印历史销售情况函数:
流程图与报表类似不在累述:
截图见下:
5.运行结果
5.1主菜单界面:
图5主菜单界面
用鼠标进行功能选择,系统自动进入相应功能界面。
图10 历史查询
图6 信息录入界面
图7 指定时间指定销售员全部信息浏览
图8 指定时间指定销售员指定商品浏览
5.4 信息查询界面:
从键盘中输入选择,可以按时间、销售员代号进行查询,并显示结果。
图8 按时间、销售员代号查询的结果
图9 按时间、销售员代号销售历史查询的结果
5.5信息修改界面:
从键盘中输入需要修改的信息代码,自动提示输入新的信息。