c语言超市管理系统课程设计.doc
课 程 设 计课程设计名称: 高级语言程序设计 专 业 班 级 : 计算机科学与技术0802班 学 生 姓 名 : 李旭 学 号 : 200848140202 指 导 教 师 : 范艳峰 课程设计时间: 2009年7月2号 计算机科学与技术 专业课程设计任务书学生姓名李旭专业班级计科0802学号200848140202题 目超市管理系统课题性质其它课题来源自拟课题指导教师范艳峰同组姓名无主要内容用C程序设计中的链表作数据结构,结合C语言基本知识。编写一个超市管理系统。以把所学数据结构知识应用到实际软件开发中去。本系统应完成一下几方面的功能:1) 新购物品入库Tianjia();2) 物品信息删除Shanchu();3) 物品信息修改Xiugai();4物品信息查询Chazhao();5)物品信息浏览Liulan();5) 系统颜色设置yanseshezhi(); 6) 应用程序退出Jieshu();任务要求1) 每条信息至包含 :编号(id)物品名称(name)物品产地(produce)物品数量(number)物品单价(prize)2) 作为一个完整的系统,应具有友好的界面和较强的容错能3) 上机能正常运行,并写出课程设计报告参考文献C程序设计(第三版)审查意见指导教师签字:教研室主任签字: 年 月 日 1 需求分析: 随着现代生活质量的提高,超市这种便利的服务开始走进我们的生活,同时随着超市涌入我们的生活,如何更便利的对超市进行系统和有序的操作,成为了我们需要考虑的问题,本程序运用C语言程序设计了一个超市管理系统。关系系统的的功能主要有新购物品入库、物品信息删除、物品信息修改、物品信息查询、物品信息浏览功能,在相应的硬盘上面进行存盘以防止部分数据的丢失。为了更加人性化使用此管理系统,还在MENU选项总添加了系统颜色设置功能,使用户可以根据自己的喜好修改操作界面。2 概要设计(1)数据结构 依据给定的物品信息和数据形式,数组必须用结构体实现。结构类型的层次结构: struct imaint id;char name20;char produce30;int number;float price;(2)模块划分 依据程序的结构反和功能,遵照“自顶而下”的原则,描述该程序的层次结构图一显示了该程序的层次结构,共 5层:如下图: Main函数程序主菜单1 新购物品入库2 物品信息删除3 物品信息修改4 物品信息浏览5 系统颜色设置1 红底黑字2 白底黑字3 黑底红字4 绿底蓝字5 黄底紫字6 系统默认4 物品信息查询4 应用程序退出判断所输编号是否存在是:此编号已被使用,请重新输入否: 输入物品信息图一 图一的层次结构(3)原函数清单:1、 创建函数 void chushihua() 2、 增加物品函数 Tianjia(); 3、删除物品信息函数Shanchu();4、修改物品信息函数 Xiugai(); 5、查询物品信息函数Chazhao();6、浏览物品信息函数Liulan(); 7、系统颜色设置函数 yanseshezhi();8、应用程序退出函数 Jieshu();3 运行环境:Win2003, WinXP, Win2000, NT, WinME, Win9X4 开发工具和编程语言:编程语言:C语言开发工具:microsoft visual C+ 6.05 详细设计:1、结构体变量的定义:struct imaint id;char name20;char produce30;int number;float price;3、 文件的初始化:void chushihua()FILE *fp;struct ima i=1,"花生牛奶","湖北武汉",1200,2.5;fp=fopen("ima.dat","w");if(fp=NULL)printf("ttt系统错误,请重试.");exit(0);fwrite(&i,sizeof(struct ima),1,fp);fclose(fp);4、 欢迎菜单(主函数): void main()printf("nn");system("color 1a");printf("t3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3n");printf("t3 3n");printf("t3 3n");printf("t3 欢迎使用 3n");printf("t3 3n");printf("t3 3n");printf("t3 超市库存管理系统 3n");printf("t3 按任意键继续 3n");printf("t3 3n");printf("t3 3n");printf("t3 3n");printf("t3 3n");printf("t3 3n");printf("t3 3n");printf("t3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3");getch();system("cls");menu();chushihua();menu();5、 选择菜单 void menu()int choice;printf("n【超市库存管理系统】n");printf("-系统菜单显示如下-");printf("nt=【 新购物品入库 】n");printf("nt=【 物品信息删除 】n");printf("nt=【 物品信息修改 】n");printf("nt=【 物品信息查询 】n");printf("nt=【 物品信息浏览 】n");printf("nt=【 系统颜色设置 】n");printf("nt=【 应用程序退出 】n");printf("nt请输入您要选择的菜单.");scanf("%d",&choice);switch(choice)case 1:Tianjia();break;case 2:Shanchu();break;case 3:Xiugai();break;case 4:Chazhao();break;case 5:Liulan();break;case 6:yanseshezhi();break;case 7:Jieshu();break;default:printf("nttttt输入无效,请您重新输入.");getch();system("cls");menu();6、 新购物品入库函数: int panduanID(int id) /*判断所输编号是否已存在*/ FILE *fp;struct ima i;fp=fopen("ima.date","r");if(fp=NULL)printf("ttt系统错误,请您重试.");exit(0);fread(&i,sizeof(struct ima),1,fp);while(!feof(fp)if(i.id=id)fclose(fp);return 1;break;fread(&i,sizeof(struct ima),1,fp);fclose(fp);return 0;void Tianjia() struct ima i;char choice;FILE *fp;fp=fopen("ima.date","ab");if(fp=NULL)printf("ttt系统错误,请您重试.");exit(0); labID:printf("nt请您输入要入库物品的信息.n");printf("tttt 物品的编号:");scanf("%d",&i.id);if(panduanID(i.id)=1)printf("tttt此编号已被使用,请您重新输入.");goto labID;printf("tttt 物品的名称:");scanf("%s",i.name);printf("tttt 物品的生产地:");scanf("%s",i.produce);printf("tttt 物品的数量:");scanf("%d",&i.number);printf("tttt 物品的单价:");scanf("%f",&i.price);fwrite(&i,sizeof(struct ima),1,fp);fclose(fp);printf("tttttt 物品信息已入库成功!n");printf("n您想继续吗?(y/n)");scanf(" %c",&choice);if(choice='Y'|choice='y')Tianjia();elsesystem("cls");menu();7、 物品信息删除函数: void Shanchu() struct ima i1000;struct ima temp;int delID;char choice;int index=0;int j=0;FILE *fp;fp=fopen("ima.date","r");if(fp=NULL)printf("ttt系统错误,请您重试.");exit(0);fread(&temp,sizeof(struct ima),1,fp);while(!feof(fp)iindex=temp;index+;fread(&temp,sizeof(struct ima),1,fp);fclose(fp);printf("nt请输入要删除的物品的编号:");scanf("%d",&delID);fopen("f:ima.date","w");if(fp=NULL)printf("ttt系统错误,请您重试.");exit(0);for( j=0;j<index;j+)if(ij.id!=delID)fwrite(&ij,sizeof(struct ima),1,fp); fclose(fp);printf("ttttt物品信息已清除!n");printf("n您想继续吗?(y/n)");scanf(" %c",&choice);if(choice='Y'|choice='y')Shanchu();elsesystem("cls");menu();8、 物品信息修改函数: void Xiugai() int index=0; int ID,j; char choice; struct ima i1000; structima temp;FILE *fp;fp=fopen("ima.dat","r");if(fp=NULL)printf("ttt系统错误,请您重试.");exit(0);fread(&temp,sizeof(struct ima),1,fp);while(!feof(fp)iindex=temp;index+;fread(&temp,sizeof(struct ima),1,fp);fclose(fp);fp=fopen("ima.dat","w");if(fp=NULL)printf("ttt系统错误,请您重试.");exit(0);printf("nt请输入要修改的信息的物品的编号:");scanf("%d",&ID);for(j=0;j<=index-1;j+)if(ij.id!=ID)fwrite(&ij,sizeof(struct ima),1,fp);elseprintf("tt物品名称修改为:");scanf("%s",ij.name);printf("tt物品生产地修改为:");scanf("%s",ij.produce);printf("tt物品数量修改为:");scanf("%d",&ij.number);printf("tt物品单价修改为:");scanf("%f",&ij.price);fclose(fp);printf("tttt物品信息已修改.");printf("n您想继续吗?(y/n)");scanf(" %c",&choice);if(choice='Y'|choice='y')Xiugai();elsesystem("cls");menu();9、 物品信息查询函数: void Chazhao() FILE *fp;int findID;char choice;struct ima i;fp=fopen("ima.date","r");if(fp=NULL)printf("ttt系统错误,请你重试.");exit(0);finID: printf("nt请输入要查询的物品的编号.");scanf("%d",&findID);fread(&i,sizeof(struct ima),1,fp);while(!feof(fp)if(i.id=findID)printf("nnt*物品信息*");printf("nt物品编号.%30dn",i.id);printf("nt-");printf("nt物品名称.%30sn",i.name);printf("nt-");printf("nt生产厂家.%30sn",i.produce);printf("nt-");printf("nt进口数量.%30dn",i.number);printf("nt-");printf("nt批发价格.%30.3fn",i.price);printf("nt-");printf("n您想继续吗?(y/n)");scanf(" %c",&choice);if(choice='Y'|choice='y')Chazhao();elsesystem("cls");menu();fread(&i,sizeof(struct ima),1,fp);fclose(fp);printf("ttttt输入的编号不存在,请您重新输入.");goto finID;10、 物品信息浏览函数: void Liulan() struct ima i; int index=0;char choice;FILE *fp;fp=fopen("ima.date","r");if(fp=NULL)printf("ttt系统错误,请你重试.");exit(0);fread(&i,sizeof(struct ima),1,fp);while(!feof(fp)index+;printf("nnt*物品信息%d*",index);printf("nt物品编号.%30dn",i.id);printf("nt-");printf("nt物品名称.%30sn",i.name);printf("nt-");printf("nt生产厂家.%30sn",i.produce);printf("nt-");printf("nt进口数量.%30dn",i.number);printf("nt-");printf("nt批发价格.%30.3fn",i.price);printf("nt-");getch();fread(&i,sizeof(struct ima),1,fp);fclose(fp);printf("n您想继续吗?(y/n)");scanf(" %c",&choice);if(choice='Y'|choice='y')Liulan();elsesystem("cls");menu();11、 系统颜色设置函数: void yanseshezhi() int a;char choice;system("cls");printf("nntt选择以下方案n");printf("nntt1*红底黑字n");printf("nntt2*白底黑字n");printf("nntt3*黑底红字n");printf("nntt4*绿底蓝字n");printf("nntt5*黄底紫字n");printf("nntt6*系统默认n");printf("nnttttt请挑选您喜爱的颜色<1-5>."); scanf("%d",&a);switch(a)case 1:system("color 40");break;case 2:system("color 70");break;case 3:system("color 04");break;case 4:system("color 21");break;case 5:system("color 65");break;case 6:system("color 1a");break;default:printf("nnttttt输入无效,重新输入.");getch();yanseshezhi();printf("n选择的颜色您还满意吗?(y返回主菜单/n继续选择)");scanf(" %c",&choice);if(choice='Y'|choice='y')system("cls");menu();elseyanseshezhi();12、 应用程序退出函数: void Jieshu()char choice;system("cls");printf("nnnnnnnttt您确定要退出系统吗?nnnttt如果您想退出请按'y',其它键将返回主菜单.");scanf(" %c",&choice);if(choice='Y'|choice='y')system("cls");printf("nnnnnnnnnntttt谢谢您的使用!");printf("nnnnnnnnnnnnnnnn");elsesystem("cls");menu();6 调试分析:在此程序的编程前,我上网搜集了一些关于超市管理系统的资料,然后大体决定了编程的大致算法,即利用函数贯穿整个程序,通过SWITCH函数进行各个函数的选择;同时,进过查阅,我添加了系统颜色设置功能,同是应用了清屏函数,课下讲程序大致写好后,我上机进行了调试;但却出现了80几处错误,大都是提示 miss “;” before tybe;经过分析,程序算法并无错误;后来询问老师,才发现原来在我所编的程序中,有需要变量时,都是用的时候才定义,但正确的方法是应该在函数的开头就应该将所要用的变量进行生命,否则就出现了编译错误。7测试结果:1、欢迎界面2、系统选择界面:3、新购物品入库:4、物品信息删除:5、物品信息修改:6、物品信息查询7、物品信息浏览:8、系统颜色设置:9、应用程序退出:8 参考文献:1.C 语言程序设计教程谭浩强等著 高等教育出版社2.C 语言程序设计习题解析与应用案例分析,黄维通编,清华大学出版社, 20053.C 语言程序设计,李大友主编,清华大学出版社, 1999课程设计总结C语言已学习了两个学期了。总算对其有了初步的认识与了解!虽然不能算熟手,但基本能看懂许多代码。当然让自己独立编写有某些功能的程序还是十分吃力的。比如这次的超市管理系统,虽然基本算法还算简易,但从结构体链表开始就很难把持。只有照着书上的例题去理解,去套用!才能略有小成的把结构体链表版的程序做出来,当然缺陷百出!怎么讲呢?总觉得时间过的很快!一眨眼的工夫,就已经结束了,每天要消化的东西很多! 为期一周的C语言课程设计结束了,通过这一个星期的课设,使我对C语言有了更深入、更全面的了解,同时也发现自己的英文和函数基础不是很好,对很多地方不是特别懂,甚至对有些概念都还很模糊,但通过这次课程设计,使我对C语言有了新的认识,在这一周的时间里,经过不断的与同学之间进行探讨以及老师的指导,使我的C语言水平有了很大程度的提高。通过课设我还发现C语言是一门非常实用的学科,像我的题目-书店图书销售系统,是与实际生活紧密相关的,在以后的工作当中都有可能会用的到。平常在书上学的这些知识在我看来是些最基本的知识!其实C语言应该还包括很多,但就这些基本的知识我们学起来还是很辛苦的,我个人认为C语言的语句块中无非是3个东西,顺序,判断与循环,在一个多星期的代码打下来,编写的语句块中没发现过超出这3种东西的,就算调用的函数,在函数里面还是这3个东西,可以说是极其简单,但就这3种东西拼凑在一起时,就能发挥强大的功能与作用。可谓三个臭皮匠顶个诸葛亮!一般在没有多数的嵌套下还是能很清晰明了的读写代码,可一旦嵌套一多,就开始晕晕眩眩了。 函数的话,我的理解比较浅,我只能说它的作用除了被人调来调去之外,没有别的功能了!当然使用函数会是程序别的清晰明了,这点在编写超市管理系统时也体会到了!, 我认为还有比较重要的是算法,虽然算法并不是代码,但算法能让我们更好的去编写代码,有了算法程序才有灵魂,这是书上说的.个人认为这是个比喻算法是事物解决的方法,不仅仅编程我们生活中也经常用到算法,只是自身没发现而已!当我们的算法到达到一种境界时,我们的思维就会变的灵活,思路就会变的清晰!当然我也没到这种境界,正在努力中这次课设使我对C语言产生了极大的兴趣,相信通过我以后的学习,我的C语言水平一定会有很大的提高。源程序:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>struct imaint id;char name20;char produce30;int number;float price;void Append();void Selldelete();void Amend();void Findin();void Browse();void colorsetting();void Endprogram();void initialization()FILE *fp;struct ima i=1,"花生牛奶","湖北武汉",1200,2.5;fp=fopen("ima.dat恶","w");if(fp=NULL)printf("ttt系统错误,请重试.");exit(0);fwrite(&i,sizeof(struct ima),1,fp);fclose(fp);void menu()int choice;printf("n【超市库存管理系统】n");printf("-系统菜单显示如下-");printf("nt=【 新购物品入库 】n");printf("nt=【 物品信息删除 】n");printf("nt=【 物品信息修改 】n");printf("nt=【 物品信息查询 】n");printf("nt=【 物品信息浏览 】n");printf("nt=【 系统颜色设置 】n");printf("nt=【 应用程序退出 】n");printf("nt请输入您要选择的菜单.");scanf("%d",&choice);switch(choice)case 1:Append();break;case 2:Selldelete();break;case 3:Amend();break;case 4:Findin();break;case 5:Browse();break;case 6:colorsetting();break;case 7:Endprogram();break;default:printf("nttttt输入无效,请您重新输入.");getch();system("cls");menu();void colorsetting() int a;char choice;system("cls");printf("nntt选择以下方案n");printf("nntt1*红底黑字n");printf("nntt2*白底黑字n");printf("nntt3*黑底红字n");printf("nntt4*