课程设计说明书产品信息管理系统.doc
课程设计说明书题目:产品信息管理系统院 系:信息技术系 专业班级:08计算机科学与技术学 号: 学生姓名: 指导教师: 2010年 6月20日 1概述1.1开发背景11.2系统目标和开发的可行性12 设计任务书23本组课题及本人任务34 系统功能需求分析41.1开发背景某某连锁店主要提供电视、手机、空调、电脑等商品。因规模的扩大,业务的扩张,必须引进先进的管理思想、方法和技术,以提高企业的管理水平。为此,该连锁店提出,近期内要运用信息技术,建立起库存管理系统的管理信息系统,以提高商品库存效率,增加公司年度利润。1.2系统目标和开发的可行性1.2.1 系统目标本系统开发混合运用结构化系统开发方法与面向对象开发方法,结合两种开发方法各自的优势进行系统开发。1.2.2 系统开发可行性技术可行性:开发本系统要求开发人员能够熟练运用C#等编程语言。目前技术人员已经掌握这些编程语言。因此,本次系统开发在技术上是可行的。时间可行性:开发时间需要一个周时间。前五天主要用于系统分析、设计、实现,后面的时间用于调试。资金可行性:由于现在已有电脑等所需设备,可以尽可能的发挥作用,资金可节约不少,因此开发资金是可行的。2 设计任务书2.1研究方案和目标本题目是设计一个软件系统,按照软件工程的一般方法和过程,从软件需求分析开始,经过概要设计、详细设计,最后选择相应的开发平台或工具设计出实现系统功能的软件系统。本系统架构可采用B/S/S(Browser/Web Server/DB Server)三层结构,即基于Web的文件访问。客户端采用通用的浏览器。后台数据管理可采用Access、SQL Server等,设计相应的数据库,实现数据的存储。设计的主要内容在Web Server端选择相应的脚本编写技术或Web应用程序设计语言设计实现系统功能的程序。3本组课题及本人任务 建立产品管理系统,建立起库存管理系统的管理信息系统,4 系统功能需求分析1.信息查询:产品信息查询,产品入库记录查询,产品销售记录查询,供应商信息查询,销售人员信息查询。2.信息管理:产品信息管理,产品入库记录管理,产品销售记录管理,供应商信息管理,销售人员信息管理。3.统计与报表:产品信息统计表,产品入库记录统计表,产品销售记录统计表,供应商信息统计表,销售人员信息统计表。4.系统帮助:帮助信息,版本信息等。5 相关代码#include<stdio.h> /*I/O函数*/ #include<stdlib.h> /*标准库函数*/ #include<string.h> /*字符串函数*/ #include<ctype.h> /*字符操作函数(#include<ctype.h> 是在调用字符函数时,在源文件中包含的头文件。字符函数如:int isspace(int ch);检查ch是否为空格制表或换行字符。“ctype”中c为字符型char的缩写,type 为类型。)*/ #define M 50 /*定义常数表示记录数*/ typedef struct /*定义数据结构*/ int number; /*产品编号*/ char name20; /*产品名称*/ long num; /*产品类型编号*/ char size10; /*产品规格*/ char danwei5; /*计量单位*/ int acount; /*数量*/ int pay; /*参考价格*/ char inday20; /*进货日期*/ char workday20; /*有效期*/ CHAN_PIN; /*以下是函数声明*/ void Search(CHAN_PIN t,int n); /*查找记录函数*/ int enter(CHAN_PIN t); /*输入记录函数*/ void list(CHAN_PIN t,int n); /*显示记录函数*/ int mainCD(); /*主菜单函数*/ void Search(CHAN_PIN t,int n); /*查找记录函数*/ int Remove(CHAN_PIN t,int n); /*删除记录函数*/ void xiugai(CHAN_PIN t,int n); /*修改记录函数*/ void paixu(CHAN_PIN t,int n); /*按参考价格从小到大显示记录函数*/ void badgoods(CHAN_PIN t,int n); /*显示过期产品记录*/ int LoadRecord(CHAN_PIN t); /*保存函数函数*/ void saverecord(CHAN_PIN t,int n); /*保存记录函数*/ /*主函数开始*/ main() int i; CHAN_PIN adrM; /*定义结构体数组*/ int length; /*保存记录长度*/ clrscr(); /*清屏幕函数*/ for(;) /*无限循环*/ switch(mainCD() /*调用主菜单函数,返回值整数作开关语句的条件*/ case 1: length=enter(adr); /*输入记录*/ saverecord(adr,length); break; case 2:length=LoadRecord(adr); /*修改记录*/ xiugai(adr,length); saverecord(adr,length); break; case 3:length=LoadRecord(adr); /*删除记录*/ length=Remove(adr,length); saverecord(adr,length); break; case 4:length=LoadRecord(adr); /*根据产品名称查询产品信息记录*/ Search(adr,length); saverecord(adr,length); break; case 5:length=LoadRecord(adr); /*显示全部产品记录记录*/ list(adr,length); break; case 6:length=LoadRecord(adr); /*按参考价格从小到大显示记录记录*/ paixu(adr,length); saverecord(adr,length); break; case 7:length=LoadRecord(adr); /*显示全部过期产品信息记录*/ badgoods(adr,length); break; case 0:exit(0); int mainCD() /*主菜单函数*/ int c; clrscr(); printf("*MENU*nn"); printf(" 1. 产品基本信息的录入n"); printf(" 2. 产品信息的修改n"); printf(" 3. 产品信息的删除n"); printf(" 4. 根据产品名称查询产品信息n"); printf(" 5. 显示全部产品记录n"); printf(" 6. 按参考价格从小到大显示记录n"); printf(" 7. 显示全部过期产品信息n"); printf(" 0. 退出n"); printf("*n"); do printf("n Enter your choice(0-7):"); if(scanf("%d",&c)!=1) while(getchar()!='n') continue; continue; while(c<0|c>7); return c; int enter(CHAN_PIN t) /*输入记录函数*/ int i,n; char *s; clrscr(); /*清屏*/ printf("您要输入的纪录数目是: n"); /*提示信息*/ scanf("%d",&n); /*输入记录数*/ printf("请输入记录:n"); /*提示输入记录*/ for(i=0;i<n;i+) clrscr(); printf("n第%d条记录的产品编号:",i+1); scanf("%d",&ti.number); printf("n第%d条记录的产品名称:",i+1); scanf("%s",ti.name); printf("n第%d条记录的产品类型编号(5位,如:001001):",i+1); scanf("%ld",&ti.num); printf("n第%d条记录产品的规格(如:250*300):",i+1); scanf("%s",ti.size); printf("n第%d条记录产品的计量单位(kg 或 g):",i+1); scanf("%s",ti.danwei); printf("n第%d条记录产品的数量:",i+1); scanf("%d",&ti.acount); printf("n第%d条记录产品的参考价格:",i+1); scanf("%d",&ti.pay); printf("n第%d条记录的产品进货日期(格式为:20070710):",i+1); scanf("%s",ti.inday); printf("n第%d条记录的产品保质期(格式为:20070710):",i+1); scanf("%s",ti.workday); return(n); void list(CHAN_PIN t,int n) /*显示记录函数*/ int i; clrscr(); printf("nn*产品信息*n"); printf("编号 名称 类型编号 规格 计量单位 数量 参考价格 进货日期 保质期n"); printf("-n"); for(i=0;i<n;i+) printf("%-6d%-12s%-8ld%-11s%-7s",ti.number,ti.name,ti.num,ti.size,ti.danwei); printf("%-8d%-8d%-11s%-6sn",ti.acount,ti.pay,ti.inday,ti.workday); if(i+1)%10=0) /*判断输出是否达到10条记录*/ printf("Press any key continue.n"); /*提示信息*/ getch(); /*压任意键继续*/ printf("*end*n"); printf("press any key continue."); getch(); void Search(CHAN_PIN t,int n) /*查找记录函数*/ char s20; int i,flag=0; clrscr(); printf("请输入要查找的产品记录名称:"); scanf("%s",s); for(i=0;i<n;i+) if(strcmp(s,ti.name)=0) flag=1; clrscr(); printf("nn与该产品相关的信息如下:n"); printf("编号 名称 类型编号 规格 计量单位 数量 参考价格 进货日期 保质期n"); printf("-n"); printf("%-6d%-12s%-8ld%-11s%-7s",ti.number,ti.name,ti.num,ti.size,ti.danwei); printf("%-8d%-8d%-11s%-6sn",ti.acount,ti.pay,ti.inday,ti.workday); if(flag=0) printf("没有此记录!n"); printf("npress any key continu."); getch(); return n; int Remove(CHAN_PIN t,int n) /*要删除记录的名称*/ char s20; char ch='N' int i,j,flag=0; clrscr(); printf("请输入要删除的商品名称:n"); scanf("%s",s); for(i=0;i<n;i+) if(strcmp(s,ti.name)=0)/*是否找到记录*/ flag=1; clrscr(); printf("编号 名称 类型编号 规格 计量单位 数量 参考价格 进货日期 保质期n"); printf("-n"); printf("%-6d%-12s%-8ld%-11s%-7s",ti.number,ti.name,ti.num,ti.size,ti.danwei); printf("%-8d%-8d%-11s%-6sn",ti.acount,ti.pay,ti.inday,ti.workday); printf("Are you sure delete it(Y/N)"); ch=getchar(); if (ch='y'|'Y') for (j=i;j<n-1;j+) /*n-1,让后一个记录不动,为了使后1个记录覆盖前面的记录*/ tj=tj+1; n-; /*记录数量-1*/ i-; printf("n删除成功!"); if (flag=0) printf("无此商品!n"); printf("npress any key continu."); getch(); return n; void xiugai(CHAN_PIN t,int n) /*修改记录函数*/ char s20; int i; clrscr(); printf("请输入要修改商品的名称:n"); scanf("%s",s); for(i=0;i<n;i+) if(strcmp(s,ti.name)=0) printf("n要修改的记录的产品编号:"); scanf("%d",&ti.number); printf("n要修改的记录的产品名称:"); scanf("%s",ti.name); printf("n要修改的记录的产品类型编号(5位,如:001001):"); scanf("%ld",&ti.num); printf("n要修改的记录的规格(如:250*300):"); scanf("%s",ti.size); printf("n要修改的记录产品的计量单位(kg 或 g):"); scanf("%s",ti.danwei); printf("n要修改的记录产品的数量:"); scanf("%d",&ti.acount); printf("n要修改的记录产品的参考价格:"); scanf("%d",&ti.pay); printf("n要修改的记录的产品进货日期(格式为:20070710):"); scanf("%s",ti.inday); printf("n要修改的记录的产品保质期(格式为:20070710):"); scanf("%s",ti.workday); void paixu(CHAN_PIN t,int n) /*按参考价格从小到大显示记录函数*/ int i,j; CHAN_PIN temp; for(j=1;j<n;j+) for(i=0;i<n-j;i+) if(ti.pay>ti+1.pay) temp=ti; ti=ti+1; ti+1=temp; printf("排序成功!"); printf("nn*产品信息*n"); printf("编号 名称 类型编号 规格 计量单位 数量 参考价格 进货日期 保质期n"); printf("-n"); for(i=0;i<n;i+) printf("%-6d%-12s%-8ld%-11s%-7s",ti.number,ti.name,ti.num,ti.size,ti.danwei); printf("%-8d%-8d%-11s%-6sn",ti.acount,ti.pay,ti.inday,ti.workday); if(i+1)%10=0) /*判断输出是否达到10条记录*/ printf("Press any key continue.n"); /*提示信息*/ getch(); /*压任意键继续*/ printf("*end*n"); printf("press any key continue."); getch(); printf("press any key continue."); getch(); void badgoods(CHAN_PIN t,int n) /*显示过期产品记录函数*/ int i,j,flag=0; char nowday20; printf("请输入现在的时间(格式为:20070710):"); scanf("%s",nowday); for(i=0;i<n;i+) if(strcmp(nowday,ti.workday)>0) flag=1; printf("nn与该产品相关的信息如下:n"); printf("编号 名称 类型编号 规格 计量单位 数量 参考价格 进货日期 保质期n"); printf("-n"); printf("%-6d%-12s%-8ld%-11s%-7s",ti.number,ti.name,ti.num,ti.size,ti.danwei); printf("%-8d%-8d%-11s%-6sn",ti.acount,ti.pay,ti.inday,ti.workday); printf("npress any key continu."); getch(); if(flag=0) printf("没有过期产品!n"); return n; int LoadRecord(CHAN_PIN t) /*保存函数函数*/ int i,n; FILE *fp; if(fp=fopen("record.txt","r")=NULL) printf("can not open filen"); exit(1); fscanf(fp,"%d",&n); /*读入记录数*/ for(i=0;i<n;i+) fscanf(fp,"%-6d%-12s%-8ld%-11s%-7s",&ti.number,ti.name,&ti.num,ti.size,ti.danwei); fscanf(fp,"%-8d%-8d%-11s%-6sn",&ti.acount,&ti.pay,ti.inday,ti.workday); fclose(fp); /*关闭文件*/ printf("从文件中成功读出记录!n"); return n; /*返回记录数*/ void saverecord(CHAN_PIN t,int n) /*保存记录函数*/ int i; FILE *fp; /*指向文件的指针*/ if(fp=fopen("record.txt","wb")=NULL) /*打开文件,并判断打开是否正常*/ printf("can not open filen"); /*没打开*/ exit(1); fprintf(fp,"%d",n); /*将记录数写入文件*/ fprintf(fp,"rn"); /*将换行符号写入文件*/ for(i=0;i<n;i+) fprintf(fp,"%-6d%-12s%-8ld%-11s%-7s",ti.number,ti.name,ti.num,ti.size,ti.danwei); fprintf(fp,"%-8d%-8d%-11s%-6sn",ti.acount,ti.pay,ti.inday,ti.workday); fprintf(fp,"rn"); fclose(fp);