C语言设计说明书.docx
《C语言设计说明书.docx》由会员分享,可在线阅读,更多相关《C语言设计说明书.docx(20页珍藏版)》请在冰豆网上搜索。
![C语言设计说明书.docx](https://file1.bdocx.com/fileroot1/2023-1/10/5761f573-251e-4a4b-ab69-dd5a83844721/5761f573-251e-4a4b-ab69-dd5a838447211.gif)
C语言设计说明书
目录
一、设计题目1
二、设计目的1
三、设计分析1
四、总体设计1
五、详细设计2
六、设计总结9
一、设计题目
简单的图书销售系统的设计
二、设计目的
1.运用已学过的知识进行一个简单的应用程序的开发。
2.基本掌握设计课题的基本步骤和方法。
3.掌握应用系统开发中的需求分析与数据库设计方法。
4.基本掌握应用系统开发中设计文档的编制。
三、设计分析
对图书信息(包括书名、书号、作者、出版社、价格、从书名)进行管理,包括图书的信息添加、修改、查询、删除、显示、写入、退出.将各每本图书信息进行记录,信息内容包含:
(1)图书书名
(2)图书号(3)图书作者(4)图书出版社(5)图书价格。
现在收集一些图书信息,要求用C语言编写一个简单的图书销售管理系统,可进行录入、查询和浏览等功能。
学习相关开发工具和应用软件,熟悉系统建设过程。
对图书信息的添加、修改、查询、删除、显示、写入、退出是图书销售管理的重要组成部分,图书信息包括:
其内容较多,为了简化讨论,要求设计的图书管理系统能够完成以下功能:
1.每一条记录包括一个图书信息的书名、书号、作者、出版社和价格、从书名
2.图书信息添加功能:
图示添加信息用文件保存,可以一次完成若干条记录的添加。
3.图书信息显示浏览功能。
4.查询功能:
完成按书号、书名、价格查找课图书记录,并显示。
5.图书信息的删除:
按书号、书名进行删除某图书的信息。
6.应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观。
四、总体设计
该设计的主要功能包括:
添加信息功能、查询信息功能、修改信息功能、删除信息功能、显示部分或全部信息、退出等功能。
设计图如图1所示。
五、详细设计
1.各函数的功能和实现
(1)添加图书模块:
通过定义一个函数添加。
(2)显示目前丛书模块:
通过定义一个函数显示丛书。
(3)修改信息模块:
通过定义一个函数修改。
(4)删除信息模块:
通过定义一个函数删除。
(5)查询图书信息模块:
通过定义一个函数查询。
(6)显示销售订单模块:
通过定义一个函数显示订单。
(7)退出模块:
通过定义一个函数退出系统。
2.流程图
系统的流程图如图2所示
图2系统流程图
3.系统实现界面
根据实验设计启动程序将进入主菜单,主菜单包括系统名称、添加图书信息、显示目前丛书信息、修改信息、删除图书信息、查询图书信息、写入文件息和退出图书销售统。
可以根据提示选择不同的功能。
(1)系统界面如图3所示。
图3系统界面图
如果用户选择1,则进入添加图书信息菜单。
(2)添加图书信息菜单如图4所示
图4添加图书信息菜单图
如果用户选择2,则进入显示图书信息菜单。
(3)显示图书信息界面如图5所示
图5显示图书信息界面图
(4)用户选择3可以进入修改菜单,修改管理系统中存在的数据如图6所示
图6修改图书信息界面图
(5)用户选择4可以进入删除菜单,删除系统中单个或多个数据如图7所示
图7删除图书信息界面图
(6)用户选择5可以进入查询菜单,查询图书信息如图8所示
图8查询图书信息界面图
(7)用户选择6可以在此处添加信息,如图9所示
图9添加信息文件界面图
(8)用户选择7可以进入写入文件菜单,如图10所示
图10写入文件信息界面图
(9)用户选择8可以进入显示销售订单系统如图11所示
图11限时销售订单界面图
(10)用户选择9可以退出图书销售系统如图12所示
图12退出系统界面图
六、设计总结
本图书销售管理系统可以对图书销售信息进行日常管理,可以实现对图书信息的添加、显示、修改、删除、查询、写入、退出等功能。
运用起来方便灵活、简单易用。
设计灵活运用各种循环语句,运用结构体定义每本图书信息包含内容。
添加模块通过intintput来实现、显示模块通过voiddisplay来实现、修改模块通过voidinsert来实现、删除模块通过voiddelete来实现、查询模块通过voidquery来实现、显示订单模块通过voiddisplaysaling、退出系统通过exit来实现并且提供系统退出选项。
各模块相互独立互不影响。
附录
#include
#include
#include
#include
typedefstruct
{
charname[10];
charnum[20];
charzuozhe[20];
charchubanshe[20];
intscore;
charcongshuming[20];
chardingjia[20];
chardingliang[20];
charshijian[20];
}BOOK;
BOOKstu[80];
intmenu_select()
{
charc;
do{
system("cls");
printf("☆☆☆☆☆☆☆☆☆☆长春大学软件学院☆☆☆☆☆☆☆☆☆☆☆\n");
printf("☆创作人:
严峰班级:
2709309学号:
38☆\n");
printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
printf("★图书销售系统★\n");
printf("¤¤\n");
printf("★1.添加图书2.显示目前丛书★\n");
printf("¤¤\n");
printf("★3.修改信息4.删除信息★\n");
printf("¤¤\n");
printf("★5.查询图书信息6.添加信息文件★\n");
printf("¤¤\n");
printf("★7.写入文件8.显示销售订单★\n");
printf("¤¤\n");
printf("★9.退出系统★\n");
printf("¤¤\n");
printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
printf("★******************************************************★\n");
printf("★选择操作项目★\n");
printf("☆******************************************************☆\n");
printf("\t\tGiveyourChoice(0-9):
");
c=getchar();
}while(c<'0'||c>'9');
return(c-'0');
}
intInput(BOOKstud[],intn)
{
inti=0;
charsign,x[10];
while(sign!
='n'&&sign!
='N')
{
printf("\t\t\t书名:
");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\t书号:
");
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\t作者:
");
scanf("\t\t\t%s",stud[n+i].zuozhe);
printf("\t\t\t出版社:
");
scanf("\t\t\t%s",&stud[n+i].chubanshe);
printf("\t\t\t价格:
");
scanf("\t\t\t%d",&stud[n+i].score);
printf("\t\t\t从书名:
");
scanf("\t\t\t%s",stud[n+i].congshuming);
printf("\t\t\t订价:
");
scanf("\t\t\t%s",&stud[n+i].dingjia);
printf("\t\t\t订量:
");
scanf("\t\t\t%s",&stud[n+i].dingliang);
printf("\t\t\t时间:
");
scanf("\t\t\t%s",&stud[n+i].shijian);
gets(x);
printf("\t\t\tanymorerecords?
(Y/N)");
scanf("\t\t\t%c",&sign);
i++;
}
return(n+i);
}
voidDisplay(BOOKstud[],intn)
{
inti;
printf("\t\t\t----------------------------------------------------\n");
printf("\t\t\t书号书名价格出版社\n");
printf("\t\t\t----------------------------------------------------\n");
for(i=1;i{
printf("\t\t\t%-16s%-15s%d%15s\n",stud[i-1].num,stud[i-1].name,stud[i-1].score,stud[i-1].chubanshe);
if(i>1&&i%10==0)
{
printf("\t\t\t-----------------------------------\n");
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
voidDisplaydingdan(BOOKstud[],intn)
{
inti;
printf("\t\t\t----------------------------------------------------\n");
printf("\t\t\t书号书名定价定量时间\n");
printf("\t\t\t----------------------------------------------------\n");
for(i=1;i{
printf("\t\t\t%-12s%-12s%-12s%-12s%-12s\n",stud[i-1].num,stud[i-1].name,stud[i-1].dingjia,stud[i-1].dingliang,stud[i-1].shijian);
if(i>1&&i%10==0)
{
printf("\t\t\t-----------------------------------\n");
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
voidSort_by_num(BOOKstud[],intn)
{
inti,j,*p,*q,s;
chart[10];
for(i=0;ifor(j=0;jif(strcmp(stud[j].num,stud[j+1].num)>0)
{
strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=&stud[j+1].score;
q=&stud[j].score;
s=*p;
*p=*q;
*q=s;
}
}
intInsert_a_record(BOOKstud[],intn)
{
charx[10];
printf("\t\t\t书序号:
");
scanf("\t\t\t%s",stud[n].num);
printf("\t\t\t作者姓名:
");
scanf("\t\t\t%s",stud[n].name);
printf("\t\t\t书单价:
");
scanf("\t\t\t%d",&stud[n].score);
gets(x);
n++;
Sort_by_num(stud,n);
printf("\t\t\tInsertSuccessed!
\n");
return(n);
}
intDelete_a_record(BOOKstud[],intn)
{
chars[20];
inti=0,j;
printf("\t\t\ttellmehis(her)name:
");
scanf("%s",s);
while(strcmp(stud[i].name,s)!
=0&&iif(i==n)
{
printf("\t\t\tnotfind!
\n");
return(n);
}
for(j=i;j{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
stud[j].score=stud[j+1].score;
}
printf("\t\t\tDeleteSuccessed!
\n");
return(n-1);
}
voidQuery_a_record(BOOKstud[],intn)
{
chars[20];
inti=0;
printf("\t\t\tinputhis(her)name:
");
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!
=0&&iif(i==n)
{
printf("\t\t\tnotfind!
\n");
return;
}
printf("\t\t\this(her)number:
%s\n",stud[i].num);
printf("\t\t\this(her)price:
%d\n",stud[i].score);
}
intAddfromText(BOOKstud[],intn)
{
inti=0,num;
FILE*fp;
charfilename[20];
printf("\t\t\tInputthefilename:
");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("\t\t\tcann'topenthefile\n");
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num);
while(i{
fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score);
i++;
}
n+=num;
fclose(fp);
printf("\t\t\tSuccessed!
\n");
printf("\t\t\t");
system("pause");
return(n);
}
voidWritetoText(BOOKstud[],intn)
{
inti=0;
FILE*fp;
charfilename[20];
printf("\t\t\tWriteRecordstoaTextFile\n");
printf("\t\t\tInputthefilename:
");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("\t\t\tcann'topenthefile\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n);
while(i{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);
i++;
}
fclose(fp);
printf("Successed!
\n");
}
voidmain()
{
intn=0;
for(;;)
{
switch(menu_select())
{
case1:
printf("\t\t\tInputInformation\n");
n=Input(stu,n);
break;
case2:
printf("\t\t\tDisplayAllInformation\n");
Display(stu,n);
break;
case3:
printf("\t\t\tInsertaRecord\n");
n=Insert_a_record(stu,n);
printf("\t\t\t");
system("pause");
break;
case4:
printf("\t\t\tDeleteaRecord\n");
n=Delete_a_record(stu,n);
printf("\t\t\t");
system("pause");
break;
case5:
printf("\t\t\tQuery\n");
Query_a_record(stu,n);
printf("\t\t\t");
system("pause");
break;
case6:
printf("\t\t\tAddRecordsfromaTextFile\n");
n=AddfromText(stu,n);
break;
case7:
printf("\t\t\tWritetoaTextfile\n");
WritetoText(stu,n);
printf("\t\t\t");
system("pause");
break;
case8:
printf("\t\t\tDisplaysaling\n");
Displaydingdan(stu,n);
break;
case9:
printf("\t\t\tHaveaGoodLuck,Bye-bye!
\n");
printf("\t\t\t");
system("pause");
exit(0);
}
}
}