Day12-实战(单项链表循环-通讯录)
2016-01-10 23:28
267 查看
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define Data_Base "phoneNumber.txt"
typedef struct{
int ID;
char name[15];
char phoneNumber[15];
}phoneNum;
phoneNum Nums[1024];
int user_Num=0;
void addUser();
void delUser();
void printUser();
void updateUser();
void searchUser();
int main(int argc,
const char * argv[]) {
while (1) {
FILE *p =fopen(Data_Base, "r");
if(p!=NULL){
printf("\n===============\n");
fread(&user_Num, sizeof(int), 1, p);
for (int i=0; i<user_Num; i++) {
fread(&Nums[i], sizeof(phoneNum), 1, p);
printf("%d %s %s\n",Nums[i].ID,Nums[i].name,Nums[i].phoneNumber);
}
printf("===============\n");
int temp=0;
printf("已打开文件\n");
printf("*************************\n");
printf("***** 1.添加联系人 ******\n");
printf("***** 2.删除联系人 ******\n");
printf("***** 3.修改联系人 ******\n");
printf("***** 4.查看所有联系人 *****\n");
printf("***** 5.搜索联系人 ******\n");
printf("***** 6.退出系统 ********\n");
printf("*************************\n");
scanf("%d",&temp);
switch (temp) {
4000
case 1:
addUser();
break;
case 2:
delUser();
break;
case 3:
updateUser();
break;
case 4:
printUser();
break;
case 5:
searchUser();
break;
case 6:
printf("系统正在退出~\n");
return 0;
default:
printf("输入有误,系统选择退出\n");
return 0;
}
}
else{
FILE *b =fopen("phoneNumber.txt",
"w");
printf("开始初始化\n");
fwrite(&user_Num, sizeof(int), 1, b);
printf("初始化结束\n");
fclose(b);
continue;
}
fclose(p);
}
return 0;
}
void addUser(){
FILE *p =fopen(Data_Base, "r");
if (p!=NULL) {
fread(&user_Num, sizeof(int), 1, p);
char name[15];
printf("请输入联系人姓名\n");
scanf("%s",name);
char phone[20];
printf("请输入联系人电话\n");
scanf("%s",phone);
printf("确定要添加联系人%s
手机号%s吗?0.取消 1.确定\n",name,phone);
int temp=0;
scanf("%d",&temp);
if(1==temp){
printf("正在输入\n");
for (int i=0; i<user_Num; i++) {
fread(&Nums[i], sizeof(phoneNum), 1, p);
}
FILE *b=fopen(Data_Base, "w");
Nums[user_Num].ID=user_Num+1;
strcpy(Nums[user_Num].name, name);
strcpy(Nums[user_Num].phoneNumber, phone);
user_Num++;
fwrite(&user_Num, sizeof(int), 1, b);
for (int i=0; i<user_Num; i++) {
fwrite(&Nums[i], sizeof(phoneNum), 1, b);
}
printf("添加成功\n");
fclose(b);
}
}
else{
printf("程序出错!(同志,快醒醒,有行代码出错误了快改改!\n");
}
fclose(p);
}
void delUser(){
FILE *p=fopen(Data_Base, "r");
FILE *b=fopen(Data_Base, "w");
int temp=0,yes=0;
printf("%d",user_Num);
fread(&user_Num, sizeof(int), 1, p);
if (b!=NULL) {
for (int i=0; i<user_Num; i++) {
fread(&Nums[i], sizeof(phoneNum), 1, p);
printf("%d %s %s\n",Nums[i].ID,Nums[i].name,Nums[i].phoneNumber);
}
printf("请输入要删除的联系人的ID\n");
scanf("%d",&temp);
printf("确定要删除%d号联系人吗?0.取消
1.确定\n",temp);
scanf("%d",&yes);
if(1==yes){
for (int i=temp; i<user_Num; i++) {
Nums[i-1].ID=Nums[i].ID-1;
strcpy(Nums[i-1].name, Nums[i].name);
strcpy(Nums[i-1].phoneNumber, Nums[i].phoneNumber);
}
user_Num--;
fwrite(&user_Num, sizeof(int), 1, b);
for (int i=0; i<user_Num; i++) {
fwrite(&Nums[i], sizeof(phoneNum), 1, b);
}
printf("删除成功!\n");
}
else{
printf("已经取消删除\n");
}
}
else {
printf("程序出错!(同志,快醒醒,有行代码出错误了快改改!\n");
}
fclose(b);
}
void updateUser(){
FILE *p=fopen(Data_Base, "r");
if (p!=NULL) {
fread(&user_Num, sizeof(int), 1, p);
for (int i=0; i<user_Num; i++) {
fread(&Nums[i], sizeof(phoneNum), 1, p);
}
printf("请输入要修改的ID\n");
int temp=0;
scanf("%d",&temp);
printf("请输入新的姓名以及新的电话
以空格隔开\n");
char name[20];
char phoneNumber[20];
scanf("%s %s",name,phoneNumber);
printf("确定要修改%d号联系人吗?0.取消
1.确定\n",temp);
int yes=0;
scanf("%d",&yes);
if (1==yes) {
FILE *b=fopen(Data_Base, "w");
strcpy(Nums[temp-1].name, name);
strcpy(Nums[temp-1].phoneNumber, phoneNumber);
fwrite(&Nums, sizeof(phoneNum), 1, b);
printf("修改成功!\n");
}
else{
printf("修改取消!\n");
}
}
else{
printf("程序出错!(同志,快醒醒,有行代码出错误了快改改!\n");
}
fclose(p);
}
void printUser(){
FILE *p=fopen(Data_Base, "r");
if (p!=NULL) {
fread(&user_Num, sizeof(int), 1, p);
for (int i=0; i<user_Num; i++) {
fread(&Nums[i], sizeof(phoneNum), 1, p);
printf("ID=%d,name=%s,phoneNumber=%s",Nums[i].ID,Nums[i].name,Nums[i].phoneNumber);
}
}
}
void searchUser(){
FILE *p=fopen(Data_Base, "r");
if (p!=NULL) {
fread(&user_Num, sizeof(int), 1, p);
for (int i=0; i<user_Num; i++) {
fread(&Nums[i], sizeof(phoneNum), 1, p);
}
printf("请输入要查询的用户姓名\n");
char name[20];
scanf("%s",name);
int i=0;
for (; i<user_Num; i++) {
if (strcmp(Nums[i].name, name)==0){
printf("ID=%d,name=%s,phoneNumber=%s\n",Nums[i].ID,Nums[i].name,Nums[i].phoneNumber);
break;
}
}
if (i==user_Num) {
printf("我跟你说!查无此人!\n");
}
}
else{
printf("程序出错!(同志,快醒醒,有行代码出错误了快改改!\n");
}
fclose(p);
}
#include <string.h>
#include <stdlib.h>
#define Data_Base "phoneNumber.txt"
typedef struct{
int ID;
char name[15];
char phoneNumber[15];
}phoneNum;
phoneNum Nums[1024];
int user_Num=0;
void addUser();
void delUser();
void printUser();
void updateUser();
void searchUser();
int main(int argc,
const char * argv[]) {
while (1) {
FILE *p =fopen(Data_Base, "r");
if(p!=NULL){
printf("\n===============\n");
fread(&user_Num, sizeof(int), 1, p);
for (int i=0; i<user_Num; i++) {
fread(&Nums[i], sizeof(phoneNum), 1, p);
printf("%d %s %s\n",Nums[i].ID,Nums[i].name,Nums[i].phoneNumber);
}
printf("===============\n");
int temp=0;
printf("已打开文件\n");
printf("*************************\n");
printf("***** 1.添加联系人 ******\n");
printf("***** 2.删除联系人 ******\n");
printf("***** 3.修改联系人 ******\n");
printf("***** 4.查看所有联系人 *****\n");
printf("***** 5.搜索联系人 ******\n");
printf("***** 6.退出系统 ********\n");
printf("*************************\n");
scanf("%d",&temp);
switch (temp) {
4000
case 1:
addUser();
break;
case 2:
delUser();
break;
case 3:
updateUser();
break;
case 4:
printUser();
break;
case 5:
searchUser();
break;
case 6:
printf("系统正在退出~\n");
return 0;
default:
printf("输入有误,系统选择退出\n");
return 0;
}
}
else{
FILE *b =fopen("phoneNumber.txt",
"w");
printf("开始初始化\n");
fwrite(&user_Num, sizeof(int), 1, b);
printf("初始化结束\n");
fclose(b);
continue;
}
fclose(p);
}
return 0;
}
void addUser(){
FILE *p =fopen(Data_Base, "r");
if (p!=NULL) {
fread(&user_Num, sizeof(int), 1, p);
char name[15];
printf("请输入联系人姓名\n");
scanf("%s",name);
char phone[20];
printf("请输入联系人电话\n");
scanf("%s",phone);
printf("确定要添加联系人%s
手机号%s吗?0.取消 1.确定\n",name,phone);
int temp=0;
scanf("%d",&temp);
if(1==temp){
printf("正在输入\n");
for (int i=0; i<user_Num; i++) {
fread(&Nums[i], sizeof(phoneNum), 1, p);
}
FILE *b=fopen(Data_Base, "w");
Nums[user_Num].ID=user_Num+1;
strcpy(Nums[user_Num].name, name);
strcpy(Nums[user_Num].phoneNumber, phone);
user_Num++;
fwrite(&user_Num, sizeof(int), 1, b);
for (int i=0; i<user_Num; i++) {
fwrite(&Nums[i], sizeof(phoneNum), 1, b);
}
printf("添加成功\n");
fclose(b);
}
}
else{
printf("程序出错!(同志,快醒醒,有行代码出错误了快改改!\n");
}
fclose(p);
}
void delUser(){
FILE *p=fopen(Data_Base, "r");
FILE *b=fopen(Data_Base, "w");
int temp=0,yes=0;
printf("%d",user_Num);
fread(&user_Num, sizeof(int), 1, p);
if (b!=NULL) {
for (int i=0; i<user_Num; i++) {
fread(&Nums[i], sizeof(phoneNum), 1, p);
printf("%d %s %s\n",Nums[i].ID,Nums[i].name,Nums[i].phoneNumber);
}
printf("请输入要删除的联系人的ID\n");
scanf("%d",&temp);
printf("确定要删除%d号联系人吗?0.取消
1.确定\n",temp);
scanf("%d",&yes);
if(1==yes){
for (int i=temp; i<user_Num; i++) {
Nums[i-1].ID=Nums[i].ID-1;
strcpy(Nums[i-1].name, Nums[i].name);
strcpy(Nums[i-1].phoneNumber, Nums[i].phoneNumber);
}
user_Num--;
fwrite(&user_Num, sizeof(int), 1, b);
for (int i=0; i<user_Num; i++) {
fwrite(&Nums[i], sizeof(phoneNum), 1, b);
}
printf("删除成功!\n");
}
else{
printf("已经取消删除\n");
}
}
else {
printf("程序出错!(同志,快醒醒,有行代码出错误了快改改!\n");
}
fclose(b);
}
void updateUser(){
FILE *p=fopen(Data_Base, "r");
if (p!=NULL) {
fread(&user_Num, sizeof(int), 1, p);
for (int i=0; i<user_Num; i++) {
fread(&Nums[i], sizeof(phoneNum), 1, p);
}
printf("请输入要修改的ID\n");
int temp=0;
scanf("%d",&temp);
printf("请输入新的姓名以及新的电话
以空格隔开\n");
char name[20];
char phoneNumber[20];
scanf("%s %s",name,phoneNumber);
printf("确定要修改%d号联系人吗?0.取消
1.确定\n",temp);
int yes=0;
scanf("%d",&yes);
if (1==yes) {
FILE *b=fopen(Data_Base, "w");
strcpy(Nums[temp-1].name, name);
strcpy(Nums[temp-1].phoneNumber, phoneNumber);
fwrite(&Nums, sizeof(phoneNum), 1, b);
printf("修改成功!\n");
}
else{
printf("修改取消!\n");
}
}
else{
printf("程序出错!(同志,快醒醒,有行代码出错误了快改改!\n");
}
fclose(p);
}
void printUser(){
FILE *p=fopen(Data_Base, "r");
if (p!=NULL) {
fread(&user_Num, sizeof(int), 1, p);
for (int i=0; i<user_Num; i++) {
fread(&Nums[i], sizeof(phoneNum), 1, p);
printf("ID=%d,name=%s,phoneNumber=%s",Nums[i].ID,Nums[i].name,Nums[i].phoneNumber);
}
}
}
void searchUser(){
FILE *p=fopen(Data_Base, "r");
if (p!=NULL) {
fread(&user_Num, sizeof(int), 1, p);
for (int i=0; i<user_Num; i++) {
fread(&Nums[i], sizeof(phoneNum), 1, p);
}
printf("请输入要查询的用户姓名\n");
char name[20];
scanf("%s",name);
int i=0;
for (; i<user_Num; i++) {
if (strcmp(Nums[i].name, name)==0){
printf("ID=%d,name=%s,phoneNumber=%s\n",Nums[i].ID,Nums[i].name,Nums[i].phoneNumber);
break;
}
}
if (i==user_Num) {
printf("我跟你说!查无此人!\n");
}
}
else{
printf("程序出错!(同志,快醒醒,有行代码出错误了快改改!\n");
}
fclose(p);
}
相关文章推荐
- 蓝懿ios技术交流和心得分享16.1。10
- mysql权限覆盖
- 表格
- UDP传输演示
- linux命令ps aux|grep xxx详解
- 图论入门———深度优先搜索实现二分图判定
- Linux内核构建系统之五
- android135 360 来电去电归属地显示,自定义toast,
- hdu1302The Snail(水)
- Codeforces 615C Running Track (Round #338 (Div. 2) C题) Trie + dp
- C 求字符数组最大值与次大值
- 软工课程总结
- SpringMVC的几种返回方式
- APP架构构思基本思路初稿
- c语言实现数组栈
- 学习之路
- 使用 Monit 监控PHP 服务中遇到的坑和解决办法
- 那些年我们一起做过的shell面试题(三)
- 数据结构_3:栈:STL
- 给编程初学者的干货:“秘籍”学好一本就不易