
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct
{
char score /*编号*/
char name[10] /*姓名*/
char num[15]/*号码*/
char email[20] /*邮箱*/
char age[8] /*年龄*/
char adds[20] /*住址*/
}Person
Person pe[80]
//登陆函数
logon()
{printf("\n\n\n\t\t\t 通讯录首帆管理系统\n\n")
printf("\t\t\t 版本号:1.0\n\n")
printf("\n\n\n\n\n\t\t\t2011年4月29日\n\n")
printf("\t\t\t 程序设计第三组\n")
system("pause")
}
int menu_select()
{ char c
logon()
do{
system("cls")
printf("\t\t *****通讯录***** \n")
printf("\t\t┌───────┐\n")
printf("\t\t│ 1. 添加记录 │\n")
printf("\t\t│ 2. 显示记录 │\n")
printf("\t\t│ 3. 删除记录 │\n")
printf("\t\t│ 4. 查询记录 │\n")
printf("\t\t│ 5. 修改记录 │\n")
printf("\t\t│ 6. 保存记录 │\n")
printf("\t\t│ 0. 退出程序 │\n")
printf("\t\t└───────┘\n")
printf("\t\者尘雹t请您选择(0-6):")
c=getchar()
}while(c<'0'||c>'6')
return(c-'0')
}
int Input(Person per[],int n)
{
int i=0
char sign,x[10]
while(sign!='n'&&sign!='N')
{
printf("\t编号:")
scanf("\t%d",&per[n+i].score)
printf("\t姓名:")
scanf("\t%s",per[n+i].name)
printf("\t年龄:")
scanf("\兄运t%s",per[n+i].age)
printf("\t电话号码:")
scanf("\t%s",per[n+i].num)
printf("\t通讯住址:")
scanf("\t%s",per[n+i].adds)
printf("\t电子邮箱:")
scanf("\t%s",per[n+i].email)
gets(x)
printf("\n\t是否继续添加?(Y/N)")
scanf("\t%c",&sign)
i++
}
return(n+i)
}
void Display(Person per[],int n)
{
int i
printf("----------------------------------------------------------------------\n") /*格式*/
printf("编号 姓名 年龄电话号码 通讯地址电子邮箱\n")
printf("----------------------------------------------------------------------\n")
for(i=1i<n+1i++)
{
printf("%-5d%-8s%-6s%-13s%-15s%-15s\n",per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].num,per[i-1].adds,per[i-1].email)
if(i>1&&i%10==0)
{
printf("\t-----------------------------------\n")
printf("\t")
system("pause")
printf("\t-----------------------------------\n")
}
}
printf("----------------------------------------------------------------------\n")
system("pause")
}
int Delete_a_record(Person per[],int n)
{
char s[20]
int i=0,j
printf("\t请输入想删除记录中的名字:")
scanf("%s",s)
while(strcmp(per[i].name,s)!=0&&i<n) i++
if(i==n)
{
printf("\t通讯录中没有此人!\n")
return(n)
}
for(j=ij<n-1j++)
{
strcpy(per[j].num,per[j+1].num)
strcpy(per[j].name,per[j+1].name)
strcpy(per[j].age,per[j+1].age)
strcpy(per[j].adds,per[j+1].adds)
strcpy(per[j].email,per[j+1].email)
per[j].score=per[j+1].score
}
printf("\t\t\t已经成功删除!\n")
return(n-1)
}
void Query_a_record(Person per[],int n)
{
int m
printf("\t\n请选择查询方式:\n")
printf("\t┌──────┐\n")
printf("\t│1------姓名 │\n")
printf("\t│2------电话 │\n")
printf("\t│3------地址 │\n")
printf("\t│4------返回 │\n")
printf("\t└──────┘\n")
printf("请选择:")
scanf("%d",&m)
while(m!=1&&m!=2&&m!=3&&m!=4)
{
printf("输入错误,请重新选择:")
scanf("%d",&m)
}
if(m==1)
{
char s[20]
int i=0
printf("\t请输入想查询的姓名:")
scanf("\t%s",s)
while(strcmp(per[i].name,s)!=0&&i<n) i++
if(i==n)
{
printf("\t通讯录中没有此人!\n")
return
}
printf("\t此人编号: %d\n",per[i].score)
printf("\t此人年龄: %s\n",per[i].age)
printf("\t电话号码: %s\n",per[i].num)
printf("\t通讯地址: %s\n",per[i].adds)
printf("\t电子邮箱: %s\n",per[i].email)
}
if(m==2)
{
char s[20]
int i=0
printf("\t请输入想查询的电话:")
scanf("\t%s",s)
while(strcmp(per[i].num,s)!=0&&i<n) i++
if(i==n)
{
printf("\t通讯录中没有此人!\n")
return
}
printf("\t此人编号: %d\n",per[i].score)
printf("\t此人姓名: %s\n",per[i].name)
printf("\t此人年龄: %s\n",per[i].age)
printf("\t通讯地址: %s\n",per[i].adds)
printf("\t电子邮箱: %s\n",per[i].email)
}
if(m==3)
{
char s[20]
int i=0
printf("\t请输入想查询的地址:")
scanf("\t%s",s)
while(strcmp(per[i].adds,s)!=0&&i<n) i++
if(i==n)
{
printf("\t通讯录中没有此人!\n")
return
}
printf("\t此人编号: %d\n",per[i].score)
printf("\t此人姓名: %s\n",per[i].name)
printf("\t此人年龄: %s\n",per[i].age)
printf("\t电话号码: %s\n",per[i].num)
printf("\t电子邮箱: %s\n",per[i].email)
}
}
void Change(Person per[],int n)
{
char s[20]
int i=0
printf("\t请输入想修改的记录中的名字:")
scanf("%s",s)
while(strcmp(per[i].name,s)!=0&&i<n) i++
if(i==n)
{
printf("\t通讯录中没有此人!\n")
return
}
printf("\t编号:")
scanf("\t%d",&per[i].score)
printf("\t姓名:")
scanf("\t%s",per[i].name)
printf("\t年龄:")
scanf("\t%s",per[i].age)
printf("\t电话号码:")
scanf("\t%s",per[i].num)
printf("\t通讯住址:")
scanf("\t%s",per[i].adds)
printf("\t电子邮箱:")
scanf("\t%s",per[i].email)
printf("\t修改成功!")
}
void WritetoText(Person per[],int n)
{
int i=0
FILE *fp /*定义文件指针*/
char filename[20] /*定义文件名*/
printf("\t保存到文件\n") /*输入文件名*/
printf("\t请输入所保存的文件名:")
scanf("\t%s",filename)
if((fp=fopen(filename,"w"))==NULL)
{
printf("\t无法打开文件\n")
system("pause")
return
}
fprintf(fp,"******************************************通讯录******************************************\n")
fprintf(fp,"编号 姓名 年龄 电话号码 通讯地址 电子邮箱\n")
fprintf(fp,"------------------------------------------------------------------------------------------\n")
while(i<n)
{
fprintf(fp,"%-3d\t%-6s\t%-3s\t%-13s\t%-20s\t%-20s\n",per[i].score,per[i].name,per[i].age,per[i].num,per[i].adds,per[i].email)
i++
}
fprintf(fp,"------------------------------------------------------------------------------------------\n")
fprintf(fp,"***************************************共有%d条记录****************************************\n",n)
fclose(fp)/*关闭文件*/
printf("保存成功!\n")
}
void main()
{
int n=0
for()
{
switch(menu_select())
{
case 1:
printf("\n\t添加记录到通讯录\n") n=Input(pe,n)
break
case 2:
printf("\n\t\t\t通讯录记录表\n")
Display(pe,n)
break
case 3:
printf("\n\t从通讯录中删除记录\n")
n=Delete_a_record(pe,n)
printf("\t")
system("pause")
break
case 4:
printf("\n\t在通讯录中查找记录\n")
Query_a_record(pe,n)
printf("\t")
system("pause")
break
case 5:
printf("\n\t修改通讯录中的记录\n")
Change(pe,n)
printf("\t")
system("pause")
break
case 6:
printf("\n\t保存功能\n")
WritetoText(pe,n)
printf("\t")
system("pause")
break
case 0:
printf("\n\t\t谢谢使用,再见!\n")
printf("\n\t\t")
system("pause")
exit(0)
}
}
}
这道题的难度不亚于一个C语言的课程设计哈,在这提问不太合适。就提誉槐供给你思路吧。
职工信息可以存入一个结构体数组中,此结构体元素包含有货物编号(unsigned int cargo_number);货物名称(char cargo_name[10]);货物价格(unsigned int cargo_price);货物数量(unsigned int cargo_price)。。。其他元素,题主根据要求添加元素。
然后,构建函数用来添加货物名称:void add_cargo_info(...)(形参元素为结构体数组名),瞎虚消即手动添加货物信磨知息,完事后记得要将信息写入磁盘文件中;
然后,构建函数显示信息,这个简单,void display_cargo_info(...)(形参为结构体数组名),用一个while循环输出即可;
然后,查询函数,void cargo_info_search(...)(形参可为多种,名字,编号。。。),同样用while循环搞定;
然后,修改信息,void cargo_info_update(...)(形参同为结构体数组),调用查找函数,找到要修改的货物,然后在此信息中修改即可;
然后,删除信息,void cargo_info_delete(...)(形参同为结构体数组),也是首先找到要删除的信息,然后要调用保存函数。
这个就是我的思路,题主可以参考,希望解决了题主的问题。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)