C语言课程设计 通讯录管理系统.docx
《C语言课程设计 通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计 通讯录管理系统.docx(15页珍藏版)》请在冰豆网上搜索。
C语言课程设计通讯录管理系统
#include
#include
#include
#include
#include
structrecord
{
longID;
charcode[10];
charname[20];
charauthor[10];
intpub;
doubleprice;
intstore;
intlend;
inttotal;
intisdel;
structrecord*next;
};
typedefstructrecordbook;
voidinput();
voiddisplay(book*);
voidupdate();
voidsearch();
voiddatadelete();
voiddatarecover();
voidinsert();
voiddatasave();
voiddataopen();
book*head;
voidmain()
{
chari;
intdrive=DETECT,mode;
initgraph(&drive,&mode,"");
cleardevice();
setbkcolor(9);
printf("\16[co4st8e320,170,0,360,300,70,2,4]");
printf("\16[{-10|20@48,24=2(14)9自动化0710班}]");
printf("\16[{-90|140@55,55=11(13)9通讯录管理系统}]");
printf("\16[{-246|280@20,20=8(12)9设计者:
电气信息0815苏迪}]");
printf("\16[{-250|360@20,20=8(4)9请按Enter键进入}]");
getch();
for(;;)
{
clrscr();
setbkcolor(9);
printf("\16[{-5|30@40,40=30
(2)9******菜单******}]");
printf("\16[{-130|100@35,35=30(7)9a输入}]");
printf("\16[{-400|100@35,35=30(7)9b显示}]");
printf("\16[{-130|145@35,35=30(7)9c修改}]");
printf("\16[{-400|145@35,35=30(7)9d查找}]");
printf("\16[{-130|205@35,35=30(7)9e删除}]");
printf("\16[{-400|205@35,35=30(7)9f恢复}]");
printf("\16[{-130|260@35,35=30(7)9g添加}]");
printf("\16[{-400|260@35,35=30(7)9h统计}]");
printf("\16[{-130|315@35,35=30(7)9i保存}]");
printf("\16[{-400|315@35,35=30(7)9j打开}]");
printf("\16[{-130|360@35,35=30(7)9k退出}]");
printf("\16[{-400|360@35,35=30(7)4请选择a至j}]");
i=getch();
if(i=='k')break;
elseswitch(i)
{
case'a':
input();break;
case'b':
clrscr();display(head);break;
case'c':
update();break;
case'd':
search();break;
case'e':
datadelete();break;
case'f':
datarecover();break;
case'g':
insert();break;
case'h':
break;
case'i':
datasave();break;
case'j':
dataopen();break;
}
}
}
longGetMaxID()/*返回链表里最大的ID值*/
{
book*curr;
longmax=0;
curr=head;
while(curr!
=0)
{
if(curr->ID>max)max=curr->ID;
curr=curr->next;
}
returnmax;
}
voidinput()
{
book*pre,*curr;
clrscr();
head=(book*)malloc(sizeof(book));
head->ID=0;head->next=0;
pre=0;curr=head;
printf("\n依次输入书代号书名作者出版时间单价库存数量借出数量\n");
do
{
curr->ID=GetMaxID()+1;
scanf("%s",curr->code);
scanf("%s",curr->name);
scanf("%s",curr->author);
scanf("%d",&curr->pub);
scanf("%lf",&curr->price);
scanf("%d",&curr->store);
scanf("%d",&curr->lend);
curr->total=curr->store+curr->lend;
curr->isdel=0;
curr->next=0;
if(pre!
=0)pre->next=curr;
pre=curr;curr=(book*)malloc(sizeof(book));
printf("输入回车录入下一条记录!
输入其他字符则退出\n");
}while(getch()=='\r');
}
voiddisplay(book*table)
{
book*curr;
if(table==0){printf("没有记录!
按任意键继续");getch();}
else
{
curr=table;
printf("序号书代号书名作者出版时间单价库存数量借出数量总数量\n");
/*681410106101010*/
while(curr!
=0)
{
if(curr->isdel!
=0)
{
curr=curr->next;
continue;
}
printf("%-6ld",curr->ID);
printf("%-8s",curr->code);
printf("%-14s",curr->name);
printf("%-10s",curr->author);
printf("%-10d",curr->pub);
printf("%-6.1lf",curr->price);
printf("%-10d",curr->store);
printf("%-10d",curr->lend);
printf("%-10d\n",curr->total);
curr=curr->next;
}
printf("按任意键返回……");
getch();
}
}
intequ(char*str,book*node)
{
if(node->ID==atol(str))return1;
if(strcmp(node->code,str)==0)return1;
if(strcmp(node->name,str)==0)return1;
if(strcmp(node->author,str)==0)return1;
if(node->pub==atoi(str))return1;
if(node->price==atof(str))return1;
if(node->store==atoi(str))return1;
if(node->lend==atoi(str))return1;
if(node->total==atoi(str))return1;
return0;
}
voidsearch()
{
book*p;
book*pre,*curr;
book*resultTable;
charstr[20];
clrscr();
printf("请输入要查找的条件\n");
scanf("%s",str);
p=head;
resultTable=(book*)malloc(sizeof(book));
pre=0;curr=resultTable;
while(p!
=0)
{
if(!
equ(str,p))
{
p=p->next;
continue;
}
curr->ID=p->ID;
strcpy(curr->code,p->code);
strcpy(curr->name,p->name);
strcpy(curr->author,p->author);
curr->pub=p->pub;
curr->price=p->price;
curr->store=p->store;
curr->lend=p->lend;
curr->total=p->total;
curr->isdel=p->isdel;
curr->next=0;
if(pre!
=0)pre->next=curr;
pre=curr;curr=(book*)malloc(sizeof(book));
p=p->next;
}
free(curr);
if(curr==resultTable)
{
printf("无法找到记录!
\n");
getch();
}
elsedisplay(resultTable);
}
voidupdate()
{
book*p;
charstr[20],key;
clrscr();
printf("请输入要修改的条件\n");
scanf("%s",str);
p=head;
while(p!
=0)
{
if(!
equ(str,p))
{
p=p->next;
continue;
}
clrscr();
printf("搜索到如下记录:
\n");
printf("序号书代号书名作者出版时间单价库存数量借出数量总数量\n");
printf("%-6ld",p->ID);
printf("%-8s",p->code);
printf("%-14s",p->name);
printf("%-10s",p->author);
printf("%-10d",p->p