用C语言简单实现通讯录

实现一个通讯录;

通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址

 一个人的信息有名字、性别、年龄、电话和住址,这些信息如果要单独设一个变量而且这些变量有许多不同的类型,用起来比较麻烦。学过自定义类型之后就可以将这些成员放到一个结构体中。

首先自定义一个结构体类型:

#define MAX 1000
#define NAME_MAX 20
#define SEX_MAX 5
#define TELE_MAX 12
#define ADD_MAX 30

enum Option
{
	EXIT,
	ADD,
	DEL,
	SEARCH,
	MODIFY,
	SORT,
	print
};


typedef struct PeoInfo
{
	char name[NAME_MAX];
	char sex[SEX_MAX];
	int age;
	char tele[TELE_MAX];
	char addr[ADD_MAX];
} PeoInfo;

typedef struct Contact
{
	PeoInfo data[MAX];//可以放1000个人的信息
	int sz;  //记通讯录中已经保存的信息个数

}Contact;

在解决基本的类型定义后,考虑到要实现通讯录的功能,所以要建立一个函数,考虑到是选择功能,所以用switch语句,又因为要实现连续选择,所以要把switch语句放在do...while循环中,用户可以连续选择和随时退出。 

void menu()
{
	printf("*****************************\n");
	printf("******1.add      2.del     *****\n");
	printf("******3.search  4.modify****\n");
	printf("******5.sort       6.print   ****\n");
	printf("******0.exit *****************\n");
	printf("*****************************\n");

}

void test()
{
	//增删查找修改
	int input = 0;
	//创建通讯录
	Contact con; 
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,下面是一个基于标准C语言实现简单CGI通讯录示例: 1. 设计数据库:您可以使用SQLite或其他数据库来存储通讯录信息。以下是一个使用SQLite的示例: ```c #include <sqlite3.h> int main() { sqlite3 *db; char *zErrMsg = 0; int rc; rc = sqlite3_open("contacts.db", &db); if (rc) { fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); return 1; } // create contacts table rc = sqlite3_exec(db, "CREATE TABLE IF NOT EXISTS contacts (" "id INTEGER PRIMARY KEY," "name TEXT," "phone TEXT," "email TEXT" ");", 0, 0, &zErrMsg); if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); } sqlite3_close(db); return 0; } ``` 2. 编写CGI脚本:以下是一个基于标准C语言实现的CGI脚本示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sqlite3.h> int main() { char *data; char *method; char *name; char *phone; char *email; sqlite3 *db; char *zErrMsg = 0; int rc; printf("Content-Type:text/html;charset=utf-8\n\n"); data = getenv("QUERY_STRING"); method = getenv("REQUEST_METHOD"); if (strcmp(method, "POST") == 0) { // read form data scanf("%ms", &data); name = strstr(data, "name=") + 5; phone = strstr(data, "phone=") + 6; email = strstr(data, "email=") + 6; // remove '+' from phone number char *p = phone; while (*p) { if (*p == '+') { *p = ' '; } p++; } // insert into database rc = sqlite3_open("contacts.db", &db); if (rc) { fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); return 1; } char sql[200]; sprintf(sql, "INSERT INTO contacts (name, phone, email) VALUES ('%s', '%s', '%s');", name, phone, email); rc = sqlite3_exec(db, sql, 0, 0, &zErrMsg); if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); } sqlite3_close(db); printf("<p>Contact added: %s, %s, %s</p>\n", name, phone, email); } else { // display contacts rc = sqlite3_open("contacts.db", &db); if (rc) { fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); return 1; } printf("<table><tr><th>Name</th><th>Phone</th><th>Email</th></tr>\n"); rc = sqlite3_exec(db, "SELECT * FROM contacts;", callback, 0, &zErrMsg); if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); } sqlite3_close(db); printf("</table>\n"); printf("<form method=\"POST\" action=\"\">\n"); printf("<p>Name: <input type=\"text\" name=\"name\"></p>\n"); printf("<p>Phone: <input type=\"text\" name=\"phone\"></p>\n"); printf("<p>Email: <input type=\"email\" name=\"email\"></p>\n"); printf("<p><input type=\"submit\" value=\"Add Contact\"></p>\n"); printf("</form>\n"); } free(data); return 0; } int callback(void *NotUsed, int argc, char **argv, char **azColName) { for (int i = 0; i < argc; i++) { printf("<td>%s</td>", argv[i] ? argv[i] : "NULL"); } printf("</tr>\n"); return 0; } ``` 3. 设计网页:以下是一个使用HTML和CSS设计的简单通讯录网页示例: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Contacts</title> <style> table { border-collapse: collapse; } th, td { border: 1px solid black; padding: 5px; } </style> </head> <body> <h1>Contacts</h1> <hr> <?php include "contacts.cgi" ?> </body> </html> ``` 希望这些示例能够帮助到您。请注意,这只是一个简单的示例,您可能需要根据您的需求进行更改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开拓的嚣张

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值