手机通讯录源代码
- 格式:doc
- 大小:58.00 KB
- 文档页数:6
#include<stdio.h>#include<string.h> //字符串处理//#include<conio.h>#define MY1 printf("\n姓名地址邮政编码电话\t")#define MY2 printf("\n%s %4s %s %s\n",s[i].name,s[i].address,s[i].code,s[i] .tel)#define MAX 20int i;int sum;/*时间结构体类型*/struct s_message{char name[20];char address[50];char code[15];char tel[15];}s[MAX];/*保存通讯录信息*/void save_message(int sum){int i;FILE *fp; //声明fp是指针,用来指向FILE类型的对象//if((fp=fopen("D:\\s.txt","wb"))==NULL){printf("文件有误!\n");return;}for (i=0;i<sum;i++){if(fwrite(&s[i],sizeof(struct s_message),1,fp)!=1) //fwite写一个数据块//printf("writing file is wrong!\n");}fclose(fp);}/*读取通讯录信息*/int read_message(){FILE *fp;int i=0;if((fp=fopen("D:\\s.txt","rb"))==NULL){printf("\n\n***********暂时无任何库存信息,按回车键进入主菜单选择基本信息的录入!***********\n");return 0;}while(feof(fp)==0) /*feof(fp)有两个返回值:如果遇到文件结束,函数feof(fp)的值为1,否则为0。
设计开发源代码1.AddContactsActivity类package .demo.pr3;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.EditText;import android.widget.Toast;import .demo.pr3.datax.ContactsTable;import er;/*增加记录操作界面*/public class AddContactsActivity extends Activity { private EditText nameEditText; //输入框private EditText mobileEditText; //手机输入框private EditText qqEditText; //qqprivate EditText danweiEditText; //单位private EditText addressEditText; //地址Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.edit);setTitle("添加联系人");//从已设置的页面布局查找对应的控件nameEditText=(EditText)findViewById();mobileEditText=(EditText)findViewById(R.id.mobile); danweiEditText=(EditText)findViewById(R.id.danwei); qqEditText=(EditText)findViewById(R.id.qq);addressEditText=(EditText)findViewById(R.id.address); }/*创建菜单 */public boolean onCreateOptionsMenu(Menu menu) {menu.add(Menu.NONE,1, Menu.NONE, "保存");menu.add(Menu.NONE,2, Menu.NONE, "返回");return super.onCreateOptionsMenu(menu);}/* 菜单事件*/public boolean onOptionsItemSelected(MenuItem item){ // TODO Auto-generated method stubswitch (item.getItemId()) {case 1://保存if(!nameEditText.getText().toString().equals("")){User user=new User();user.setName(nameEditText.getText().toString());user.setMoblie(mobileEditText.getText().toString());user.setDanwei(danweiEditText.getText().toString());user.setQq(qqEditText.getText().toString());user.setAddress(addressEditText.getText().toString());ContactsTable ct=new ContactsTable(AddContactsActivity.this);if(ct.addData(user)){Toast.makeText(AddContactsActivity.this, "添加成功!",Toast.LENGTH_SHORT).show();finish();}else{Toast.makeText(AddContactsActivity.this, "添加失败!",Toast.LENGTH_SHORT).show();}}else{Toast.makeText(AddContactsActivity.this, "请先输入数据!",Toast.LENGTH_SHORT).show();}break;case 2://返回finish();break;default:break;}return super.onOptionsItemSelected(item);}}2. ContactsMessageActivity类package .demo.pr3;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.TextView;import .demo.pr3.datax.ContactsTable;import er;/*显示联系人界面 */public class ContactsMessageActivity extends Activity { private TextView nameTextView; //输入框private TextView mobileTextView; //手机输入框private TextView qqTextView; //qqprivate TextView danweiTextView; //单位private TextView addressTextView; //地址private User user; //修改的联系人Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.message);setTitle("联系人信息");//从已设置的页面布局查找对应的控件nameTextView=(TextView)findViewById();mobileTextView=(TextView)findViewById(R.id.mobile); danweiTextView=(TextView)findViewById(R.id.danwei); qqTextView=(TextView)findViewById(R.id.qq);addressTextView=(TextView)findViewById(R.id.address);//将要修改的联系人数据付值到用户界面显示Bundle localBundle = getIntent().getExtras();int id=localBundle.getInt("user_ID");ContactsTable ct=new ContactsTable(this);user =ct.getUserByID(id);nameTextView.setText(":"+user.getName());mobileTextView.setText(":"+user.getMoblie());qqTextView.setText("QQ:"+user.getQq());danweiTextView.setText("单位:"+user.getDanwei());addressTextView.setText("地址:"+user.getAddress());}/*创建菜单*/public boolean onCreateOptionsMenu(Menu menu) {menu.add(Menu.NONE, 1, Menu.NONE, "返回");return super.onCreateOptionsMenu(menu);}/* 菜单事件 */public boolean onOptionsItemSelected(MenuItem item){// TODO Auto-generated method stubswitch (item.getItemId()) {case 1://返回finish();break;default:break;}return super.onOptionsItemSelected(item);}}3. MyContactsActivity类package .demo.pr3;import android.app.Activity;import android.app.AlertDialog;import android.app.Dialog;import android.app.AlertDialog.Builder;import android.content.ContentUris;import android.content.ContentValues;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.graphics.Color;import .Uri;import android.os.Bundle;import android.provider.ContactsContract.RawContacts;import monDataKinds.Phone;import monDataKinds.StructuredName; import android.provider.ContactsContract.Contacts.Data;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import android.widget.AdapterView.OnItemClickListener;import .demo.pr3.datax.ContactsTable;import er;/*主界面*/public class MyContactsActivity extends Activity {private ListView listView; //结果列表private BaseAdapter listViewAdapter; //ListView 列表适配器private User users[];//通讯录用户private int selecteItem=0; //当前选择Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);setTitle("通讯录");listView = (ListView) findViewById(R.id.listView);loadContacts();}/*加载联系人列表*/private void loadContacts(){//获取所以通讯录联系人ContactsTable ct=new ContactsTable(this);users=ct.getAllUser();//listView列表现实适配器listViewAdapter=new BaseAdapter() {Overridepublic View getView(int position,View convertView, ViewGroup parent) {if(convertView==null){TextView textView =new TextView(MyContactsActivity.this);textView.setTextSize(22);convertView=textView;}String moblie=users[position].getMoblie()==null?"":users[position].getMoblie();((TextView)convertView).setText(users[position].getName()+"---"+moblie);if(position==selecteItem){convertView.setBackgroundColor(Color.YELLOW);}else{convertView.setBackgroundColor(0);}return convertView;}Overridepublic long getItemId(int position) {return position;}Overridepublic Object getItem(int position) {return users[position];}Overridepublic int getCount() {return users.length;}};//设置listView控件的适配器listView.setAdapter(listViewAdapter);listView.setOnItemClickListener(new OnItemClickListener() {Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO Auto-generated method stub//记录点击列selecteItem=arg2;//刷新列表listViewAdapter.notifyDataSetChanged();}});}/*创建菜单*/public boolean onCreateOptionsMenu(Menu menu) {menu.add(Menu.NONE, 1, Menu.NONE, "添加");menu.add(Menu.NONE, 2, Menu.NONE, "编辑");menu.add(Menu.NONE, 3, Menu.NONE, "查看信息");menu.add(Menu.NONE, 4, Menu.NONE, "删除");menu.add(Menu.NONE, 5, Menu.NONE, "查询");menu.add(Menu.NONE, 6, Menu.NONE, "导入到手机薄");menu.add(Menu.NONE, 7, Menu.NONE, "退出");return super.onCreateOptionsMenu(menu);}/*菜单事件*/public boolean onOptionsItemSelected(MenuItem item){// TODO Auto-generated method stubswitch (item.getItemId()) {case 1://添加Intent intent = new Intent(MyContactsActivity.this,AddContactsActivity.class);startActivity(intent);break;case 2://编辑if(users[selecteItem].getId_DB()>0)//根据数据库ID判断当前记录是否可以操作{intent = new Intent(MyContactsActivity.this,UpdateContactsActivity.class);intent.putExtra("user_ID", users[selecteItem].getId_DB());startActivity(intent);}else{Toast.makeText(this, "无结果记录,无法操作!",Toast.LENGTH_SHORT).show();}break;case 3://查看信息if(users[selecteItem].getId_DB()>0){intent = new Intent(MyContactsActivity.this,ContactsMessageActivity.class);intent.putExtra("user_ID", users[selecteItem].getId_DB());startActivity(intent);}else{Toast.makeText(this, "无结果记录,无法操作!",Toast.LENGTH_SHORT).show();}break;case 4://删除if(users[selecteItem].getId_DB()>0){delete();}else{Toast.makeText(this, "无结果记录,无法操作!",Toast.LENGTH_SHORT).show();}break;case 5://查询new FindDialog(this).show();break;case 6://导入到手机薄if(users[selecteItem].getId_DB()>0){importPhone(users[selecteItem].getName(),users[selecteItem].getMoblie());Toast.makeText(this, "已经成功导入‘"+users[selecteItem].getName()+"’到手机薄!",Toast.LENGTH_SHORT).show();}else{Toast.makeText(this, "无结果记录,无法操作!",Toast.LENGTH_SHORT).show();}break;case 7://退出finish();break;default:break;}return super.onOptionsItemSelected(item);}Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();//重新加载数据ContactsTable ct=new ContactsTable(this);users=ct.getAllUser();//刷新列表listViewAdapter.notifyDataSetChanged();}/*查询*/public class FindDialog extends Dialog{public FindDialog(Context context) {super(context);}protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.find);setTitle("联系人查询");Button find=(Button)findViewById(R.id.find);Button cancel=(Button)findViewById(R.id.cancel);find.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {// TODO Auto-generated method stubEditText value=(EditText)findViewById(R.id.value);ContactsTable ct=new ContactsTable(MyContactsActivity.this);users=ct.findUserByKey(value.getText().toString());for(int i=0;i<users.length;i++){System.out.println("是"+users[i].getName()+",是" +users[i].getMoblie());}listViewAdapter.notifyDataSetChanged();selecteItem=0;dismiss();}});cancel.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {// TODO Auto-generated method stubdismiss();}});}}/*删除联系人*/public void delete(){Builder alert = new AlertDialog.Builder(this);alert.setTitle("系统信息");alert.setMessage("是否要删除联系人?");alert.setPositiveButton("是",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int whichButton) { ContactsTable ct=new ContactsTable(MyContactsActivity.this);//删除联系人信息if(ct.deleteByUser(users[selecteItem])){//重新获取数据users=ct.getAllUser();//刷新列表listViewAdapter.notifyDataSetChanged();selecteItem=0;Toast.makeText(MyContactsActivity.this, "删除成功!",Toast.LENGTH_SHORT).show();}else{Toast.makeText(MyContactsActivity.this, "删除失败!",Toast.LENGTH_SHORT).show();}}});alert.setNegativeButton("否",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int whichButton) {}});alert.show();}///导入到手机薄public void importPhone(String name,String phone){//系统通信录ContentProvider的URIUri phoneURL=android.provider.ContactsContract.Data.CONTENT_URI;ContentValues values = new ContentValues();//首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactIdUri rawContactUri = this.getContentResolver().insert(RawContacts.CONTENT_URI, values);long rawContactId = ContentUris.parseId(rawContactUri);//往data表插入数据values.clear();values.put(Data.RAW_CONTACT_ID, rawContactId);values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);values.put(StructuredName.GIVEN_NAME, name);this.getContentResolver().insert(phoneURL, values);//往data表插入数据values.clear();values.put(Data.RAW_CONTACT_ID, rawContactId);values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);values.put(Phone.NUMBER, phone);values.put(Phone.TYPE, Phone.TYPE_MOBILE);this.getContentResolver().insert(phoneURL, values);}}4. UpdateContactsActivity类package .demo.pr3;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.EditText;import android.widget.Toast;import .demo.pr3.datax.ContactsTable;import er;/*修改记录操作界面*/public class UpdateContactsActivity extends Activity {/** Called when the activity is first created. */ private EditText nameEditText; //输入框private EditText mobileEditText; //手机输入框private EditText qqEditText; //qqprivate EditText danweiEditText; //单位private EditText addressEditText; //地址private User user; //修改的联系人Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.edit);setTitle("修改联系人");//从已设置的页面布局查找对应的控件nameEditText=(EditText)findViewById();mobileEditText=(EditText)findViewById(R.id.mobile);danweiEditText=(EditText)findViewById(R.id.danwei);qqEditText=(EditText)findViewById(R.id.qq);addressEditText=(EditText)findViewById(R.id.address);//将要修改的联系人数据赋值到用户界面显示Bundle localBundle = getIntent().getExtras();int id=localBundle.getInt("user_ID");ContactsTable ct=new ContactsTable(this);user =ct.getUserByID(id);nameEditText.setText(user.getName());mobileEditText.setText(user.getMoblie());qqEditText.setText(user.getQq());danweiEditText.setText(user.getDanwei());addressEditText.setText(user.getAddress());}/*** 创建菜单*/public boolean onCreateOptionsMenu(Menu menu) {menu.add(Menu.NONE, 1, Menu.NONE, "保存");menu.add(Menu.NONE, 2, Menu.NONE, "返回");return super.onCreateOptionsMenu(menu);}/*** 菜单事件*/public boolean onOptionsItemSelected(MenuItem item){// TODO Auto-generated method stubswitch (item.getItemId()) {case 1://保存if(!nameEditText.getText().toString().equals("")){user.setName(nameEditText.getText().toString());user.setMoblie(mobileEditText.getText().toString());user.setDanwei(danweiEditText.getText().toString());user.setQq(qqEditText.getText().toString());user.setAddress(addressEditText.getText().toString());ContactsTable ct=new ContactsTable(UpdateContactsActivity.this);//修改数据库联系人信息if(ct.updateUser(user)){Toast.makeText(UpdateContactsActivity.this, "修改成功!",Toast.LENGTH_SHORT).show();}else{Toast.makeText(UpdateContactsActivity.this, "修改失败!",Toast.LENGTH_SHORT).show();}}else{Toast.makeText(UpdateContactsActivity.this, "数据不能为空!",Toast.LENGTH_SHORT).show();}break;case 2://返回finish();break;default:break;}return super.onOptionsItemSelected(item);}}。
#include<stdio.h> #include<malloc.h> #include<stdlib.h> #include<string.h> #define NULL 0#define LEN sizeof(struct student) struct student {char num[20]; char name[10]; char age[5]; char tel[20]; char adress[50]; char email[20]; stru ct student *next;};int n; struct student *creat(void) {char string[]={"结束"}; struct student *head; struct student *p1,*p2; n=0;p1=p2=(struct student *)malloc(LEN); printf("请输入编号\n"); scanf("%s",&p1->num); printf("请输入姓名\n"); scanf("%s",&p1->name); printf("请输入年龄\n"); scanf("%s",&p1->age);printf("请输入电话号码\n"); scanf("%s",&p1->tel);printf("请输入通讯地址\n"); scanf("%s",&p1->adress); printf("请输入电子邮箱\n"); scanf("%s",&p1->email); head=NULL;while(strcmp(p1->num,string)!=0) {n=n+1;if(n==1) head=p1; else p2->next=p1; p2=p1;p1=(struct student *)malloc(LEN); printf("请输入编号\n"); scanf("%s",&p1->num); printf("请输入姓名\n"); scanf("%s",&p1->name);printf("请输入年龄\n");scanf("%s",&p1->age);printf("请输入电话号码\n"); scanf("%s",&p1->tel);printf("请输入通讯地址\n"); scanf("%s",&p1->adress); printf("请输入电子邮箱\n"); scanf("%s",&p1->email); }p2->next=NULL; return(head);}struct student *del( struct student *head, char num[20]) {struct student *p1,*p2; if(head==NULL) {printf("\n list null!\n");return head;} p1=head;while(strcmp(p1->num,num)!=0&&p1->next!=NULL) {p2=p1;p1=p1->next; }if(strcmp(p1->num,num)==0) { if(p1==head) head=p1->next; else p2->next=p1->next;n=n-1;}else printf("%s not been found!\n",num); return (head);}struct student *insert(struct student *head,struct student *stud) {struct student *p0,*p1,*p2;p0=p1=p2=(struct student *)malloc(LEN); p1=head; p0=stud;if(head==NULL){head=p0;p0->next=NULL;} else{while((p0->num>p1->num)&&(p1->next!=NULL)) {p2=p1;p1=p1->next;} if(p0->num<=p1-> num){if(head==p1) head=p0;else p2->next=p0; p0->next=p1; }else {p1->next=p0;p0->next=NULL;} } n=n+1; return(head);}struct student *namesearch(struct student *head) {struct student *p;p=(struct student *)malloc(LEN); char name[10]; p=head;printf("请输入姓名\n");scanf("%s",name);while(p!=NULL&&strcmp(p->name,name)!=0) p=p->next;printf("编号姓名年龄电话号码通讯地址电子邮箱\n");printf("%s %s %s %s %s %s\n",p->num,p->name,p->age,p->tel,p->adress,p->email); return( head); }struct student *numsearch( struct student *head) {struct student *p;p=(struct student *)malloc(LEN); char num[20]; p=head; printf("请输入编号\n"); scanf("%s",num);while(p!=NULL&&strcmp(p->num,num)!=0) p=p->next;printf("编号姓名年龄电话号码通讯地址电子邮箱\n");printf("%s %s %s %s %s %s\n",p->num,p->name,p->age,p->tel,p->adress,p->email); retur n(head); }struct student *messagechange( struct student *head) {struct student *p;p=(struct student *)malloc(LEN); char name[10]; p=head;printf("请输入姓名\n");scanf("%s",name); while(p!=NULL&&strcmp(p->name,name)!=0) p=p->next;printf("请输入编号\n"); scanf("%s",&p->num); printf("请输入姓名\n"); scanf("%s",&p->name); printf("请输入年龄\n"); scanf("%s",&p->age);printf("请输入电话号码\n"); scanf("%s",&p->tel);printf("请输入通讯地址\n"); scanf("%s",&p->adress); printf("请输入电子邮箱\n");scanf("%s",&p->email);return(head); }void print(struct student*head) {struct student *p; p=head;printf("编号姓名年龄电话通讯地址电子邮箱\n"); if(head!=NULL) do{printf("%s %s %s %s %s %s\n",&p->num,&p->name,&p->age,&p->tel,&p->adress,&p->ema il); p=p->next;} while(p!=NULL);}void save(struct student *head) { FILE *fp; int i,n=0;struct student *p;if((fp=fopen("stu_list","wb"))==NULL) {printf("\n\t\t打开文件失败!!!\n");return; }p=head->next;if(p!=NULL){ while (p!=NULL) { p=p->next; n++; }fprintf(fp,"%d",n); fprintf(fp,"\r\n");p=head->next; for(i=0;i<n;i++) {fprintf(fp,"\n\t\t%s,%s,%s,%s,%s,%s",p->num,p->name,p->age,p->tel,p->adress,p->email); fpri ntf(fp,"\t\t\r\n"); p=p->next;}}else printf("Please make sure the data is not NULL!!"); fclose(fp);printf("\n\t\t存盘成功!!!\n");}void quit(void) { exit(0); }void main() {struct student *head,*stud; int flage=1; for(;flage==1;) {int ch;printf("\n\t\t通讯录系统:\n");printf("\t\t=================================\n"); printf("\t\t 输入记录-----------------0\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存盘---------------------7\n");printf("\t\t 退出---------------------8\n");printf("\t\t=================================\n");printf("\t\t请输入数字(0~8):");scanf("%d",&ch); switch(ch){case 0:head=creat(); printf("是否继续;1/0\n"); scanf("%d",&flage);break;case 1:print (head);break; case 2:head=numsearch(head); printf("是否继续;1/0\n"); scanf("%d",&flage);break; case 3:head=namesearch(head); printf("是否继续;1/0\n");scanf("%d",&flage);break;case 4:stud=(struct student *) malloc(LEN); head=insert(head,stud); printf("请输入编号\n"); scanf("%s",&stud->num); printf("请输入姓名\n"); scanf("%s",&stud->name); printf("请输入年龄\n"); scanf("%s",&stud->age); printf("请输入电话号码\n"); scanf("%s",&stud->tel); printf("请输入通讯地址\n"); scanf("%s",&stud->adress);printf("请输入电子邮箱\n");scanf("%s",&stud->email); printf("是否继续;1/0\n");scanf("%d",&flage);break;case 5: head=messagechange(head); printf("是否继续;1/0\n"); scanf("%d",&flage);break; case 6:char num[20];printf("请输入编号\n");scanf("%s",num); head=del(head,num); printf("是否继续;1/0\n"); scanf("%d",&flage);break;case 7:save(head);break; case 8:quit();break;default:printf("\n\t\t警告!输入错误,请输入数字0-8!");}}}。
手机通讯录实验报告及使用说明(附源代码)自查报告。
标题,手机通讯录实验报告及使用说明(附源代码)。
自查报告内容:在本次实验中,我使用了Java编程语言,开发了一个简单的手机通讯录应用程序。
该应用程序可以实现添加联系人、查找联系人、删除联系人等基本功能。
在开发过程中,我遵循了面向对象的编程思想,使用了类和对象的概念来组织和管理联系人信息。
在实验中,我首先设计了Contact类,用于表示一个联系人的信息,包括姓名、电话号码、邮箱等属性。
然后,我设计了AddressBook类,用于管理联系人信息,包括添加联系人、查找联系人、删除联系人等操作。
最后,我编写了一个简单的用户界面,用于与用户交互,实现对通讯录的操作。
在实验过程中,我遇到了一些问题,比如在删除联系人时没有进行足够的输入验证,导致程序出现了错误。
不过,通过调试和修改代码,我最终解决了这些问题,并且实现了一个稳定和可靠的手机通讯录应用程序。
使用说明:1. 添加联系人,在应用程序中选择“添加联系人”选项,然后输入联系人的姓名、电话号码、邮箱等信息,点击“确认”按钮即可完成添加。
2. 查找联系人,在应用程序中选择“查找联系人”选项,然后输入联系人的姓名或电话号码,点击“搜索”按钮即可查找到对应的联系人信息。
3. 删除联系人,在应用程序中选择“删除联系人”选项,然后输入要删除的联系人的姓名或电话号码,点击“确认”按钮即可删除该联系人。
4. 显示所有联系人,在应用程序中选择“显示所有联系人”选项,即可查看当前通讯录中的所有联系人信息。
源代码:```java。
public class Contact {。
private String name;private String phone;private String email;public Contact(String name, String phone, String email) {。
= name;this.phone = phone;this.email = email;}。
C++通讯录管理系统源码//通讯录管理系统//显示菜单函数#include<iostream>#include<iomanip>#include<string>#define MAX 1000using namespace std;//设计联系人的结构体struct Person{string Name;string Phonenumber;//性别男为1,性别女为2int Sex;int Age;string Adress;};//设计通讯录的结构体struct Phonebook{struct Person personArray[MAX];int Size;};void showMenu() {cout << setw(60) <<"************************"<< endl;//设置输出规范化cout << setw(60) <<"***** 1.添加联系人 *****"<< endl;cout << setw(60) <<"***** 2.显示联系人 *****"<< endl;cout << setw(60) <<"***** 3.删除联系人 *****"<< endl;cout << setw(60) <<"***** 4.查找联系人 *****"<< endl;cout << setw(60) <<"***** 5.修改联系人 *****"<< endl;cout << setw(60) <<"***** 6.清空联系人 *****"<< endl;cout << setw(60) <<"***** 0.退出通讯录 *****"<< endl;cout << setw(57) <<"请输入你选择的选项"<< endl;cout << setw(60) <<"************************"<< endl; }//添加联系人的函数void addphonenumber(Phonebook * abs) {//先判断通讯录是否已经满人if (abs->Size==1000){cout <<"不好意思通讯录已经超过最大存储人数"<< endl;return;}else{//添加具体联系人string name;cout <<"请输入添加人的姓名"<< endl;cin >> name;abs->personArray[abs->Size].Name = name;//添加联系人性别int sex;cout <<"请输入联系人的性别"<< endl;cout <<"1--男"<< endl;cout <<"2--女"<< endl;while (true){cin >> sex;if (sex == 1 || sex == 2) {abs->personArray[abs->Size].Sex = sex;break;}cout <<"输入有误请重新输入"<< endl;}//请输入联系人的年龄int age;cout <<"请输入联系人的年龄"<< endl;cin >> age;abs->personArray[abs->Size].Age = age;//请输入联系人的地址string adress;cout <<"请输入联系人的家庭地址"<< endl;cin >> adress;abs->personArray[abs->Size].Adress = adress;//请输入联系人的电话号码string phonenumber;cout <<"请输入联系人的电话号码"<< endl;cin >> phonenumber;abs->personArray[abs->Size].Phonenumber = phonenumber;//添加一个联系人abs->Size++;cout <<"添加成功"<< endl;system("pause");//请按任意键继续system("cls");//清屏操作}}void showphonenumber(Phonebook * abs) {//首先判断通讯录是否为空if (abs->Size==0){cout << setw(60)<<"通讯录为空,没有联系人存在"<< endl;}else{for (int i = 0; i <abs->Size; i++){cout <<"姓名:"<<abs->personArray[i].Name <<"\t";if (abs->personArray[i].Sex == 1) {cout <<"性别:男"<<"\t";}else{cout <<"性别:女"<<"\t";}cout <<"年龄:"<<abs->personArray[i].Age <<"\t";cout <<"电话:"<<abs->personArray[i].Phonenumber <<"\t";cout <<"住址:"<<abs->personArray[i].Adress << endl;}system("pause");}}int Isexist(Phonebook* abs, string name) {for (int i = 0; i < abs->Size; i++){if (abs->personArray[i].Name ==name) {return i;}else{return -1;}}}void deletephonenumber(Phonebook * abs,string name) { int ret = Isexist(abs, name);if (ret == -1) {cout <<"查无此人"<< endl;}else{for (int i = ret; i < abs->Size; i++){abs->personArray[i] =abs->personArray[i + 1];cout <<"删除成功"<< endl;}abs->Size--;}}void Findphonenumber(Phonebook* abs, string name) { int ret = Isexist(abs, name);if (ret == -1) {cout <<"查无此人"<< endl;}else{cout <<"姓名:"<<abs->personArray[ret].Name <<"\t";if (abs->personArray[ret].Sex == 1) {cout <<"性别:男"<<"\t";}else{cout <<"性别:女"<<"\t";}cout <<"年龄:"<<abs->personArray[ret].Age <<"\t";cout <<"电话:"<<abs->personArray[ret].Phonenumber <<"\t";cout <<"住址:"<<abs->personArray[ret].Adress << endl;}}void ChangePhonenumber(Phonebook* abs, string name) {int ret = Isexist(abs, name);if (ret == -1) {cout <<"查无此人"<< endl;}else{cout <<"请输入要更改人的姓名"<< endl;cin >>name;abs->personArray[ret].Name =name;//添加联系人性别int sex;cout <<"请输入要更改人的性别"<< endl;cout <<"1--男"<< endl;cout <<"2--女"<< endl;while (true){cin >> sex;if (sex == 1 || sex == 2) {abs->personArray[ret].Sex = sex;break;}cout <<"输入有误请重新输入"<< endl;}//请输入联系人的年龄int age;cout <<"请输入要更改人的年龄"<< endl;cin >> age;abs->personArray[ret].Age = age;//请输入联系人的地址string adress;cout <<"请输入要更改人的家庭地址"<< endl;cin >> adress;abs->personArray[ret].Adress = adress;//请输入联系人的电话号码string phonenumber;cout <<"请输入要更改人的电话号码"<< endl;cin >> phonenumber;abs->personArray[ret].Phonenumber = phonenumber;cout <<"更改成功"<< endl;}}void Cleanperson(Phonebook* abs) {abs->Size = 0;cout <<"通讯录已清空"<< endl;system("pause");system("cls");}void main() {int select = 0;Phonebook abs;abs.Size = 0;while (true){showMenu();cin >> select;switch (select){case 1:addphonenumber(&abs);//添加联系人信息break;case 2://显示联系人信息showphonenumber(&abs);break;case 3: {string name;cout <<"请输入要删除的姓名"<< endl;cin >> name;deletephonenumber(&abs,name);break;}case 4:{string name;cout <<"请输入要查找的姓名"<< endl;cin >> name;Findphonenumber(&abs, name);break;}case 5:{string name;cout <<"请输入要修改通讯录的姓名"<< endl;cin >> name;ChangePhonenumber(&abs, name);break;}case 6:Cleanperson(&abs);break;case 0:cout <<"\n"<<"\n";cout <<setw(60)<<"退出系统成功,欢迎下次光临"<< endl;cout <<"\n";break;default:break;}}system("pause");}。
手机通讯录源代码手机通讯录源代码#include#include#include#include#define N 15 //最大容量为15typedef struct //定义一个结构{char name[10];char haoma[15];char leibie[10];char dizhi[20];}ren;//菜单void menu() //目录{system("cls"); //清屏printf(" #########欢迎使用手机通讯录#########\n");printf("\n");printf("================================= ========================================= ====\n");printf("1.~~号码查询~~ \n");printf("2.~~号码添加~~ \n");printf("3.~~号码拨号~~ \n");printf("4.~~号码修改~~ \n");printf("5.~~号码删除~~ \n");printf("0. ~~退出~~ \n");printf("================================= ========================================= ====\n");printf("\n");printf("个人通讯录\n");printf("\n");printf(" ~~请选择相应的功能~~:");}void input() //查询{int help=0; //帮助指令,如果查找所找的类别中没有数据,显示ren ry;FILE *fp;char leibie[10];system("cls");printf("\n 输入要查人员的类别:");scanf("%s",leibie);//要查询的类别查找失败if((fp=fopen("ren.dat","rb"))==NULL){printf("can't open file!\n");exit(0);}fread(&ry,sizeof(ren),1,fp);if(!feof(fp)){ printf(" 人员的信息如下:\n");printf("说明:(A办公类B个人类C商务类)");printf("\n%10s %15s %10s %20s \n","姓名","号码","类别","邮箱");while(!feof(fp)){if(strcmp(ry.leibie,leibie)==0) //若为该类别则输出{ help++;printf("%10s %15s %10s %20s\n",/doc/8f1229847.html,,ry.haoma,ry. leibie,ry.dizhi);}fread(&ry,sizeof(ren),1,fp);}if(help==0){printf(" 查找失败");}。
#include "stdio.h"#include "stdlib.h"#include "string.h"typedef struct Content//........................................结构体{char name[20];long number;char dress[100];struct Content *next;}ML;//ML* head=NULL;ML* Found(){ML *p;p=(ML *)malloc(sizeof(ML));//指针申请空间if(p==NULL){printf("创建失败!!!");exit(0);}p->name;p->number=0;p->dress;p->next=NULL;return p;}void Imput(ML *head)//......................................联系人增添{ML*p=Found();p->next=head->next;head->next=p;printf("\n请输入联系人姓名:");getchar();gets(p->name);printf("\n请输入电话号码::");scanf("%ld",&p->number);printf("\n请输入联系人地址:");getchar();gets(p->dress);}void Revise(ML *head)//.........................................修改{char s[10];int ch;long nu;ML *p=Found();printf("输入需要修改的联系人姓名:");getchar();gets(s);p=head->next;while(strcmp(p->name ,s)){p=p->next;}printf("\n-------------------------------------\n");printf("|**********请输入操作编号***********|\n");printf("| |\n");printf("| 1、联系人姓名|\n");printf("| 2、联系人电话|\n");printf("| 3、联系人地址|\n");printf("| 0、退出|\n");printf("| |\n");printf("|-----------------------------------|\n");printf("请选择需要修改的内容:");scanf("%d",&ch);switch(ch){case 1:{printf("\n请输入名字:");getchar();gets(p->name);printf("修改成功!\n");break;}case 2:{printf("\n请输入电话:");scanf("%ld",&nu);p->number=nu;printf("修改成功!\n");break;}case 3:{printf("\n请输入地址:");getchar();gets(p->dress);printf("修改成功!\n");break;}default:break;}}void Delete(ML *head)//........................................删除{char s[10];ML *p,*d;p=Found();d=Found();p=head->next;head->next=p;printf("输入要删除的联系人姓名:\n");getchar();gets(s);d=head;do{if(!strcmp(p->name ,s)){d->next=p->next;free(p);printf("删除成功!\n");return;}d=p;p=p->next;}while(p!=NULL);printf("该联系人不存在!!!\n");}void Res(ML *head)//.............................................查找{char s[10];ML *p=Found();p=head->next;printf("输入要查找的联系人姓名\n");getchar();gets(s);for(;p!=NULL;p=p->next){if(!strcmp(p->name ,s)){printf("\n名字:%s",p->name);printf("\n电话:%ld",p->number);printf("\n地址:%s\n",p->dress);return;}}printf("该联系人不存在!!!\n");}void Browse(ML *head)//........................................浏览{ML *p=Found();printf("\n**********************************");if(head->next!=NULL){printf("\n..................................\n");printf("名字\t电话\t地址\t\n");for(p=head->next;p!=NULL;p=p->next){printf("%s\t%ld\t%s\t\n",p->name,p->number,p->dress);}}elseprintf("\n通讯录为空!!!\n");printf("\n**********************************\n");}int Menu(ML *head)//....................................................菜单{int ch;printf("-------------------------------------\n");printf("|**********请输入操作编号***********|\n");printf("| |\n");printf("| 1、添加联系人|\n");printf("| 2、修改联系人|\n");printf("| 3、删除联系人|\n");printf("| 4、查找联系人|\n");printf("| 5、浏览联系人|\n");printf("| 0、退出|\n");printf("| |\n");printf("|-----------------------------------|\n");printf("请选择:");scanf("%d",&ch);switch(ch){case 1:Imput(head);break;case 2:Revise(head);break;case 3:Delete(head);break;case 4:Res(head);break;case 5:Browse(head);break;default:break;}return ch;}void main()//........................................主函数{ML *head=Found();printf("-------------------------------------\n");printf("|* * * * * * |\n");printf("| * * * * |\n");printf("| * * * * |\n");printf("| * * * * * * |\n");printf("| * * * 通讯录. * * * |\n");printf("| |\n");printf("| * * * * * * |\n");printf("| * * * |\n");printf("| * * * ---XXX * * |\n");printf("|-----------------------------------|\n");while(Menu(head));}。
手机通讯录源代码#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#define N 15 //最大容量为15typedef struct //定义一个结构{char name[10];char haoma[15];char leibie[10];char dizhi[20];}ren;//菜单void menu() //目录{system("cls"); //清屏printf(" #########欢迎使用手机通讯录#########\n");printf("\n");printf("================================= ========================================= ====\n");printf("1.~~号码查询~~ \n");printf("2.~~号码添加~~ \n");printf("3.~~号码拨号~~ \n");printf("4.~~号码修改~~ \n");printf("5.~~号码删除~~ \n");printf("0. ~~退出~~ \n");printf("================================= ========================================= ====\n");printf("\n");printf("个人通讯录\n");printf("\n");printf(" ~~请选择相应的功能~~:");}void input() //查询{int help=0; //帮助指令,如果查找所找的类别中没有数据,显示ren ry;FILE *fp;char leibie[10];system("cls");printf("\n 输入要查人员的类别:");scanf("%s",leibie);//要查询的类别查找失败if((fp=fopen("ren.dat","rb"))==NULL){printf("can't open file!\n");exit(0);}fread(&ry,sizeof(ren),1,fp);if(!feof(fp)){ printf(" 人员的信息如下:\n");printf("说明:(A办公类B个人类C商务类)");printf("\n%10s %15s %10s %20s \n","姓名","号码","类别","邮箱");while(!feof(fp)){if(strcmp(ry.leibie,leibie)==0) //若为该类别则输出{ help++;printf("%10s %15s %10s %20s\n",,ry.haoma,ry.leibie,ry.dizhi);}fread(&ry,sizeof(ren),1,fp);}if(help==0){printf(" 查找失败!!!");}}// else printf(" 查找失败!!!");fclose(fp);getch();}//修改:输入人员的姓名,查找该人员,若找到则修改该人员的信息,并显示修改前后的结果;//号码添加void search(){int n;FILE *fp; //定义文件指针ren ry,s; // 定义两个ren结构体的量if((fp=fopen("ren.dat","ab+"))==NULL){printf("can't open file!\n");exit(0);}printf("\n录入格式姓名号码类别邮箱。
源代码:#include "stdio.h"#include "stdlib.h"#include "string.h"#include "conio.h"#include "stdlib.h"#define null 0struct record{char name[20];char phone[20];char adress[40];char postcode[10];char e_mail[30];}student[500];struct LinkList{struct record US;struct LinkList *next;}a;struct LinkList *head=null;int num=0;FILE *fp;int menu_select();int adduser();int list();int search();int display();int add();int listbyname();int dele();int save();int exit();void main(){system("cls");for(;;){switch(menu_select()){case 0:adduser();break;case 1:list();break;case 2:search();break;case 3:display();break;case 4:add();break;case 5:listbyname();break;case 6:dele();break;case 7:save();break;case 8:exit(0);}}}menu_select(){char s[80];int a;printf("*_* press any key enter menu! *_* \n");getch();system("cls");printf("\t\t********************MENU*********************\n\n"); printf("\t\t 0. 输入记录\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 7. 记录保存文件\n");printf("\t\t 8. Quit\n");printf("\t\t***********************************************\n"); do{printf("\n Enter you choice(0~11):");scanf("%s",s);a=atoi(s);}while (a<0||a>11);return a;}adduser(){printf("\n\t\t**************** 请输入用户信息 ****************\n"); printf("\n\t\t输入:");scanf("%s",&student[num].name);printf("\n\t\t输入:");scanf("%s",&student[num].phone);printf("\n\t\t输入地址:");scanf("%s",&student[num].adress);printf("\n\t\t输入邮编:");scanf("%s",&student[num].postcode);printf("\n\t\t输入:");scanf("%s",&student[num].e_mail);num++;printf("\n\t\t是否继续添加?(Y/N):");if (getch()=='y')adduser();return(0);}list(){int i;system("cls");if(num!=0){printf("\n\t\t*************** 以下为通讯录所有信息************"); for (i=0;i<num;i++){printf("\n\t\t: %s",student[i].name);printf("\n\t\t: %s",student[i].phone);printf("\n\t\t地址: %s",student[i].adress);printf("\n\t\t邮编: %s",student[i].postcode);printf("\n\t\t:%s",student[i].e_mail);printf("\t\t");if (i+1<num){printf("\n\t\t__________________________");system("pause");}}printf("\n\t\t************************************************"); }elseprintf("\n\t\t通讯录中无任何纪录");printf("\n\t\t按任意键返回主菜单:");getch();return(0);}search(){int mark=0;int i;int a=0;printf("\n\t\t***************** 按查找 *******************");char name[20];printf("\n\t\t请输入:");scanf("%s",name);for(i=a;i<num;i++){if (strcmp(student[i].name,name)==0){printf("\n\t\t************* 以下是您查找的用户信息 ***********"); printf("\n\t\t: %s",student[i].name);printf("\n\t\t: %s",student[i].phone);printf("\n\t\t地址: %s",student[i].adress);printf("\n\t\t:%s",student[i].e_mail);printf("\n\t\t************************************************"); mark++;if ((i+1)<num){printf("\n\t\t是否继续查找相同名字的用户信息:(y/n)");if (getch()=='y'){a=i;continue;}elsereturn(0);}else{printf("\n\t\t按任意键返回主菜单");getch();return(0);}}}if(mark!=0){printf("\n\t\t没有相同的用户纪录");printf("\n\t\t按任意键返回主菜单");getch();return(0);}else{printf("\n\t\t没有相同的用户纪录");printf("\n\t\t按任意键返回主菜单");getch();return(0);}}display(){int mark=0;int i;int a=0;printf("\n\t\t****************** 按查找 ******************");char phone[10];printf("\n\t\t请输入:");scanf("%s",phone);for(i=0;i<num;i++){if (strcmp(student[i].phone,phone)==0){printf("\n\t\t************** 以下是您查找的用户信息 **********"); printf("\n\t\t: %s",student[i].name);printf("\n\t\t: %s",student[i].phone);printf("\n\t\t地址: %s",student[i].adress);printf("\n\t\t:%s",student[i].e_mail);printf("\n\t\t************************************************"); printf("\n\t\t按任意键返回主菜单:");mark++;getch();return(0);}}if (mark==0){printf("\n\t\t没有改用户的信息");printf("\n\t\t按任意键返回主菜单");getch();return(0);}return(0);}add(){int i;if ((fp=fopen("student.bin","wb"))==NULL){printf("\n\t\t文件打开失败");}for (i=0;i<num;i++){if (fwrite(&student[i],sizeof(struct record),1,fp)!=1){printf("\n\t\t写入文件错误!\n");}printf("\n\t\t**************** 请输入用户信息 ****************\n"); printf("\n\t\t输入:");scanf("%s",&student[num].name);printf("\n\t\t输入:");scanf("%s",&student[num].phone);printf("\n\t\t输入地址:");scanf("%s",&student[num].adress);printf("\n\t\t输入邮编:");scanf("%s",&student[num].postcode);printf("\n\t\t输入:");scanf("%s",&student[num].e_mail);num++;printf("\n\t\t是否继续添加?(Y/N):");if (getch()=='y')adduser();return(0);}fclose(fp);printf("\n\t\t通讯录文件已保存");printf("\n\t\t按任意键退出程序\n\t\t");exit(0);return(0);}void deletebyphone(){int i,j;int deletemark=0;char phone[20];printf("\n\t\t请输入要删除用户:");scanf("%s",phone);if(num==0){printf("\n\t\t对不起,文件中无任何纪录");printf("\n\t\t按任意键返回主菜单");getch();return;}for (i=0;i<num;i++){if (strcmp(student[i].phone,phone)==NULL){printf("\n\t\t以下是您要删除的用户纪录:"); printf("\n\t\t: %s",student[i].name);printf("\n\t\t: %s",student[i].phone);printf("\n\t\t地址: %s",student[i].adress); printf("\n\t\t:%s",student[i].e_mail);printf("\n\t\t是否删除?(y/n)");if (getch()=='y'){for (j=i;j<num-1;j++)student[j]=student[j+1];num--;deletemark++;printf("\n\t\t删除成功");printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletebyphone();return;}elsereturn;}continue;}if (deletemark==0){printf("\n\t\t没有该用户的纪录");printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletebyphone();return;}}void deletebyname(){int a=0;int findmark=0;int j;int deletemark=0;int i;char name[20];printf("\n\t\t请输入要删除用户:");scanf("%s",name);for (i=a;i<num;i++){if (strcmp(student[i].name,name)==NULL){printf("\n\t\t以下是您要删除的用户纪录:");findmark++;printf("\n\t\t________________________________"); printf("\n\t\t: %s",student[i].name);printf("\n\t\t: %s",student[i].phone);printf("\n\t\t地址: %s",student[i].adress);printf("\n\t\t:%s",student[i].e_mail);printf("\n\t\t________________________________"); printf("\n\t\t是否删除?(y/n)");if (getch()=='y'){for (j=i;j<num-1;j++)student[j]=student[j+1];num--;deletemark++;printf("\n\t\t删除成功");if((i+1)<num){printf("\n\t\t是否继续删除相同的用户信息?(y/n)"); if (getch()=='y'){a=i;continue;}}printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletebyname();return;}if((i+1)<num){printf("\n\t\t是否继续删除相同的用户信息?(y/n)"); if (getch()=='y'){a=i;continue;}}}elsecontinue;}if ((deletemark==0)&&(findmark==0)){printf("\n\t\t没有该用户的纪录");printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletebyphone();return;return;}else if (findmark!=0){printf("\n\t\t没有重名信息");printf("\n\t\t没有该用户的纪录");printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletebyphone();return;return;}}dele(){char choic;printf("\n\t\t1-按删除 2-按删除");printf("\n\t\t请选择:");choic=getch();switch (choic){case '1':deletebyphone();break;case '2':deletebyname();break;}return(0);}listbyname(){int i,j;struct record tmp;for (i=1;i<num;i++){if(strcmp(student[i].name,student[i-1].name)<0){tmp=student[i];j=i-1;do{student[j+1]=student[j];j--;}while ((strcmp(,student[j].name)<0&&j>=0)); student[j+1]=tmp;}}printf("\n\t\t排序成功,是否显示?(y/n)");if (getch()=='y')list();return(0);}save(){int j;FILE*fp;fp=fopen("student.txt","w");if (fp==NULL)printf("can't open the file.");if(num!=0){for(j=0;j<num;j++){fwrite(student,sizeof(student),1,fp);}}printf("保存成功!");fclose(fp);return(0);}。
#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#define N 15 //最大容量为15typedef struct //定义一个结构{char name[10];char haoma[15];char leibie[10];char dizhi[20];}ren;//菜单void menu() //目录{system("cls"); //清屏printf(" ######### 欢迎使用手机通讯录#########\n");printf("\n");printf("======================================================================= =======\n");printf(" 1.~~查询~~ \n");printf(" 2.~~添加~~ \n");printf(" 3.~~拨号~~ \n");printf(" 4.~~修改~~ \n");printf(" 5.~~删除~~ \n");printf(" 0. ~~退出~~ \n");printf("======================================================================= =======\n");printf("\n");printf(" 个人通讯录\n");printf("\n");printf(" ~~请选择相应的功能~~:");}void input() //查询{int help=0; //帮助指令,如果查找所找的类别中没有数据,显示ren ry;FILE *fp;char leibie[10];system("cls");printf("\n 输入要查人员的类别: ");scanf("%s",leibie);//要查询的类别查找失败if((fp=fopen("ren.dat","rb"))==NULL) {printf("can't open file!\n");exit(0);} fread(&ry,sizeof(ren),1,fp);if(!feof(fp)){ printf(" 人员的信息如下:\n");printf("说明:(A办公类B个人类C商务类)");printf("\n%10s %15s %10s %20s \n","","","类别","");while(!feof(fp)){if(strcmp(ry.leibie,leibie)==0) //若为该类别则输出 { help++;printf("%10s %15s %10s %20s \n",,ry.haoma,ry.leibie,ry.dizhi);}fread(&ry,sizeof(ren),1,fp);}if(help==0){printf(" 查找失败!!!");}}// else printf(" 查找失败!!!");fclose(fp);getch();}//修改:输入人员的,查找该人员,若找到则修改该人员的信息,并显示修改前后的结果;//添加void search(){int n;FILE *fp; //定义文件指针ren ry,s; // 定义两个ren结构体的量 if((fp=fopen("ren.dat","ab+"))==NULL){printf("can't open file!\n");exit(0);}printf("\n录入格式类别。
当输入为#结束录入\n");while(1){ printf("请输入:");scanf("%s",);if(strcmp(,"#")==0) break; //如果输入#则退出添加printf("请输入:");scanf("%s",ry.haoma);printf("请输入类别(A办公类B个人类C商务类):");scanf("%s",ry.leibie);printf("请输入地址:");scanf("%s",ry.dizhi);fseek(fp,0,0); //指针定位到文件开始位置 fread(&s,sizeof(ren),1,fp);n=0;while(!feof(fp)){n++;if(strcmp(s.haoma,ry.haoma)==0){printf("已经存在,不能记录.\n");break;}//遇到有相同的if(strcmp(,)==0){printf("已经存在,不能记录.\n");break;}//遇到有相同的fread(&s,sizeof(ren),1,fp);}// printf("%d",n);if(n>N){break;//存已满,不能记录.}if(feof(fp)) //读到自后也没有相同的fwrite(&ry,sizeof(ren),1,fp); //将信息写入文件}fclose(fp); //关闭文件getchar(); //接受一个输入}void modi() //拨号{ ren ry;FILE *fp;char name[10];system("cls");printf("\n 输入要拨人员的: ");scanf("%s",name);if((fp=fopen("ren.dat","rb"))==NULL) {printf("can't open file!\n");exit(0);}while(!feof(fp)){ fread(&ry,sizeof(ren),1,fp);if(strcmp(,name)==0){ printf("\n\a\a\a\a\a\a %15s\a\a\a\a\a\n",ry.haoma); //输出和声音break;}}if(feof(fp)) printf("\n\n 拨号失败!!!");fclose(fp);getch();}void dele(){ ren ry;FILE *fp;char name[10];system("cls");if((fp=fopen("ren.dat","rb+"))==NULL) {printf("can't open file!\n");exit(0);} if(!feof(fp)){printf(" 修改前全部人员的信息如下:\n");printf("\n%10s %15s %10s %20s \n","","","类别","");fread(&ry,sizeof(ren),1,fp);while(!feof(fp)){printf("%10s %15s %10s %20s \n",,ry.haoma,ry.leibie,ry.dizhi);fread(&ry,sizeof(ren),1,fp);}}printf("\n 输入要修改人员的: ");scanf("%s",name);if((fp=fopen("ren.dat","rb+"))==NULL) {printf("can't open file!\n");exit(0);}while(!feof(fp)){ fread(&ry,sizeof(ren),1,fp);if(strcmp(,name)==0){ printf(" 修改前人员的信息如下:\n");printf("\n%10s %15s %10s %20s \n","","","类别","");printf("%10s %15s %10s %20s \n",,ry.haoma,ry.leibie,ry.dizhi); printf("\n请输入该人的:");scanf("%s",ry.haoma);printf("\n类别:");scanf("%s",ry.leibie); //新信息输入printf("\n:");scanf("%s",ry.dizhi);break; //修改完毕退出}}if(!feof(fp)){printf(" \n 修改后的人的信息如下:\n");printf("\n%10s %15s %10s %20s \n","","","类别","");printf("%10s %15s %10s %20s \n",,ry.haoma,ry.leibie,ry.dizhi);fseek(fp,sizeof(ren),1); //指针向前一位定位fwrite(&ry,sizeof(ren),1,fp);}elseprintf("\n\n 此人不存在,修改失败!!");fclose(fp);getch();}//删除:输入人员,若该人员存在,则删除,并显示删除后余下的人员的信息void bohao(){ ren ry[N];FILE *fp;char name[10];int i,len,k=-1;system("cls");printf("\n 输入要删除的人员: ");scanf("%s",name);i=0;if((fp=fopen("ren.dat","rb+"))==NULL) {printf("can't open file!\n");exit(0);}while(!feof(fp)){ fread(&ry[i],sizeof(ren),1,fp);if(feof(fp)) break;if(strcmp(ry[i].name,name)==0) k=i;i++;}fclose(fp);//以下是删除后重新写文件len=i;if(k>=0){ if((fp=fopen("ren.dat","wb+"))==NULL) {printf("can't open file!\n");exit(0);}for(i=0;i<len;i++){ if(i==k) continue;fwrite(&ry[i],sizeof(ren),1,fp);}fclose(fp);printf("\n\n 删除成功!!!\n");}else printf(" \n\n 删除失败!!!\n");getch();}//菜单选择void choice(){char ch;while(1){menu();// 显示菜单ch=getch();//选择菜单if(ch=='0') break;switch(ch)//判断功能项{case '1': input();break; case '2':search();break; case '3':modi();break;case '4':dele();break;case '5':bohao();break; }}printf("\n欢迎使用!!!\n"); }//主函数int main(){choice();//调用菜单选择}。