C语言编写程序:同学通信录管理系统

C语言编写程序:同学通信录管理系统,第1张

望采纳

#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(...)(形参同为结构体数组),也是首先找到要删除的信息,然后要调用保存函数。

这个就是我的思路,题主可以参考,希望解决了题主的问题。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12339116.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存