大二软件课程设计Word文件下载.docx
《大二软件课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《大二软件课程设计Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
8、退出模块。
主要完成退出界面的任务。
(二)、总体设计
1、主函数执行流程
本系统提供了10个选项供用户选择,先显示目录菜单,提示用户输入选择。
有效值为0到9,输入1则进入键盘添加商品信息功能模块,系统将会循环调用ADD()函数键盘添加员工信息。
输入2进入删除记录模块,主要工作是在单链表中查找商品代码找到相应的商品信息然后删除。
输入3进入查询模块,主要工作是循环调用QUR()函数找到相应商品信息。
输入4进入修改模块主要工作是先调用查询函数找到商品,然后调用Modify()进行商品信息的修改.输入5进入插入模块,主要工作是在单链表中通过调用ADD()函数来插入商品信息.输入6进入统计函数,系统通过While循环来输出商品件数.输入7进入降序排列模块,主函数运用冒泡排序的方法对商品代码进行排序.(排序是对链表节点的修改而不修改商品信息)。
输入8存储模块进入:
通过save函数将商品信息存到D盘上.输入9进入显示数据模块.其功能是将所有商品的所有信息输出到屏幕中,输出在屏幕上的为表格形式,以便读取方便。
输入0退出本系统,操作结束
2、功能描述
(1)主函数——voidmain()
算法描述:
利用无限次循环for(;
;
)和switch()实现对各函数的调用,系统根据输入的数字选项来调用相应的函数,实现相应的功能。
(2)菜单函数——intmenu_select()
函数功能:
使用者通过输入数字选项实现对各功能的使用。
当运行完任一功能,返回运行界面时,也要用到该函数。
使用do-while循环进行菜单选择,在循环内用switch读如所选择的序号,并且每次运行都运用system("
cls"
)进行清屏。
(3建立记录函数——voidsetData(linklistp)
输入商品编号,名称,单价,数量。
输入后有一个提示语句——是否继续输入。
根据需要选择Y:
继续输入记录;
选择N:
停止输入。
(4)显示所有记录函数——voidDisp()
函数功能:
将输入的所有记录显示在运行界面,或将排序后的记录显示在界面。
算法描述:
使用while进行循环输出,循环内运用if语句使十条数据可以实现暂停功能。
其中还包含了一些辅助的使界面更简洁、清晰的语句
(5)排序函数——voidsort_()
按商品编号由高到底的顺序进行排序。
运用简单冒泡法排序,排序后通过显示记录功能将排序后的记录显示在界面。
(6)插入记录函数——intInsert_()
插入商品信息,包括商品编号、名称单价和数量插入。
使用标准的输入函数输入一条商品记录,带到返回值中,并调用排序函数将该商品记录插入到排好序的记录中。
(7)删除记录函数—intDelete_()
按编号将需要删除的记录删除。
首先输入编号,判断是否存在该商品记录:
如果存在,回车后,显示“删除成功”;
如果不存在,显示“无法找到该信息”。
运用标准输入函数输入需要删除记录的商品的编号,通过用while循环查找该商品信息,再运用if语句看是否存在该商品,无则返回“无法找到该信息”,有则运用while进行删除操作,即找到记录后用后面记录覆盖前面的记录。
这种方法虽不是直接将记录删除,只是将后边的商品记录复制到要删除的商品记录,但实现的功能是相同的。
执行完删除命令后返回“删除成功”。
(8)查询函数——voidQur()
定义该函数为无返回值的的有参函数,根据输入的编号查找并显示商品的编号,名称单价和数量。
运用标准的输入函数输入要查找的商品编号,然后进行while循环,用if语句进行判断是否存在该商品信息,无则显示“无法找到该信息”,有则将该商品信息运用标准输出函数输出。
(9)统计系统信息函数——voidtongji()
统计输入的商品信息,包括记录总数。
统计记录的条数输出总共的记录条数,运用while循环统计商品信息。
(10)修改信息函数——intModify()
先查找到要修改的商品信息,再进行修改。
运用if语句判断,如果存在进行修改。
11)存储信息函数——voidsave()
该函数定义为无返回值的有参函数,可以把学生记录保存D盘。
运用while循环进行存储,并使用fprintf,存储完成之后显示“操作成功”,可以使用读取功能读取此文件的内容。
。
(三)、数据结构设计
简单商品管理信息结构体
#include<
stdio.h>
malloc.h>
string.h>
ctype.h>
/*字符操作函数*/
#include"
stdlib.h"
/*其它说明*/
typedefstruct
{
charnum[10];
charname[20];
floatprice;
intamount;
}Product;
typedefstructnode
Productp;
structnode*pre;
structnode*next;
}node,*linklist;
linklisthead,last;
voidsetData(linklistp)
printf("
产品编号:
"
);
scanf("
%s"
&
p->
p.num);
产品名称:
p.name);
产品单价:
%f"
p.price);
产品数量:
%d"
p.amount);
}
voidInsert(linklistp)
setData(p);
p->
next=last;
last->
pre->
next=p;
pre=last->
pre;
pre=p;
voidAdd()
charch;
do
{
linklistp=(linklist)malloc(sizeof(node));
system("
pause"
Insert(p);
是否继续?
%c"
ch);
}while(ch=='
y'
||ch=='
Y'
linklistQur()
linklistp=head->
next;
输入产品编号:
num);
while(p!
=last)
if(strcmp(num,p->
p.num)==0)break;
p=p->
}
if(p==last){printf("
未找到\n"
system("
returnp;
voidDel()
linklistp=Qur();
if(p==last)return;
next=p->
next->
pre=p->
free(p);
删除成功\n"
voidModify()
if(p==last)return;
voidprintTitle()
编号\t名称\t单价\t数量\n"
voidshow(linklistp)
%s\t%s\t%.2f\t%d\n"
p->
p.num,p->
p.name,p->
p.price,p->
voidTongji()
inti=0;
printTitle();
show(p);
i++;
共%d项商品\n"
i);
voidSort()
linklistp,q;
for(p=head->
p!
=last;
p=p->
next)
for(q=p->
q!
q=q->
if(strcmp(p->
p.num,q->
p.num)<
0)
Producttemp=p->
p;
p=q->
q->
p=temp;
完成\n"
voidSave()
FILE*fp=fopen("
d:
\\record.txt"
"
w"
if(fp==NULL)
保存失败\n"
return;
fprintf(fp,"
fclose(fp);
voidDisp()
voidWrong()
输入错误!
\n"
voidmenu(void)
|*系统清屏*|
********商品销售管理系统*******\n"
**\n"
*1:
添加*\n"
*2:
删除*\n"
*3:
查询*\n"
*4:
修改*\n"
*5:
插入*\n"
*6:
统计*\n"
*7:
降序排列*\n"
*8:
存储*\n"
*9:
显示数据*\n"
*0:
退出*\n"
*******************************\n"
}
intselect()
intchoose;
choose);
switch(choose)
case1:
Add();
break;
case2:
Del();
case3:
if(p!
=last){show(p);
}break;
case4:
Modify();
case5:
case6:
Tongji();
case7:
Sort();
case8:
Save();
case9:
Disp();
case0:
default:
Wrong();
returnchoose;
voiddestroy()
head->
p=head->
free(head);
free(last);
intmain(void)
head=(linklist)malloc(sizeof(node));
last=(linklist)malloc(sizeof(node));
next=NULL;
pre=head;
pre=NULL;
menu();
}while(select()!
=0);
destroy();
return0;
(四)、运行结果
1、主界面
2、输入商品记录
3、显示数据记录
4、删除记录
(五)、设计小结
优点:
(1)程序没有错误,没有警告,程序逻辑结构紧密。
(2)该程序包含内容较全面,操作较方便。
不足:
(1)此程序的创建商品函数一旦执行之前建立的通讯录将清空,一切从新头开始建立通讯录,所以若想连续在已有信息的通讯录中增加多个成员信息,只能多次选择voidADD(Linklist(p))函数来进行。
(2)输入太多个商品信息时,屏幕不能一页一页显示。