C语言编程示例.docx
- 文档编号:14289130
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:26
- 大小:200.46KB
C语言编程示例.docx
《C语言编程示例.docx》由会员分享,可在线阅读,更多相关《C语言编程示例.docx(26页珍藏版)》请在冰点文库上搜索。
C语言编程示例
【题目描述的内容】
【简单的描述】
设计一个图书馆的图书管理程序,使其具有一些基本的功能,通过所给的提示信息便可以对图书的各项信息进行相应的处理。
图书馆图书档案管理程序
【题目描述】
设计一个简单的图书档案管理程序,实现下列功能:
1)通过键盘输入若干图书的基本信息,包括:
书号、书名、作者、出版社、出版日期(含年、月)、价格、进馆日期(含年、月、日)、进馆数量;
2)显示所有信息;
3)给定书名,显示该书的所有信息;
4)给定作者,显示该作者的所有书的书名和进馆日期;
5)给定进馆日期,显示该日期进馆图书的数量;
6)给定书名,删除该书的信息;
7)显示花费资金最多的图书的名称和花费的资金;
【题目要求】
1)按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;
2)为各项操作功能设计一个菜单。
应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。
【输入要求】
应用程序运行后,在屏幕上显示一个菜单(菜单显示外观见前面的图示)。
用户可以根据需求,选定相应的操作项目。
进入每个操作后(若需要,还可显示子菜单),根据应用程序的提示信息,从键盘输入相应的信息。
要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
【输出要求】
要求用户输入数据时,要操作界面要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
【用户文档的内容】
1、应用程序功能的说明:
使用该程序时,可以通过屏幕上显示的菜单以及所给的提示信息进行相应的操作。
程序运行界面下的菜单如图1:
图1
(1)用户在菜单下,选择“1”选项时,会提示输入信息的各项提示,通过键盘输入若干图书的基本信息,包括:
书号、书名、作者、出版社、出版日期(含年、月)、价格、进馆日期(含年、月、日)、进馆数量;
其中,当所有图书的信息全部录入完毕后,在提示的Number处输入“end”时可以结束输入过程;在书入进馆日期时,如果该日期早于图书的出版日期,程序会提示输入的进馆日期有误,可重新输入进馆日期,只有当该日期正确后便可进行下一项数据的录入。
(2)用户在菜单下选择“2”选项时,运行界面会显示输出所有图书的所有信息。
(3)用户在菜单下选择“3”选项时,从键盘输入一个书名,按下“Enter”键,如果图书记录中有这本书,运行界面显示该书的所有信息;如果没有该书,程序会提示没有这本书的信息。
(4)用户在菜单下选择“4”选项时,从键盘输入一个作者名,按下“Enter”键,如果图书记录中有这位作者,运行界面显示该作者的所有书的书名和进馆日期;如果没有,程序会提示没有该作者的图书信息。
(5)用户在菜单下选择“5”选项时,从键盘输入一个进馆日期,按下“Enter”键,如果图书记录中有这这个日期进馆的图书,运行界面显示改日期进馆的图书的数量;如果没有,程序会提示没有这本书的信息。
(6)用户在菜单下选择“6”选项时,从键盘输入一个书名,按下“Enter”键,如果图书记录中有这本书,程序会删除该书的所有信息,并在界面中提示该信息已被删除;如果没有,系统将提示没有这本书。
(7)用户在菜单下选择“7”选项时,按下“Enter”键,运行界面会显示花费最多的图书的名称和花费的金额。
2、应用程序安装、启动方式:
将编辑好的扩展名为“.c”的文件复制到电脑中,在“打开方式”中选择TurboC3.0就可打开程序。
3、程序的界面、交互方式和操作方式:
(1)程序编辑界面是蓝色背景下的工作界面,包括菜单栏、编辑工作区、信息区和功能提示栏等;运行界面是黑色背景下的运行界面。
(2)在编辑窗口中的菜单栏里选择Run→Run运行程序,切换至运行界面;在运行菜单下选择“0”选项,可以退出程序,进入编辑界面。
4、输入数据的类型、格式、内容限制:
数据类型包括整形变量(图书的出版日期publish_date、进馆日期inport_date和进馆数量amount)、字符串型变量(图书书号num、书名name、作者author和出版社Publish)和单精度实型变量(图书价格price);
其中,字符串型变量都不能在中间加空格,由于运行环境限制,显示窗口大小有限,所有字符串型变量都不能过长,书号num长度不超过8个字符,书名name长度不超过14个字符,作者author不超过10个字符,出版社publish不超过10个字符。
5、程序的运行环境:
程序时在TurboC3.0的运行界面下运行,运行开始时显示一个菜单,用户可根据不同的选项对程序进行操作。
在运行过程中会有提示,用户可根据提示内容进行适当操作。
6、产生的错误提示及原因:
在选择菜单中选项时,如果输入了菜单中不存在的选项时,程序会提示不存在该选项并在按下“Enter”时返回菜单。
【技术文档的内容】
【程序的整体结构】
1、模块的划分:
main
delinfo
input
menu
searchDate
searchName
searchMostexpen
searchAuthor
output
2、模块的功能:
◆voidmenu()函数:
用于输出显示菜单;
◆intintput(BOOKINFO[])函数:
用于输入储存图书的所有信息;
◆voidoutput(BOOKINFO[],int)函数:
用于输出所有图书的所有信息;
◆voidsearchName(BOOKINFO[],int)函数:
用于从图书记录中查找是否存在与键盘输入的书名相同的书,并输出相应的信息;
◆voidsearchAuthor(BOOKINFO[],int)函数:
用于从图书信息中查找是否存在与键盘输入的作者名相同的书,并输出相应的信息;
◆voidsearchDate(BOOKINFO[],int)函数:
用于从图书信息中查找是否存在与键盘输入的进馆日期相同的书,并输出相应的信息;
◆voiddelinfo(BOOKINFO[],int)函数:
用于删除图书信息中与从键盘输入的书名相同的书的信息;
◆voidsearcherMostexpen(BOOKINFO[],int)函数:
输出所有图书中花费最多的图书的信息。
3、结构声明:
typedefstruct{/*日期结构*/
intyear;/*年*/
intmonth;/*月*/
intday;/*日*/
}DATE;
typedefstruct{/*图书信息结构*/
charnum[15];/*书号*/
charname[30];/*书名*/
charauthor[20];/*作者*/
charpublish[40];/*出版社*/
DATEpublish_date;/*出版日期*/
floatprice;/*价格*/
DATEinport_date;/*进馆日期*/
intamount;/*进馆数量*/
}BOOKINFO;
4、定义全局变量:
intn;
【主要模块的说明】
1、voidmain()函数:
(1)作用:
程序的主函数,将能实现程序的各项功能的函数联系到一起,构成程序的整体流程结构。
(2)变量及其作用:
BOOKINFObook[100];定义BOOKINFO结构型数组变量book[100],数组用于储存
从键盘输入的图书的信息(最多可输入100本书的信息);
intchoice;定义int型变量choice,用于接收从键盘输入的菜单选项,并通过switch语句选择执行相应的程序;
inta=0;定义int型变量a,并初始化,用于判断main函数中循环语句dowhile是否结束;当choice的值为“0”时,将1赋值给a,否则不对a做任何变化,同时讨论a不等于1是执行循环,否则循环终止。
2、intinput(BOOKINFO[])函数:
(1)作用:
将从键盘输入所有图书的信息储存到变量book中。
(2)变量及作用:
inti;定义整型变量i,作为循环变量;
intm=0;定义整型变量m并初始化,用于记录输入的图书的总的种数,最终将m的只返回给主函数;
intj;定义整型变量j,用于讨论进馆日期是否晚于出版日期时,控制循环的结束。
floatt;用于从键盘接收书的价格,否则会出现错误“floatpointformatnotlinked”.
(3)主要算法(流程图)
开始
1→i
0→n
0→j
输入book[i].num
strcmp(book[i].num,”end”)==0
Y
N
输入书名、作者、出版社、出版日期、价格
输入进馆日期Inport_date
输出日期错误
进馆日期晚于出版日期
将m返回main函数
N
Y
j加1
结束
j==0
Y
N
输入amount
m加1
i加1
3、voidsearchName(BOOKINFO[],int)函数:
(1)作用:
用于从图书记录中查找是否存在与键盘输入的书名相同的书,并输出相应的信息;
(2)变量及其作用:
charname[30];定义字符串name[30]用于接收从键盘输入的图书名,并与储存的所有图书的书名比较,将于输入书名相同的图书信息输出;
inti;定义整型变量i,作为循环变量;
intj;定义整型变量j,用于判断储存的图书信息中是否有与从键盘输入的书名相同的图书的信息。
(3)主要算法(流程图)
开始
0→j
输入name
1→i
i<=n
N
i加1
Y
strcmp(book[i].name,name)==0)
j==0
N
N
YY
输出不存在
输出该书的所有信息
j加1
结束
4、voiddelinfo(BOOKINFO[],int)函数:
(1)作用:
从键盘输入的书名,查找是否有与该书名相同的图书,并将其信息删除。
(2)变量及其作用:
chardelname[30];定义字符串变量delname,储存从键盘接收的书名;
intk;定义整型变量k,作为循环变量,再循环过程中把要删除的书后面的所有书的信息向前移动一位;
intj;定义整型变量j,用于判断储存的图书信息中是否有与从键盘输入的书名相同的图书的信息。
(3)主要算法(流程图)
开始
1→i
0→j
输入delname
i<=n
i加1
N
Y
strcmp(book[i].name,delname)==0)
N
j==0
Y
j加1
i→k
YN
输出不存在
输出已删除
k加1
k<=n
N
返回n-1
返回n
Y
book[k+1]→book[k]
结束
5、voidsearchMostexpen(BOOKINFO[],int)函数:
(1)作用:
输出所有图书中花费最多的图书的信息。
(2)变量及其作用:
floatexpen[100];定义单精度实型数组expen,用于储存各图书的花费;
inti,j;定义整型数组i,j,用作循环变量,控制循环语句的循环次数;
intmax;定义整型变量max,储存花费最多的图书的位置。
(3)主要算法(流程图)
开始
1→i
1→max
1→j
i<=n
N
i加1
Y
输出最大的花费及其书名
j<=n
expen[i]=book[i].price*book[i].amount
N
j加1
Y
expen[j]>expen[max]
max+1→i
i<=n
N
i加1
N
Y
expen[max]==expen[i]
j→max
Y
N
输出花费
Y
结束
【测试用例与测试结果】
1、测试用例(在程序运行过程中输入以下各信息):
书号书名作者出版社出版日期价格进馆日期进馆数量
1shuxuzuozhe1bejing1990412.0020002310
2yuwenzuozhe2shanghai1999645.0020002320
3yingyuzuozhe3shanxi2000225.2520056420
4wulizuozhe4hebei1996430.0020056730
5huaxuezuozhe4tianjin2000514.2220087945
2、测试结果:
(1)显示输入的所有信息(如图2):
图2
(2)通过书名查找图书:
第一次输入“yuwen”,显示结果(如图3)
图3
第二次输入“jisuanji”,显示结果(如图4)
图4
(3)通过作者查找图书:
第一次输入“zuozhe4”,显示结果(如图5)
图5
第二次输入“zuozhe7”,显示结果(如图6)
图6
(4)通过进馆日期查找图书:
第一次输入“200023”,显示结果(如图7)
图7
第二次输入“200956”,显示结果(如图8)
图8
(5)删除图书信息:
第一次输入“shuxue”,显示结果(如图9),并显示所有书信息(如图10)
图9
如图10
第二次输入“jisuanji”,显示结果(如图11)
如图11
(6)显示花费最多的图书的信息(如图12)
如图12
【程序的开发环境】
程序是在TurboC3.0软件下开发的。
【程序的源代码】
#include
#include
typedefstruct{/*日期结构*/
intyear;
intmonth;
intday;
}DATE;
typedefstruct{/*图书信息结构*/
charnum[15];
charname[30];
charauthor[20];
charpublish[40];
DATEpublish_date;
floatprice;
DATEinport_date;
intamount;
}BOOKINFO;
intn;/*定义全局变量n*/
voidmenu();/*声明函数*/
intinput(BOOKINFO[]);
voidoutputall(BOOKINFO[],int);
voidsearchName(BOOKINFO[],int);
voidsearchAuthor(BOOKINFO[],int);
voidsearchDate(BOOKINFO[],int);
intdelinfo(BOOKINFO[],int);
voidsearchMostexpen(BOOKINFO[],int);
voidmain()
{
BOOKINFObook[100];
intchoice,a=0;
printf("\n**********SystemofBookAdministration*********\n");
do{
menu();
scanf("%d",&choice);/*获得菜单选项*/
switch(choice){
case1:
n=input(book);break;
case2:
outputall(book,n);break;
case3:
searchName(book,n);break;
case4:
searchAuthor(book,n);break;
case5:
searchDate(book,n);break;
case6:
n=delinfo(book,n);getch();break;
case7:
searchMostexpen(book,n);break;
case0:
a=1;break;
default:
printf("\nThereisnothischoice!
");getch();break;
}
}while(a!
=1);
}
voidmenu()/*显示菜单*/
{
clrscr();/*清屏*/
printf("\n\n==================MENU======================");
printf("\n\nInputallinformation.........................1");
printf("\n\nShownallinformation.........................2");
printf("\n\nSearchthenameofbook.......................3");
printf("\n\nSearchtheauthorofbooks....................4");
printf("\n\nSearchthebooksinportedonadate...........5");
printf("\n\nDeleteabook'sinformation...................6");
printf("\n\nShowntheexpensivebook......................7");
printf("\n\nExitprogram..................................0");
printf("\n\n===============================================");
printf("\n\n\nPleaseChoose:
");
}
/*输入图书信息*/
intinput(BOOKINFObook[])
{
inti=1,m=0,j;
floatt;
clrscr();
while(i>=1){
j=0;
printf("\nEntertheinformationofthe%dthbook",i);
printf("\nNumber(Enter\”end\”breakthestepofinputing):
");
scanf("%s",book[i].num);
if(strcmp(book[i].num,"end")==0)/*判断是否结束输入过程*/
break;
else{
printf("Name:
");
scanf("%s",book[i].name);
printf("Author:
");
scanf("%s",book[i].author);
printf("Publish:
");
scanf("%s",book[i].publish);
printf("Publish_date(includingyearandmonth):
");
scanf("%d%d",&book[i].publish_date.year,&book[i].publish_date.month);
printf("Price:
");
scanf("%f",&t);/*结构中数据类型变化从键盘赋值会出现问题*/
book[i].price=t;
printf("Inport_date(includingyear,monthandday):
");
do{/*判断进馆日期是否晚于出版日期*/
scanf("%d%d%d",&book[i].inport_date.year,
&book[i].inport_date.month,&book[i].inport_date.day);
if((book[i].inport_date.year ||(book[i].inport_date.year==book[i].publish_date.year &&book[i].inport_date.month printf("ThedateisERROR.\nPleaseinputtherightInport_date: "); else j=j+1; }while(j==0); printf("Inputamount: "); scanf("%d",&book[i].amount); } m++; i++; } returnm;/*给全局变量一个返回值*/ } /*输出所有书的信息*/ voidoutputall(BOOKINFObook[],intn) { inti; clrscr(); printf("\nNumberNameAuthorPublishPublish_datePriceInport_dateamount\n"); for(i=1;i<=n;i++) printf("\n%-8s%-14s%-10s%-10s%d/%2d%7.2f%d/%2d/%2d%d", book[i].num,book[i].name,book[i].author,book[i].publish, book[i].publish_date.year,book[i].publish_date.month,book[i].price, book[i].inport_date.year,book[i].inport_date.month, book[i].inport_date.day,book[i].amount); getch(); } /*根据给定书名查找图书*/ voidsearchName(BOOKINFObook[],intn) { inti,j=0; charname[30]; clrscr(); printf("\nEnterthenameofbookyouwanttosearch: "); scanf("%s",name); printf("Theresultofsearching: "); printf("\nNumberNameAuthorPublishPublish_datePriceInport_dateamount\n"); for(i=1;i<=n;i++){ if(stricmp(book[i].name,name)==0){ printf("%-7s%-10s%-10s%-10s%d/%2d%7.2f%d/%2d/%2d%d", book[i].num,book[i].name,book[i].author,book[i].pub
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编程 示例