前言
C语言是目前国内外使用最广泛的程序设计语言之一,也是计算机课程体系的第一门重要的基础课程。它具有简洁紧凑、使用灵活方便、表达能力强、运算符丰富、执行效率高、可移植性好等特点。C语言作为一门最通用的语言,深受广大学者的热捧。
程序设计环节是应用型本科院校非常重要的一个教学环节,是学完一门课后应用本课知识及以前的知识积累而进行的综合性、开放性的训练。通过课程设计,不仅能够使学生得到系统的技能训练,巩固和加强所学得专业理论知识,而且能够培养学生工程意识、创新能力、团队精神等综合素质,培养学生的设计能力和解决实际问题。
1.系统分析
1.1课程设计内容
本题目设计目的是训练学生的基本编程能力,了解商品管理信息系统的开发流程,熟悉C语言的各种基本操作。本程序中涉及结构体、数组、调用函数等方面的知识。通过本程序的训练,使学生能对C语言的文件操作有一个更深刻的了解,为进一步开发出高质量的管理信息系统打下坚实的基础。
1.2系统功能需求分析
1、问题定义
创建一个商品信息管理系统。假设系统中每件商品记录只包括编码、价格、商品名称等信息。程序的运行效果如下图所示,选择任意菜单后,实现相应功能。
在问题定义阶段要考虑题目的可行性和需求分析,接下来进入开发阶段,完成系统设计和系统实现的任务。
2.系统设计
2.1总体设计
采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,然后分别设计各个小任务。需要注意的是划分出来的模块应该相对独立但又相关,且容易理解。可以用模块化层次结构图(即模块图)来分析其任务的划分,一般从上到下进行,最上面一层是主模块,下面各层是其上一层模块的逐步细化描述。
本商品管理系统要求采用数组实现,如图2.1所示,它由如下五大功能模块组成:
- 1.录入商品基本信息模块。完成将数据存入数组的工作。定义一个int型整型变量,该数组把首地址给menu-item指针变量,并调用page-title()函数输出“录入商品基本信息”这句话。商品信息记录由商品的编码、名字、价格构成。但录入商品基本信息时运用了for循环语句。录入商品的数量不能为空,否则跳出for循环。录入商品信息时,系统将商品信息存储在数组中,即void product-new()启到录入商品信息的作用。完成录入信息后,调用return-confirm()函数,提示是否继续,否则按任意键返回主页面。
- 2.修改商品基本信息模块。运用了条件判断语句if语句,在此商品信息管理系统中,完成了对商品信息记录的维护。将修改过的信息重新存入到源数据中。其中还调用了search-num()函数与之键入的商品信息作比较,即键入商品信息不能为空。
- 3.删除商品基本信息模块。定义一个int整型变量,再调用page-title函数输出“注销商品基本信息”这句话,再运用if选择结构语句,判断条件是输入的商品不能为空,条件成立即执行程序,将此商品信息从源数据中删除。其中调用了search-num()函数与之键入的商品信息作比较,判断键入的商品信息不能为空,成立既可以删除。
- 4.浏览商品基本信息模块。该模块运用了for循环结构语句,内嵌套if选择结构语句,调用search-num()函数与之键入商品信息作比较,即输入信息不能为空,否则跳出循环,成立即可浏览商品,最后并调用return-confirm()函数提示是否继续此模块,“否”按任意键返回主界面。
2.2详细设计
2.2.1数据结构设计
struct product //定义结构体数组
{
int num; //成员表列
float price;
char name[21];
}products[32]; //变量名表列
定义了一个结构体数组product,共有32个元素,product【0】~product【31】。每个数组元素都具有struct product类型。该数组各元素在内存中连续存放,占用一段连续的储存单元。
3.系统编码设计
3.1编码
3.1.1程序预处理
注:包括加载头文件,定义结构体、常量和变量,并对它们进行初始化工作。
#include "stdio.h" /*标准输入输出函数库*/
#include "stdlib.h" /*标准函数库*/
#include "string.h" /*字符串函数库*/
#include "conio.h" /*屏幕操作函数库*/
#include"windows.h" //存放清屏、改变字体颜色等函数//
struct product //定义结构体数组
{
int num; //成员表列
float price;
char name[21];
}products[32]; //变量名表列
void page_title(char *menu_item) // 定义一个页眉函数
system("CLS"); 调用DOS命令,清屏
printf(">>> 商品管理系统 <<<\n\n- %s -\n\n",menu_item);
}
void return_confirm() //按任意键返回
{
printf("\n按任意键返回\n");
getch();
system("CLS"); //调用DOS命令,清屏
}
void product_new() //录入信息函数
{
int n;
page_title("录入商品基本信息");
printf("编号-名字-价格\n");
for(n=0;n<32;n++)
if(products[n].num==0) break;
printf("编号:");
scanf("%d",&products[n].num);
printf("名字:");
scanf("%s",&products[n].name);
printf("价格:");
scanf("%f",&products[n].price);
return_confirm();
}
int search_num() //定义一个查找信息函数
{
int n,i;
printf("请输入商品编号:");
scanf("%d",&i);
system("CLS"); 调用DOS命令,清屏
for(n=0;n<32;n++)
{
if(products[n].num==i&&products[n].num!=0)
{
printf("编号:%d\n",products[n].num);
printf("名字:%s\n",products[n].name);
printf("价格:%f\n",products[n].price);
return n;
}
}
printf("\n输入错误或编号不存在.\n");
return 0;
}
void product_del() //删除信息函数
{
int n;
page_title("注销商品基本信息");
if((n=search_num())!=-1) products[n].num=0;
printf("\n!该商品已注销.\n");
return_confirm(); //按任意键返回
}
void product_edit() //编辑信息函数
{
int n;
page_title("编辑商品基本信息");
if((n=search_num())!=-1)
{
printf("\n请重新输入新信息:\n编号:");
scanf("%d",&products[n].num);
printf("名字:");
scanf("%s",&products[n].name);
printf("价格:");
scanf("%f",&products[n].price);
}
return_confirm(); //按任意键返回
}
void browser() //浏览信息函数
{int n,i;
system("CLS"); //调用DOS命令,清屏
printf("商品列表:\n");
for(i=0;i<32;i++)
{
if((n=search_num())!=-1);break;
}
return_confirm(); //按任意键返回
}
void main() //主函数
{
system("color 0A"); //设置界面以及字体颜色
menu: page_title(" 操作选单 ");
printf("请用数字键选择操作\n\n");
printf("1 录入商品基本信息\n2 修改商品基本信息\n");
printf("3 注销商品基本信息\n4 浏览商品");
printf(" 0 退出\n");
switch(getch())
{
case '1' : product_new();break;
case '2' : product_edit();break;
case '3' : product_del();break;
case '4' : browser();break;
case '0' : exit(0);
}
goto menu; //跳转到指定位置
}
文章借鉴于此纷传