通讯录管理系统1Word下载.docx
《通讯录管理系统1Word下载.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统1Word下载.docx(24页珍藏版)》请在冰豆网上搜索。
登陆号,书名,作者名,分类号,出版单位,出版时间,价格等;
图书信息录入功能;
图书信息分类浏览功能;
查询和排序功能:
(1)按书名查询;
(2)按登陆号查询;
图书信息的删除和修改;
系统的各个功能模块要求用函数的形式实现;
完成设计任务并书写课程设计报告;
1.2系统功能需求分析
主要包含以下多种功能:
●新建:
添加图书信息
●浏览:
显示图书信息
●查询:
查询图书信息
●修改:
修改图书信息
●删除:
删除图书信息
●保存:
将信息保存到文件
第2章总体设计
整个系统可以设计为主菜单模块、数据插入模块、数据浏览模块、数据查找模块、数据修改模块、数据删除模块、文件导入模块和文件保存模块。
voidmainmenu();
/*主菜单*/
voidinput();
/*输入图书信息*/
voidsearchbookname();
/*根据书名查询*/
voidsearchloginnum();
/*根据登录号查询*/
voidinsert();
/*插入图书信息*/
voiddelet();
/*删除图书信息*/
voidchange();
/*改变图书信息*/
voidmyexit();
/*返回主菜单*/
voidmain();
/*主函数*/
总体模块流图:
第3章详细设计
采用结构体数组。
Struct
{longloginnum;
/*登录号*/
charbookname[100];
/*书名*/
charwritername[20];
/*作者名*/
longbookid;
/*书号*/
charunit[100];
/*出版社地址*/
floatprice;
/*图书价格*/
chartime[15];
/*出版时间*/
}cbook;
/*信息结构体数组*/
(1)主菜单模块
采用switch()函数从键盘选择相应菜单的对应功能。
switch(num)
{
case1:
input();
break;
/*图书信息录入*/
case2:
searchbookname();
/*按书名查找*/
case3:
searchloginnum();
/*按登陆号查找*/
case4:
insert();
/*图书信息插入*/
case5:
change();
/*图书信息修改*/
case6:
delet();
/*图书信息删除*/
case7:
my_exit();
/*退出*/
default:
printf("
您输入的数字有误,请重新输入\n"
);
}
(2)数据录入模块
请输入图书信息:
\n"
登录号--书名--作者名--书号--出版社名--图书价格--出版时间\n"
while
(1)
{scanf("
%ld"
&
loginnum);
if(loginnum==-1)
break;
scanf("
%s%s%ld%s%s%f"
bookname,writername,&
bookid,unit,time,&
price);
book[book_n].loginnum=loginnum;
strcpy(book[book_n].bookname,bookname);
strcpy(book[book_n].writername,writername);
book[book_n].bookid=bookid;
strcpy(book[book_n].unit,unit);
book[book_n].price=price;
strcpy(book[book_n].time,time);
book_n++;
}save();
//调用文件保存模块将联系人信息
(3)数据浏览模块
由于本程序新建立文件book.txt,因此图书信息的查询即可到D盘book.txt文件中查找。
voidsave()
{
FILE*fp;
inti;
if((fp=fopen("
D:
\\book.txt"
"
w+"
))==NULL)
{
printf("
cannotopenthefile\n"
return;
}
for(i=0;
i<
3;
i++)
fprintf(fp,"
%ld%s%s%ld%s%s%f\n"
book[i].loginnum,book[i].bookname,book[i].writername,book[i].bookid,book[i].unit,book[i].time,book[i].price);
}
fclose(fp);
(3)数据查询模块
a.按图书名查询
voidsearchbookname()
{
intmark=0;
charbookname[100];
printf("
\n按书名查找\n"
\n请输入书名:
"
%s"
bookname);
for(inti=0;
book_n;
if(strcmp(book[i].bookname,bookname)==0)
{printf("
\n以下是您查找的图书信息\n"
\n登录号:
%ld\n"
book[i].loginnum);
\n书名:
%s\n"
book[i].bookname);
\n作者名:
book[i].writername);
\n书号:
book[i].bookid);
\n出版社地址:
book[i].unit);
\n图书价格:
%f\n"
book[i].price);
\n出版时间:
%s\n"
book[i].time);
mark++;
}
if(mark==0)
\n没有该书名的图书纪录\n"
printfmenu();
b.按登陆号查找
voidsearchloginnum()
intmark=0,i;
longloginnum;
\n按登录号查找\n"
\n请输入登录号:
if(book[i].loginnum=loginnum)
\n以下是您查找的图书信息\n"
\n作者名:
if(mark==0)
\n\t\t没有该图书信息"
为了保证图书信息修改与删除后图书信息的直接动态,本程序又将文件读了出来,并在最后关闭文件的后面又打开了文件,防止文件的丢失与程序的不正常结束。
(4)图书信息插入
intcmp(constvoid*a,constvoid*b)
cbook*p1;
cbook*p2;
p1=(cbook*)a;
p2=(cbook*)b;
returnp1->
loginnum-p2->
loginnum;
intinsert()
{printf("
请输入要插入的图书信息\n"
%ld%s%s%ld%s%s%f"
loginnum,bookname,writername,&
strcpy(book[book_n].bookname,bookname);
strcpy(book[book_n].writername,writername);
book[book_n].bookid=bookid;
strcpy(book[book_n].unit,unit);
book[book_n].price=price;
strcpy(book[book_n].time,time);
book_n++;
qsort(book,book_n,sizeof(book[0]),cmp);
in();
return0;
(5)图书信息修改
intchange()
请输入要修改的图书的书号\n"
{if(loginnum==book[i].loginnum)
break;
if(i==book_n)
printf("
没有这本书\n"
return0;
请输入要修改的图书信息\n"
scanf("
book[i].loginnum=loginnum;
strcpy(book[i].bookname,bookname);
strcpy(book[i].writername,writername);
book[i].bookid=bookid;
strcpy(book[i].unit,unit);
book[i].price=price;
strcpy(book[i].time,time);
return0;
(6)图书信息删除
intdelet()
请输入要删除的图书的书号\n"
for(i=0;
{if(loginnum==book[i].loginnum)
intj;
for(j=i;
j<
j++)
copystruct(j,j+1);
book_n--;
(7)退出并返回主菜单
voidmy_exit()
{FILE*fp;
fp=fopen("
r+"
fprintf(fp,"
%ld%s%s%ld%s%f"
book[i].loginnum,book[i].bookname,book[i].writername,book[i].bookid,book[i].unit,book[i].price,book[i].time);
exit(0);
第4章程序源代码
#include<
stdio.h>
string.h>
stdlib.h>
typedefstruct
{longloginnum;
charwritername[20];
longbookid;
charunit[100];
floatprice;
chartime[15];
cbookbook[1000];
intbook_n=0;
longloginnum;
voidprintfmenu();
intcmp(constvoid*a,constvoid*b)
cbook*p1;
voidcopystruct(inta,intb)
book[a].loginnum=book[b].loginnum;
strcpy(book[a].bookname,book[b].bookname);
strcpy(book[a].writername,book[b].writername);
book[a].bookid=book[b].bookid;
strcpy(book[a].unit,book[b].unit);
book[a].price=book[b].price;
strcpy(book[a].time,book[b].time);
%ld%s%s%ld%s%s%f\n"
voidinput()
while
(1)
book[book_n].bookid=bookid;
strcpy(book[book_n].unit,unit);
book[book_n].price=price;
strcpy(book[book_n].time,time);
book_n++;
save();
}
voidsearchloginnum()
if(book[i].loginnum==loginnum)
printfmenu();
voidin()
w"
))!
=NULL)
{
r"
exit(0);
intinsert()
intchange()
scanf("
strcpy(book[i].unit,