c语言程序设计——编一个通讯录管理程序:序号 姓名 电话 地址
struct persons
{
char name[16];
char sex[6];
char age[3];
char bir[5];
char phnum[18];
char addr[20];
}persons[100];
/**********************************************************************************/
typedef struct lnode
{
char name[16]; /*姓名*/
char sex[6]; /*性别:以man代表男性,woman代表女性*/
char age[3]; /*年龄*/
char bir[5]; /*生日,其中前两位数字代表月份,后两位数字代表日期*/
char phnum[18]; /*电话*/
char addr[20]; /*地址*/
struct lnode *next;
}listnode,*linklist;
/*********************************************************************************/
linklist head=NULL,r=NULL;
listnode *s,*p0,*p1,*p2,*p3,*p4,*p5,*p6,*p7,*p8,*p9;
int i;
char name1[16],phnum1[18],addr1[20],ch,a,b;
char s1[20];
FILE *fp;
//以上为stuct.h
#include
#include
#include
#include
#include"struct.h"
/************************************************************************/
void creat() /*将文件的信息读入结构体数组,再转存入链表中*/
{
int j;
long k;
fp=fopen("TXL.txt","r+"); /*如果这个文件存在,那么打开这个文件*/
if(fp!=NULL)
{
for(i=1;i<100;i++)
{
j=fgetc(fp);
if(j==EOF)
return;
k=i-1;
fseek(fp,k*sizeof(struct persons),0); /*读取一个人的信息*/
fread(&persons[i],sizeof(struct persons),1,fp);
s=(linklist)malloc(sizeof(listnode)); /*存到链表中*/
strcpy(s->name,persons[i].name);
strcpy(s->sex,persons[i].sex);
strcpy(s->age,persons[i].age);
strcpy(s->bir,persons[i].bir);
strcpy(s->phnum,persons[i].phnum);
strcpy(s->addr,persons[i].addr);
if(head==NULL)
head=s;
else
r->next=s;
r=s;}
}
else
{ fp=fopen("TXL.txt","w+");/*如果这个文件不存在,那么为读写创建一个默认文件TXL.txt*/
i=1;
}
}
/************************************************************************/
void Show()/*显示默认文件里面的所有信息*/
{ p1=head;
if(p1==NULL)
{ printf("
There is nothing in the addr-book!");
printf("
Please insert!");
}/*如果文件为空,则给出提示*/
while(p1!=NULL)
{
printf("
Name:%s ",p1->name);
printf("Sex:%s ",p1->sex);
printf("Age:%s ",p1->age);
printf("Bir:%s ",p1->bir);
printf("Phnum:%s ",p1->phnum);
printf("Addr:%s
",p1->addr);
p1=p1->next;
}
}
/*****************************************************************/
void Delete_1() /*定义按姓名删除的函数*/
{
void menu();
printf("
Please input the name:");
gets(name1); /*输入要删除人的姓名*/
p4=head;
while(strcmp(name1,p4->name)!=0&&p4!=NULL)
p4=p4->next;
if(p4==NULL)
{
printf("
It is not found in the TXL!");
menu();
}/*如果找不到该人,则返回主菜单*/
else
{ printf("The information have been deleted is that:");
printf("
name:%s ",p4->name);
printf("sex:%s ",p4->sex);
printf("age:%s ",p4->age);
printf("bir:%s ",p4->bir);
printf("phnum:%s ",p4->phnum);
printf("addr:%s
",p4->addr);
}
p4=head;
if(strcmp(p4->name,name1)==0)
{
p4=p4->next;
head=p4;
}
else
{
while(strcmp(p4->next->name,name1)!=0)
p4=p4->next;
p5=p4->next;
p4->next=p5->next;
free(p5);
}
}
/*****************************************************************/
void Delete_2() /*定义按电话号码删除的函数*/
{
void menu();
printf("
Please input the phnum:");
gets(phnum1); /*输入要删除的人的电话号码*/
p6=head;
while(strcmp(phnum1,p6->phnum)!=0&&p6!=NULL)
p6=p6->next;
if(p6==NULL)
{
printf("
It is not found in the TXL!");
menu();
}/*如果找不到该电话号码,则返回主菜单*/
else
{ printf("The information have been deleted is that:");
printf("
name:%s ",p6->name);
printf("sex:%s ",p6->sex);
printf("age:%s ",p6->age);
printf("bir:%s ",p6->bir);
printf("phnum:%s ",p6->phnum);
printf("addr:%s
",p6->addr);
}
p6=head;
if(strcmp(p6->phnum,phnum1)==0)
{
p6=p6->next;
head=p6;
}
else
{
while(strcmp(p6->next->phnum,phnum1)!=0)
p6=p6->next;
p7=p6->next;
p6->next=p7->next;
free(p7);
}
}
/******************************************************************/
void Delete()/*在Delete()函数中按需要选择用不同的删除方式*/
{
printf("
Please make a choice below:
");
printf("1.Delete by name.
");
printf("2.Delete by phnum.
");
printf("Please insert your choice:");
a=getche();
switch(a)
{
case '1':Delete_1();
break;
case '2':Delete_2();
break;
default:
printf("
**********************************
");
printf("
The number should 1-2!!!
");
printf("
**********************************");
break;
}
}
/*****************************************************************/
void Search_1() /*按姓名查找的函数定义*/
{
printf("
Please input the name:");
p8=head;
gets(name1); /*输入要查找的人的姓名*/
while(strcmp(name1,p8->name)!=0&&p8!=NULL)
p8=p8->next;
if(p8==NULL)
printf("
It is not found in the TXL!");
else
{
printf("
name:%s ",p8->name);
printf("sex:%s ",p8->sex);
printf("age:%s ",p8->age);
printf("bir:%s ",p8->bir);
printf("phnum:%s ",p8->phnum);
printf("addr:%s
",p8->addr);
}
}
/****************************************************************/
void Search_2()/*按电话号码查找的函数定义*/
{
printf("
Please input the phnum:");
p9=head;
gets(phnum1);/*输入要查找的人的电话号码*/
while(strcmp(phnum1,p9->phnum)!=0&&p9!=NULL)
p9=p9->next;
if(p9==NULL)
printf("
It is not found in the TXL!");
else
{
printf("
name:%s ",p9->name);
printf("sex:%s ",p9->sex);
printf("age:%s ",p9->age);
printf("bir:%s ",p9->bir);
printf("phnum:%s ",p9->phnum);
printf("addr:%s
",p9->addr);
}
}
/***************************************************************/
void Search_3()/*定义按宿舍(地址)查找的函数*/
{
printf("
Please input the addr:");
p0=head;
gets(addr1);/*输入要查到的人的宿舍(地址)*/
while(strcmp(addr1,p0->addr)!=0&&p0!=NULL)
p0=p0->next;
if(p0==NULL)
printf("
It is not found in the TXL!");
else
{
printf("
name:%s ",p0->name);
printf("sex:%s ",p0->sex);
printf("age:%s ",p0->age);
printf("bir:%s ",p0->bir);
printf("phnum:%s ",p0->phnum);
printf("addr:%s
",p0->addr);
}
}
/*************************************************************************/
void Search()/*在Search中按需要调用不同的查找方式*/
{
printf("
Please make a choice below:
");
printf("1.Search by name.
");
printf("2.Search by phnum.
");
printf("3.Search by addr.
");
printf("Please insert your choice:");
b=getche();
switch(b)
{
case '1':Search_1();
break;
case '2':Search_2();
break;
case '3':Search_3();
break;
default:
printf("
**********************************
");
printf("
The number should 1-3!!!
");
printf("
**********************************");
break;
}
}
/************************************************************************/
void Insert() /*向文件插入一组的信息*/
{
s=(linklist)malloc(sizeof(listnode));
printf("
Please insert the someone's information:");
printf("
Name:");
scanf("%s",s->name);
printf("Sex:");
scanf("%s",s->sex);
printf("Age:");
scanf("%s",s->age);
printf("Bir:");
scanf("%s",s->bir);
printf("Phnum:");
scanf("%s",s->phnum);
printf("Addr:");
scanf("%s",s->addr);
if(head==NULL)
head=s;
else
r->next=s;
r=s;
}
/***********************************************************************/
void Save() /*将信息保存在默认文件里面*/
{ int j;
fp=fopen("TXL.txt","w");
for(p2=head,j=0;p2!=NULL;j++,p2=p2->next)
{
strcpy(persons[j].name,p2->name);
strcpy(persons[j].sex,p2->sex);
strcpy(persons[j].age,p2->age);
strcpy(persons[j].bir,p2->bir);
strcpy(persons[j].phnum,p2->phnum);
strcpy(persons[j].addr,p2->addr);
fwrite(&persons[j],sizeof(struct persons),1,fp);
}
}
/************************************************************************/
void menu ()/*显示主菜单*/
{
do
{
printf("
");
printf("
************************************");
printf("
* Please make a choice below: *");
printf("
* 1.Show all the information *");
printf("
* 2.Delete a piece of information *");
printf("
* 3.Search a piece of information *");
printf("
* 4.Insert a piece of information *");
printf("
* 5.Save and Exit *");
printf("
* 6.Exit and Without Save *");
printf("
* Input Your Choice: *");
printf("
************************************");
ch=getche();
switch(ch)
{
case '1': Show();
break;
case '2': Delete();
break;
case '3': Search();
break;
case '4': Insert();
break;
case '5': Save();fclose(fp);exit(0);
case '6':fclose(fp);exit(0);
break;
default:
printf("
**********************************
");
printf("
The number should 1-6!!!
");
printf("
**********************************");
break;
}
}
while(1);
}
/**********************************************************************/
void main()
{
creat();
menu();
}
#include#include#include#include#include #define For for(i=0;i v;int key=1;void xiangmu(){printf("
1、编号2、姓名3、性别4、出生年月 5、学历6、职务7、电话8、住址
");}void insert_node(){cout>p.number>>p.name>>p.sex>>p.breaday>>p.xueli>>p.zhiwu>>p.phonenumber>>p.addreass;v.push_back(p);}void del_node(){cout>temp;for(i=0;i>choice>>s;switch(choice){case 1:{For if(strcmp(v[i].number,s)==0) print(i),count++;}case 2:{For if(strcmp(v[i].name,s)==0) print(i),count++;}case 3:{For if(strcmp(v[i].sex,s)==0) print(i),count++;}case 4:{For if(strcmp(v[i].breaday,s)==0) print(i),count++;}case 5:{For if(strcmp(v[i].xueli,s)==0) print(i),count++;}case 6:{For if(strcmp(v[i].zhiwu,s)==0) print(i),count++;}case 7:{For if(strcmp(v[i].phonenumber,s)==0) print(i),count++;}case 8:{For if(strcmp(v[i].addreass,s)==0) print(i),count++;}}if(count==0)cout>n>>choice>>temp;For if(strcmp(n,v[i].number)==0) {switch(choice){case 1:strcpy(v[i].number,temp);break;case 2:strcpy(v[i].name,temp);break;case 3:strcpy(v[i].sex,temp);break;case 4:strcpy(v[i].breaday,temp);break;case 5:strcpy(v[i].xueli,temp);break;case 6:strcpy(v[i].zhiwu,temp);break;case 7:strcpy(v[i].phonenumber,temp);break;case 8:strcpy(v[i].addreass,temp);break;default :cout0;case 3:return strcmp(a.sex,b.sex)>0;case 4:return strcmp(a.breaday,b.breaday)>0;case 5:return strcmp(a.xueli,b.xueli)>0;case 6:return strcmp(a.zhiwu,b.zhiwu)>0;case 7:return strcmp(a.phonenumber,b.phonenumber)>0;case 8:return strcmp(a.addreass,b.addreass)>0;default :return strcmp(a.number,b.number)>0;}}void sort_node(){xiangmu();cout>key;sort(v.begin(),v.end(),comp);}void alloutprint(){xiangmu();int i;For print(i);}int main(){printf("
****************welcome********************
");int op;do{printf("
1、插入2、查询3、更新4、删除5、排序
6、清屏7、查看全部信息8、退出
");cout>op;switch(op){case 1:insert_node();break;case 2:find_node();break;case 3:updata();break;case 4:del_node();break;case 5:sort_node();break;case 6:system("cls");break;case 7:alloutprint();break;case 8:exit(1);default :cout<<"没有此操作!!!"<<endl;}}while(1);return 0;}我把 我的数据结构课程设计给你了,员工管理系统。差不多。你看着改改就OK了。
#include <string.h>
#include<iostream>
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <conio.h>
using namespace std;
#define LEN sizeof(struct friends)
#define CODE_SIZE 10
struct friends
{
char num[20];//编号
char name[100];//用户姓名
char phone[20];//电话号码
char home[100];//通讯地址
char email[100]; //email
char occupation[100];//工作
char birthday[20];//出生日期
struct friends *next;
};
int password()
{
FILE *fp;
char s1[CODE_SIZE], s2[CODE_SIZE], s3[CODE_SIZE], fun;
while (1)
{
fp = fopen("password.txt", "r");
if (fp == NULL)
{
printf("第一次运行,请输入初始密码(最多8位):\n");
scanf("%s", s1);
printf("请再次输入初始密码:\n");
scanf("%s", s2);
if (strcmp(s1, s2) == 0)
{
fp = fopen("password.txt", "w+");
if (fp == NULL)
{
printf("创建文件失败退出\n");
getch();
exit(1);
}
else
{
//对s1加密
for (int i = 0; i<CODE_SIZE&&s1[i] != ' '; i++)
{
s1[i] = s1[i] + i;
}
fputs(s1, fp);
printf("初始密码创建完成.\n");
}
}
else
{
printf("两次输入的密码不一致!\n");
}
fclose(fp);
}
else
{
fgets(s1, CODE_SIZE, fp);
fclose(fp);
printf("输入密码:\n");
scanf("%s", s2);
//对s1解密
for (int i = 0; i<CODE_SIZE&&s1[i] != ' '; i++)
{
s1[i] = s1[i] - i;
}
loop:
if (strcmp(s1, s2) == 0)
{
printf("-----密码正确-----\n");
printf("-----请选择功能-----\n");
printf("-----1:修改密码-----\n");
printf("-----2:进入通讯录-----\n");
scanf("%d", &fun);
switch (fun)
{
case 1: printf("请输入新密码\n");
scanf("%s", s1);
printf("请再次输入新密码\n");
scanf("%s", s2);
if (strcmp(s1, s2) == 0)
{
fp = fopen("password.txt", "w+");
if (fp == NULL)
{
printf("文件错误!\n");
}
else
{ //对s1加密
for (int i = 0; i<CODE_SIZE&&s1[i] != ' '; i++)
{
s1[i] = s1[i] + i;
}
fputs(s1, fp);
fclose(fp);
printf("密码修改成功\n");
}
}
else
{
printf("两次输入的密码不一致,修改失败\n");
}
break;
case 2: return 1;
default: printf("无效指令\n");
}
}
else
{
printf("密码错误\n请重新输入\n");
scanf("%s", s2);
goto loop;
}
}
printf("------------------\n\n\n\n");
}
}
void face(void)//功能选择面板
{
cout << "********************************************************************" << endl;
cout << "\t\t\t☆★欢迎使用***通讯录☆★" << endl;
cout << "\n\n\t☆★选择你需要操作的功能:★☆" << endl;
cout << "\t\t\t1.增加通讯录信息" << endl;
cout << "\t\t\t2.显示通讯录中所有记录" << endl;
cout << "\t\t\t3.删除需要删除的信息" << endl;
cout << "\t\t\t4.以名字查询所需的信息" << endl;
cout << "\t\t\t5.保存并退出" << endl;
cout << "\t\t\t6.退出不保存!!" << endl;
cout << "********************************************************************" << endl;
}
void print(struct friends *head)
{
struct friends *p;
p = head;
system("CLS");
cout << "*************************************************************" << endl;
cout << "==================== → 用户信息记录表 ← ===================" << endl;
cout << "*************************************************************" << endl;
if (head != NULL)
do
{
cout << "联系人编号:" << p->num << endl;
cout << "联系人姓名:" << p->name << endl;
cout << "联系人电话号码:" << p->phone << endl;
cout << "联系人地址:" << p->home << endl;
cout << "联系人电子邮箱:" << p->email << endl;
cout << "联系人职业" << p->occupation << endl;
cout << "联系人出生日期:" << p->birthday << endl;
cout << "********************************************************" << endl;
p = p->next;
} while (p != NULL);
else
{
cout << "对不起!!没有任何联系人记录!!" << endl;
cout << "=============================================================\n" << endl;
}
}
//增添电子通讯录中的内容,即创建连表过程
struct friends *append(struct friends *head)
{
struct friends *p0 = NULL, *p1, *p2;
p1 = head;
p2 = head;
system("CLS");
cout << "********************************************************************" << endl;
cout << "\t\t你能在此目录下创建并添加联系人信息" << endl;
cout << "********************************************************************" << endl;
p0 = (struct friends *)malloc(LEN);
cout << "请输入联系人编号:" << endl;
gets(p0->num);
cout << "请输入联系人姓名:" << endl;
gets(p0->name);
cout << "请输入联系人电话号码:" << endl;
gets(p0->phone);
cout << "请输入联系人地址:" << endl;
gets(p0->home);
cout << "请输入联系人Email:" << endl;
gets(p0->email);
cout << "请输入联系人职位:" << endl;
gets(p0->occupation);
cout << "请输入联系人出生日期:" << endl;
gets(p0->birthday);
//对插入的节点排序,按姓名的拼音顺序
if (head == NULL)
{
head = p0; p0->next = NULL;
}
else
{
while ((strcmp(p0->name, p1->name)>0) && (p1->next != NULL))
{
p2 = p1; p1 = p1->next;
}
if ((strcmp(p0->name, p1->name)) <= 0)
{
if (head == p1)
head = p0;
else
p2->next = p0;
p0->next = p1;
}
else
{
p1->next = p0; p0->next = NULL;
}
cout << "恭喜你!!成功添加了联系人信息!!" << endl;
cout << "********************************************************************" << endl;
}
return(head);
}
//电子通讯录的维护(删除),通过输入联系人ID号码删除联系人数据
struct friends *del(struct friends *head)
{
struct friends *p1, *p2;
char num[12];
system("CLS");
cout << "********************************************************************" << endl;
cout << "================= → 用户信息记录删除功能 ← ===============" << endl;
cout << "********************************************************************" << endl;
printf("输入要删除的联系人编号:");
gets(num);
p1 = head;
if (head == NULL)
{
cout << "很抱歉!!没有任何联系人纪录!!" << endl;
cout << "*******************************************************" << endl;
return(head);
}
while (p1 != NULL)
{
if (strcmp(p1->num, num) == 0)
{
if (p1 == head)
head = p1->next;
else p2->next = p1->next;
free(p1);
cout << "删除记录成功!!" << endl;
return(head);
}
p2 = p1;
p1 = p1->next;
}
cout << "对不起!!没有要删除的联系人纪录!!\n" << endl;
return(head);
}
//电子通讯录的查找,关键字为用户姓名;
void search(struct friends *head)
{
struct friends *p1, *p2;
char name[20];
p1 = head;
p2 = p1;
system("CLS");
cout << "***************************************************************" << endl;
cout << "================ → 用户信息记录查询功能 ← ==================\n" << endl;
cout << "***************************************************************" << endl;
cout << "输入要查找联系人的姓名:" << endl;
gets(name);
while (p1 != NULL)
{
if (strcmp(p1->name, name) == 0)
{
cout << "联系人编号:" << endl;
puts(p1->num);
cout << "联系人姓名:" << endl;
puts(p1->name);
cout << "联系人电话号码:" << endl;
puts(p1->phone);
cout << "联系人地址:" << endl;
puts(p1->home);
cout << "联系人电子邮箱:" << p1->email << endl;
puts(p1->email);
cout << "联系人职业" << p1->occupation << endl;
puts(p1 ->occupation);
cout << "联系人出生日期:" << endl;
puts(p1->birthday);
cout << "=============================================================" << endl;
break;
}
p2 = p1;
p1 = p1->next;
}
if (p1 == NULL)
cout << "对不起!!没有该联系人的纪录!!" << endl;
}
void save(struct friends *head)
{
FILE *fp, *fp1;
struct friends *p;
p = head;
fp = fopen("record.txt", "w");
fp1 = fopen("record.txt", "w");
fprintf(fp1, "=============== → 用户信息记录表 ← =================\n");
while (p != NULL)
{
fprintf(fp1, "====================================================\n");
fprintf(fp1, "联系人编号:%s\n", p->num);
fprintf(fp1, "联系人姓名:%s\n", p->name);
fprintf(fp1, "联系人电话:%s\n", p->phone);
fprintf(fp1, "联系人家庭地址:%s\n", p->home);
fprintf(fp1, "联系人电子邮箱:%s\n", p->email);
fprintf(fp1, "联系人职业:%s\n", p->occupation);
fprintf(fp1, "联系人出生日期:%s\n", p->birthday);
p = p->next;
}
fprintf(fp1, "*************************************************************\n");
fclose(fp1);
fclose(fp);
cout << "成功储存,你能在record.txt找到相应纪录" << endl;
cout << "**************************************************************" << endl;
cout << "PRESS ANY KEY TO EXIT." << endl;
getchar();
exit(1);
}
//电子通讯录的记录读盘操作,使用文件指针;
struct friends *load(void)
{
FILE *fp;
struct friends *head = NULL, *p1 = NULL, *p2 = NULL;
char c;
int i;
fp = fopen("record.txt", "r");
for (i = 1; (c = fgetc(fp)) != -1; i++)
{
p1 = (struct friends *)malloc(LEN);
//fscanf(fp,"%s %s %s %s %s %s",p1->num,p1->name,p1->phone,p1->email,p1->home,p1->birthday);
if (i == 1)
{
head = p1; p2 = p1;
}
else
{
p2->next = p1; p2 = p1;
}
}
if (p1 == NULL)
{
fclose(fp); return(head);
}
p2->next = NULL;
fclose(fp);
return(head);
}
int main()
{
FILE *fp1, *fp2;
int a;//功能选择需要的号码
system("cls");
system("cls");
struct friends *head = NULL;
if ((fp1 = fopen("record.txt", "r")) == NULL)
{
fp2 = fopen("record.txt", "w");//如果不存在record.txt就创建一个
fclose(fp2);
}
head = load();
password();
system("cls");
while (1)
{
face();
printf("选择你需要操作的功能号码:");
cin >> a;
getchar();
switch (a)
{
case 1:head = append(head); break;
case 2:print(head); break;
case 3:head = del(head); break;
case 4:search(head); break;
case 5:save(head); break;
case 6:exit(0); break;
default:cout << "Enter error!!" << endl;
}
cout << "◇◆请按ENTER返回功能操作菜单◇◆" << endl;
getchar();
system("cls");
}
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define SIZE 30
struct inform
{
char num[20];
char name[20];
char adrr[30];
}student[SIZE];
void inter_face()
{
printf (" <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<信息管理系统1.0.0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n\n\n");
printf (" 1---------------------显示所有数据\n");
printf (" 2---------------------添加一个新的信息\n");
printf (" 3---------------------删除一个旧的信息\n");
printf (" 4---------------------查找\n");
printf (" 0---------------------退出系统\n");
printf (" 请输入选项并确定:");
}
void put_in() //向文件中读入数据一次
{ FILE *fp;
int c;
if ((fp=fopen("e:\\123.txt","a"))==NULL)
printf ("open file error!!");
printf ("学号:\n");
c=getchar();
while (c!='\n')
{
fputc(c,fp);
c=getchar();
}fputc(' ',fp);
printf("姓名:\n");
c=getchar();
while (c!='\n')
{
fputc(c,fp);
c=getchar();
}
fputc('\n',fp);
fclose(fp);
}
int load(inform student[]) //加载存储文件数据
{FILE *fp;
int t=0,i;
if ((fp=fopen("e:\\123.txt","r"))==NULL)
printf ("打开文件失败!");
while(!feof(fp))
{
for (i=0;i<20;i++)
{
student[t].num[i]=fgetc(fp);
if (student[t].num[i]==' ')
{
break;
}
}
for (i=0;i<20;i++)
{
student[t].name[i]=fgetc(fp);
if (student[t].name[i]=='\n')
{
break;
}
}
t++;
}
fclose(fp);
return t;
}
void display(int t1) //显示存储文件中所有数据
{int i,j;
for (j=0;j<t1-1;j++)
{printf("学号:");
for (i=0;i<20;i++)
printf ("%c",student[j].num[i]);
printf("\n");
printf ("姓名:");
for (i=0;i<20;i++)
printf ("%c",student[j].name[i]);
printf ("\r------------------\n");
}
printf("-------------------------------->数据总数:%d\n",t1-1);
}
void search(int t) //搜索指定号码并显示搜索结果
{int i,j,l=0,k[SIZE]={0},h[SIZE]={0},max,hx=0,hy=-1;
char a[20],c;
printf ("\n\n\n 1------------按学号查找\n");
printf (" \n 2------------按姓名查找\n");
printf ("选择《1》或《2》:");
c=getchar();
getchar();
if(c=='1')
{
printf ("\n\n请输入要搜索的学号:");
for (i=0;i<20;i++)
{
if ((a[i]=getchar())=='\n')
break;
else l++;
}
for (i=0;i<t-1;i++)
for (j=0;j<=l;j++)
if(a[j]==student[i].num[j])
k[i]++;
max=k[0];
for (i=0;i<t-1;i++)
{
if (k[i]>max)
{
max=k[i];
}
}
for (i=0;i<t-1;i++)
{
if (k[i]==max)
h[hx++]=i;
}
if (max!=0)
{
printf ("系统共搜索%d个结果:\n",hx);
for (j=0;j<hx;j++)
{
printf ("姓名:");
for(i=0;i<20;i++)
printf ("%c",student[h[j]].name[i]);
printf ("\n学号:");
for (i=0;i<20;i++)
printf ("%c",student[h[j]].num[i]);
printf ("\n\n");
}
}
else printf ("共搜索到%d个结果!\n",max);
}
else if (c=='2')
{
printf ("请输入要查询的姓名:");
for (i=0;i<20;i++)
{
if ((a[i]=getchar())=='\n')
break;
else l++;
}
for (i=0;i<t-1;i++)
{
for (j=0;j<l;j++)
if (a[j]!=student[i].name[j])
{ hx++;
}
if (hx==0)
{
hy=i;
break;
}
hx=0;
}
if (hy>0)
{
printf ("\n\r搜索到的结果:\n");
printf ("姓名:");
for(i=0;i<20;i++)
printf ("%c",student[hy].name[i]);
printf ("\n学号:");
for (i=0;i<20;i++)
printf ("%c",student[hy].num[i]);
printf ("\n\n");
}
else printf ("搜索到0个结果!\n");
}
else
{
printf ("---------->不正确的选项!\n");
}
}
int delet_n(int t)//删除一组数据
{
int i,j,k=0,m=0,x;
char c;
FILE *fp;
char n[20];
if ((fp=fopen("e:\\123.txt","w"))==NULL)
printf ("创建文件失败!!\n");
printf ("\n1<----------------按学号删除\n");
printf ("2<--------------------------------按名称删除\n");
printf ("请选择:");
c=getchar();
getchar();
if (c=='1')
{
printf ("输入要删除的学号:");
for (i=0;i<20;i++) //输入要删除的学号
if ((n[i]=getchar())=='\n')
break;
else k++;
for (i=0;i<t-1;i++)//选出内存中的数据编码
{
for (j=0;j<=k;j++)
if (n[j]==student[i].num[j])
m++;
if (m==k)
{ x=i;
break;
}
m=0;
}
}
else if (c=='2')
{
printf ("请输入名称:");
for (i=0;i<20;i++) //输入要删除的姓名
if ((n[i]=getchar())=='\n')
break;
else k++;
for (i=0;i<t-1;i++) //选出内存中的数据编码
{
for (j=0;j<k;j++)
if (n[j]==student[i].name[j])
m++;
if (m==k)
{ x=i;
break;
}
m=0;
}
}
//向文件输出更改后的数据
if(i<t-1)
{
for (i=0;i<t-1;i++)
{
if (i!=x)
{j=0;
while(student[i].num[j]!=' ')
fputc(student[i].num[j++],fp);
fputc(' ',fp);
j=0;
while(student[i].name[j]!='\n')
fputc(student[i].name[j++],fp);
fputc('\n',fp);
}
}
printf ("删除成功!\n");
}
else {
printf ("删除失败!\n");//删除失败恢复原有数据
for (i=0;i<t-1;i++)
{
j=0;
while(student[i].num[j]!=' ')
fputc(student[i].num[j++],fp);
fputc(' ',fp);
j=0;
while(student[i].name[j]!='\n')
fputc(student[i].name[j++],fp);
fputc('\n',fp);
}
}
fclose(fp);
return 0;
}
void encrypt() //信息加密
{
}
int main() //主函数
{
int t1,t;
char choice;
inter_face();
choice=getchar();
while (1)
{getchar();
system("cls");
system("cls");
switch(choice)
{
case '2':put_in();break;
case '3': t1=load(student);delet_n(t1); break;
case '1': t1=load(student);display(t1);break;
case '4':t1=load(student);search(t1);break;
case '0': t=1;break;
default: break;
}
inter_face();
if (t==1)
break;
choice=getchar();
}
return 0;
}
这是以前做的.用VC++写的;你自己看一下吧 该一点就可以完全实现你搜要的功能了;
不要忘记给分啊
简单通讯录管理程序,代码如下:#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct student *ST;
struct student
{
char stN[20];
char stVal[128];
char stNo[10];
char stTel[12];
ST next;
};
ST head = NULL;
int ShowNode()
{
char no[20] = {0};
ST t;
printf("输入姓名:");
scanf("%s", no);
for (t = head; t; t = t->next)
{
if (!memcmp(t->stN, no, strlen(no)))
{
printf("姓名:%s, 地址:%s 邮编:%s 电话:%s\n", t->stN, t->stVal, t->stNo, t->stTel);
return 0;
}
}
printf("无此人信息\n");
return 0;
}
int ChangeNode()
{
char no[20];
ST t;
printf("输入姓名:");
scanf("%s", no);
for (t = head; t; t = t->next)
{
if (!memcmp(t->stN, no, strlen(no)))
{
printf("输入新的记录:\n");
printf("地址:");
scanf("%s", t->stVal);
printf("邮编:");
scanf("%s", t->stNo);
printf("英语成绩:");
scanf("%s", t->stTel);
return 0;
}
}
printf("无此人信息\n");
return 0;
}
int InsertNode()
{
ST t;
t = (ST)malloc(sizeof *t);
printf("输入姓名:");
scanf("%s", t->stN);
printf("输入地址:");
scanf("%s", t->stVal);
printf("输入邮编:");
scanf("%s", t->stNo);
printf("输入电话:");
scanf("%s", t->stTel);
t->next = head;
head = t;
return 0;
}
int DelNode()
{
ST x, y;
char no[20] = {0};
printf("输入姓名:");
scanf("%s", no);
for (x = y = head; x; y = x, x = x->next)
{
if (!memcmp(x->stN, no, strlen(no)))
{
if (x ==y)
{
x = head = head->next;
y->next = NULL;
free(y);
return 0;
}
else
{
y->next = x->next;
x->next = NULL;
free(x);
return 0;
}
}
}
printf("无此学生\n");
return 0;
}
int main(void)
{
int i;
while(1)
{
printf("查询记录:1\n"
"更改记录:2\n"
"插入记录:3\n"
"删除记录:4\n"
"退出:5\n");
scanf("%d", &i);
if (1==i)
{
ShowNode();
}
else if(2==i)
{
ChangeNode();
}
else if(3==i)
{
InsertNode();
}
else if(4==i)
{
DelNode();
}
else if(5==i)
{
break;
}
else
{
printf("输入错误!请重新输入!\n");
continue;
}
}
return 0;
}
你可以自己看哈 C++
代码有点长,最好留个邮箱号
C语言程序设计题4则
\/**测试功能函数:1.有一分数序列2\/1,3\/2,5\/3,8\/5,13\/8,21\/13……编写程序求出这个数列的前20项之和。2.编写一个程序,对于一个大于或等于3的正整数,判断他是不是一个素数。3.编写程序,实现对于输入的一行字符,统计其中字母,数字字符,其他字符的个数。4.编写程序,C=1+1\/X^1+1...
c语言结构化程序设计的三种基本结构
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可...
计算机二级C语言程序设计考啥内容
全国计算机二级C语言程序设计包括40个单选题(每题一分)和三道操作题(60分)。单选题中1~10题为二级公共基础知识,单选题的11~40题是C语言的内容。操作题包括程序填空(18分)、程序改错(18分)和编程题(24分)各一题。程序填空是将一个完整的程序,扣掉两到三处,让考生将它填写完整。由于每位考生...
c语言程序设计题:请用自定义函数的形式编程实现,求s=m!+n!+k! m n...
代码:include <stdio.h> 请用自定义函数的形式编程实现 求 s = m! + n! + k!,m、n、k 从键盘输入(值均小 于 7)。int fun(int m);int main(){ int m,n,k;int s;printf("请输入三个小于7的数:");scanf("%d %d %d",&m,&n,&k);s=fun(m)+fun(n)+fun(k);printf("...
C语言程序设计——课程设计——通讯录管理系统
C语言程序设计课程设计任务书一、设计题目、内容及要求题目:通讯录程序设计设计一个实用的小型通讯录程序,具有查询和删除功能,并且能够打开或修改指定文件及将多个文件组成一个文件... C语言程序设计 课程设计任务书一、设计题目、内容及要求题目:通讯录程序设计设计一个实用的小型通讯录程序,具有查询和删除功能,并且能...
C语言程序设计,
include "stdio.h"void main(){ int func(int a,int *p);\/\/函数声明应放在主函数中 int a=1,b=2,c=0;c=func(a,&b);b=func(c,&a);a=func(b,&c);printf("a=%d,b=%d,c=%d",a,b,c);\/\/书写格式我已改过,应空一格退格键 } int func(int a,int *p)\/\/函数名要一致 { ...
简述计算机程序设计语言(机器语言、汇编语言、高级语言)的优缺点_百 ...
机器语言:1.优点: 计算机能够直接识别,不用转换。缺点:编程很很复杂,一个字,难。相当于你要用(01)两个数字完成所有的程序编译。汇编语言:优点:编程比机器语言简单的多,但要转换后计算机才能识别。学习起来也不是很难。高级语言:优点:编程简单(比汇编还要简单,灵活),但要转换后计算机才能...
开发一个c语言程序要经过哪四个步骤
开发一个C语言程序需要经过的四个步骤:编辑、编译、连接、运行。C语言程序可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的C语言编译器和库,然后将C源代码编译、连接成目标二进制文件之后即可运行。1、预处理:输入源程序并保存(.C文件)。2、编译:将源程序翻译为目标文件(.OBJ文件)。...
请问汇编程序, 解释程序, 编译程序分别指?
1、汇编程序 把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。汇编语言是为特定计算机或计算机系列设计的一种面向机器的语言,由汇编执行指令和汇编伪指令组成。采用汇编语言编写程序虽不如高级程序设计语言简便、直观...
简述计算机程序设计语言的发展历程。
在过去的几十年间,大量的程序设计语言被发明、被取代、被修改或组合在一起。尽管人们多次试图创造一种通用的程序设计语言,却没有一次尝试是成功的。之所以有那么多种不同的编程语言存在的原因是,编写程序的初衷其实也各不相同;新手与老手之间技术的差距非常大,而有许多语言并对新手来说太难学;还有...
屠俭麻杏: #include <stdio.h> #include <stdlib.h> #include <string.h> struct worker { char name[30]; //name职工姓名 char ID[10]; //ID职工编号 char sex[3]; int birth; int tel; char educ[10]; char addr[30]; char zhicheng[10]; int year; }; int dq(struct worker wo[]); void ...
新县13254398591: 用C语言. 编写一个“通讯录管理系统”程序 - ?
屠俭麻杏: #include#include#include#define M 500struct Man //定义结构体{ char Name[8]; //名...
新县13254398591: 用C语言编写一个通讯录管理系统. - ?
屠俭麻杏: 一个通信录管理程序有以下功能: . 插入新的通信记录; . 查找某人的通信记录; . 删除某人的通信记录; . 浏览通信录; . 结束程序运行. 设每条通信录包含以下内容: .姓名 .地址 .邮政编码 .电话号码 并设通信录全部以字符行形式存于文件中,...
新县13254398591: 用C语言编程写一个通讯录管理系统?
屠俭麻杏: #include<conio.h> #include<stdio.h> #include<string.h> #include<stdlib.h> #define Node struct node Node /*结构体类型定义,包括:姓、名和电话号码*/ { char szName[20]; char szPhoneNum[12]; Node *next; }; Node *strpHead; /*全程变量,链...
新县13254398591: c语言编程通讯录管理系统 - ?
屠俭麻杏: #include#include#include#include#define header1 "|---------------------电话簿-----------------------|\n"#define header2 "| num | name | phonenum | address |\n"#define header3 "|-------|----------|---------------|---------------|\n"#define end "|---------------------...
新县13254398591: 求用C语言编写一个 通讯录管理系统 .设计要求如下 - ?
屠俭麻杏: /* HELLO.C -- Hello, world */#include<stdio.h> struct person { char name[8]; char tel[15]; char addr[50]; }; char filename[20]="E:\\txl.txt"; FILE *fp; void creat(); void output(); void search(); void append(); void modify(); void delete(); main( ) { int m; ...
新县13254398591: 麻烦高手帮我编个C语言程序,通讯录管理程序,?
屠俭麻杏: #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct student *ST; struct student { char stN[20]; char stVal[128]; char stNo[10]; char stTel[12]; ST next; }; ST head = NULL; int ShowNode() { char no[20] = {0}; ST t; printf...
新县13254398591: 求一个通讯录管理系统 C语言编写的 - ?
屠俭麻杏: 原发布者:94Freestyle/*通讯录管理系统源代码*/#include#include#include structtongxunlu{/*结构定义*/ charname[10]; charaddress[30]; charbirthday[10]; charphonenumber[15]; charmail[20]; charrelation[8];; voidadd(structtongxunlurecode[]);/*函数...
新县13254398591: 求一个通讯录管理系统 C语言编写的 - ?
屠俭麻杏: #include#include#include#include#include #include void pause();typedef struct ST...
新县13254398591: 用C语言写通讯录管理:能实现通讯录的添加、删除、查找(实现顺序查找、二分查找两种查找)、排序等功能. - ?
屠俭麻杏: #include "stdio.h" #include "conio.h" #include "stdlib.h" #include "string.h" #include "assert.h"/**********************************全局数据********************************/ #define MAX 100 // 最大记录数 // 数据结构 struct person { char no[12]...