通讯录管理系统1.docx
《通讯录管理系统1.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统1.docx(24页珍藏版)》请在冰豆网上搜索。
![通讯录管理系统1.docx](https://file1.bdocx.com/fileroot1/2023-1/31/7079fa12-152d-4ea8-9dbc-5200fdfd4b27/7079fa12-152d-4ea8-9dbc-5200fdfd4b271.gif)
通讯录管理系统1
沈阳航空航天大学
课程设计报告
课程设计名称:
C语言课程设计
课程设计题目:
图书信息管理系统设计
院(系):
计算机学院
专业:
计算机科学与技术
班级:
24010102
学号:
2012040101051
姓名:
李驰
指导教师:
高利军
完成日期:
2013年3月12日
目录
第1章需求分析2
1.1需求概述2
1.2系统功能需求分析2
第2章总体设计2
第3章详细设计3
第4章程序源代码16
参考文献25
第1章需求分析
1.1需求概述
Ø图书信息包括:
登陆号,书名,作者名,分类号,出版单位,出版时间,价格等;
Ø图书信息录入功能;
Ø图书信息分类浏览功能;
Ø查询和排序功能:
(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();break;/*按书名查找*/
case3:
searchloginnum();break;/*按登陆号查找*/
case4:
insert();break;/*图书信息插入*/
case5:
change();break;/*图书信息修改*/
case6:
delet();break;/*图书信息删除*/
case7:
my_exit();break;/*退出*/
default:
printf("您输入的数字有误,请重新输入\n");}
(2)数据录入模块
printf("请输入图书信息:
\n");
printf("登录号--书名--作者名--书号--出版社名--图书价格--出版时间\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");
printf("\n请输入书名:
");
scanf("%s",bookname);
for(inti=0;i{
if(strcmp(book[i].bookname,bookname)==0)
{printf("\n以下是您查找的图书信息\n");
printf("\n登录号:
%ld\n",book[i].loginnum);
printf("\n书名:
%s\n",book[i].bookname);
printf("\n作者名:
%s\n",book[i].writername);
printf("\n书号:
%ld\n",book[i].bookid);
printf("\n出版社地址:
%s\n",book[i].unit);
printf("\n图书价格:
%f\n",book[i].price);
printf("\n出版时间:
%s\n",book[i].time);
mark++;
}
}
if(mark==0)
printf("\n没有该书名的图书纪录\n");
printfmenu();
}
b.按登陆号查找
voidsearchloginnum()
{
intmark=0,i;
longloginnum;
printf("\n按登录号查找\n");
printf("\n请输入登录号:
");
scanf("%ld",&loginnum);
for(i=0;i{
if(book[i].loginnum=loginnum)
{printf("\n以下是您查找的图书信息\n");
printf("\n登录号:
%ld\n",book[i].loginnum);
printf("\n书名:
%s\n",book[i].bookname);
printf("\n作者名:
%s\n",book[i].writername);
printf("\n书号:
%ld\n",book[i].bookid);
printf("\n出版社地址:
%s\n",book[i].unit);
printf("\n图书价格:
%f\n",book[i].price);
printf("\n出版时间:
%s\n",book[i].time);
mark++;
}
}
if(mark==0)
printf("\n\t\t没有该图书信息");
printfmenu();
}
为了保证图书信息修改与删除后图书信息的直接动态,本程序又将文件读了出来,并在最后关闭文件的后面又打开了文件,防止文件的丢失与程序的不正常结束。
(4)图书信息插入
intcmp(constvoid*a,constvoid*b)
{
cbook*p1;
cbook*p2;
p1=(cbook*)a;
p2=(cbook*)b;
returnp1->loginnum-p2->loginnum;
}
intinsert()
{printf("请输入要插入的图书信息\n");
printf("登录号--书名--作者名--书号--出版社名--图书价格--出版时间\n");
scanf("%ld%s%s%ld%s%s%f",&loginnum,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++;
qsort(book,book_n,sizeof(book[0]),cmp);
in();
return0;}
(5)图书信息修改
intchange()
{
printf("请输入要修改的图书的书号\n");
scanf("%ld",&loginnum);
for(inti=0;i{if(loginnum==book[i].loginnum)
break;
if(i==book_n)
{
printf("没有这本书\n");
return0;
}
}
printf("请输入要修改的图书信息\n");
printf("登录号--书名--作者名--书号--出版社名--图书价格--出版时间\n");
scanf("%ld%s%s%ld%s%s%f",&loginnum,bookname,writername,&bookid,unit,time,&price);
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);
in();
return0;
}
(6)图书信息删除
intdelet()
{
printf("请输入要删除的图书的书号\n");
scanf("%ld",&loginnum);
inti;
for(i=0;i{if(loginnum==book[i].loginnum)
break;
if(i==book_n)
{
printf("没有这本书\n");
return0;
}
intj;
for(j=i;jcopystruct(j,j+1);
book_n--;
}
in();
return0;
}
(7)退出并返回主菜单
voidmy_exit()
{FILE*fp;
fp=fopen("D:
\\book.txt","r+");
inti;
for(i=0;ifprintf(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);
fclose(fp);
printfmenu();
exit(0);
}
第4章程序源代码
#include
#include
#include
typedefstruct
{longloginnum;
charbookname[100];
charwritername[20];
longbookid;
charunit[100];
floatprice;
chartime[15];
}cbook;
cbookbook[1000];
intbook_n=0;
longloginnum;
charbookname[100];
charwritername[20];
longbookid;
charunit[100];
floatprice;
chartime[15];
voidprintfmenu();
intcmp(constvoid*a,constvoid*b)
{
cbook*p1;
cbook*p2;
p1=(cbook*)a;
p2=(cbook*)b;
returnp1->loginnum-p2->loginnum;
}
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);
}
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);
}
voidinput()
{
printf("请输入图书信息:
\n");
printf("登录号--书名--作者名--书号--出版社名--图书价格--出版时间\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();
printfmenu();
}
voidsearchbookname()
{
intmark=0;
charbookname[100];
printf("\n按书名查找\n");
printf("\n请输入书名:
");
scanf("%s",bookname);
for(inti=0;i{
if(strcmp(book[i].bookname,bookname)==0)
{printf("\n以下是您查找的图书信息\n");
printf("\n登录号:
%ld\n",book[i].loginnum);
printf("\n书名:
%s\n",book[i].bookname);
printf("\n作者名:
%s\n",book[i].writername);
printf("\n书号:
%ld\n",book[i].bookid);
printf("\n出版社地址:
%s\n",book[i].unit);
printf("\n图书价格:
%f\n",book[i].price);
printf("\n出版时间:
%s\n",book[i].time);
mark++;
}
}
if(mark==0)
printf("\n没有该书名的图书纪录\n");
printfmenu();
}
voidsearchloginnum()
{
intmark=0,i;
longloginnum;
printf("\n按登录号查找\n");
printf("\n请输入登录号:
");
scanf("%ld",&loginnum);
for(i=0;i{
if(book[i].loginnum==loginnum)
{printf("\n以下是您查找的图书信息\n");
printf("\n登录号:
%ld\n",book[i].loginnum);
printf("\n书名:
%s\n",book[i].bookname);
printf("\n作者名:
%s\n",book[i].writername);
printf("\n书号:
%ld\n",book[i].bookid);
printf("\n出版社地址:
%s\n",book[i].unit);
printf("\n图书价格:
%f\n",book[i].price);
printf("\n出版时间:
%s\n",book[i].time);
mark++;
}
}
if(mark==0)
printf("\n\t\t没有该图书信息");
printfmenu();
}
voidin()
{
FILE*fp;
inti;
if((fp=fopen("D:
\\book.txt","w"))!
=NULL)
{
for(i=0;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);
fp=fopen("D:
\\book.txt","r");
printfmenu();
exit(0);
}
intinsert()
{
printf("请输入要插入的图书信息\n");
printf("登录号--书名--作者名--书号--出版社名--图书价格--出版时间\n");
scanf("%ld%s%s%ld%s%s%f",&loginnum,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++;
qsort(book,book_n,sizeof(book[0]),cmp);
in();
return0;
}
intchange()
{
printf("请输入要修改的图书的书号\n");
scanf("%ld",&loginnum);
for(inti=0;i{if(loginnum==book[i].loginnum)
break;
if(i==book_n)
{
printf("没有这本书\n");
return0;
}
}
printf("请输入要修改的图书信息\n");
printf("登录号--书名--作者名--书号--出版社名--图书价格--出版时间\n");
scanf("%ld%s%s%ld%s%s%f",&loginnum,bookname,writername,&bookid,unit,time,&price);
book[i].loginnum=loginnum;
strcpy(book[i].bookname,bookname);
strcpy(book[i].writername,writername);
book[i].bookid=bookid;
strcpy(book[i].unit,