c语言程序设计——编一个通讯录管理程序:序号 姓名 电话 地址

c语言程序设计——编一个通讯录管理程序:序号 姓名 电话 地址,第1张

简单通讯录管理程序,代码如下:#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

}

不管你接受不接受劝告,我还是要说,要源代码是在是不好。

这个很简单,用vc搭些界面,新建1个数据库。

然后,只要在代码里做几个sql与就可以了。

用insert 建立通讯记录。

用unpdate修改记录。

用delete删除记录。

界面上做些文本框输入调节,把文本框内容粘帖到sql的条件就可以了。

简易做对话框形式就可以了,多文档界面稍微复杂。

/*【用C语言编写具有数据插入、修改、删除、显示和查询功能的电话薄管理程序】

1、数据包括:人名、工作单位、电话号码和E-mail地址。

2、可对记录中的姓名和电话号码进行修改。

3、可增加或删除记录。

4、可显示所有保存的记录。

5、可按人名或电话号码进行查询。

另:采用结构体数组和文件系统实现。结构体包括人名、工作单位、电话号码和E-mail

绝对原创,2010年7月12日晚刚写完测试通过的,纯C语言! */

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define szSTR 64

#define fileDB "c:\\contact.txt"

struct CONTACT {

char name[szSTR]/*姓名*/

char unit[szSTR]/*工作单位*/

char tele[szSTR]/*电话*/

char mail[szSTR]/*mail*/

}

typedef struct CONTACT CON

#define BNAME 1

#define BUNIT 2

#define BTELE 4

#define BMAIL 8

#define BFULL 0xFF

int OPER[5] = {BFULL, BNAME, BUNIT, BTELE, BMAIL}

void input(CON * s, int mask)

{

if(mask &BNAME) { printf("请输入学生姓名:")scanf("%s", s->name)}

if(mask &BUNIT) { printf("请输入工作单位:")scanf("%s", s->unit)}

if(mask &BTELE) { printf("请输入联系电话:")scanf("%s", s->tele)}

if(mask &BMAIL) { printf("请输入电子邮件:")scanf("%s", s->mail)}

}/*end input*/

void show (int id, CON * s)

{

if(!s) return

if(id)

printf("%d\t%s\t%s\t%s\t%s\n",

id, s->name , s->unit , s->tele , s->mail )

else

printf("【姓名】%s【工作单位】%s【电话】%s【电邮】%s\n",

s->name , s->unit , s->tele , s->mail )

/*end if*/

}/*end show*/

void regist(void)

{

CON sFILE * f = 0

input(&s, BFULL)

f = fopen(fileDB, "ab")

fwrite(&s,sizeof(s),1,f)

fclose(f)

printf("资料已保存!\n")

}/*end regist*/

int browse(char * key, fpos_t * p, CON * s)

{

FILE * f =0int i = 0, r = 0CON t

char * a = 0, * b = 0fpos_t q

if(!s) return 0

f = fopen(fileDB, "rb")

if(!f) {

printf("数据库暂无记录\n")

return 0

}/*end if*/

printf("编号\t姓名\t单位\t电话\t电邮\n")

printf("------------------------------------------------\n")

while(!feof(f)) {

fgetpos(f, &q)

r = fread(&t, sizeof(t), 1, f)

if(r<1)break

if(t.name[0]==0) continue

if(key) {

a = strstr(t.name , key)

b = strstr(t.tele , key)

if(a == 0 &&b == 0) continue

}/*end if*/

if(p) *p = q

if(s) memcpy(s, &t, sizeof(t))

i++

show(i, &t)

}/*end while*/

fclose(f)

printf("------------------------------------------------\n")

return i

}/*end browse*/

fpos_t query(CON * s)

{

char key[szSTR]=""fpos_t p = 0int r = 0

printf("请输入姓名或者电话号码:")

scanf("%s", key)

r = browse(key, &p, s)

return r?p:-1

}/*end query*/

void clear(void)

{

FILE * f = 0CON s

fpos_t p = query(&s)

if(p<0) return

f = fopen(fileDB, "rb+")

fsetpos(f, &p)

memset(&s, 0, sizeof(s))

fwrite(&s, sizeof(s),1, f)

fclose(f)

printf("记录已删除!\n")

}/*end clear*/

void modify(void)

{

FILE * f = 0CON sint cmd = 0

fpos_t p = query(&s)

if(p<0) return

f = fopen(fileDB, "rb+")

fsetpos(f, &p)

for() {

show(0, &s)

printf("请选择:1-姓名;2-工作单位;3-电话;4-电邮;5-保存并退出;6-放弃修改并退出\n")

scanf("%d", &cmd)

switch(cmd) {

case 1:

case 2:

case 3:

case 4:

input(&s, OPER[cmd])

break

case 5:

fsetpos(f, &p)

fwrite(&s, sizeof(s), 1, f)

case 6:

fclose(f)

return

default:

printf("错误的 *** 作,请重新输入。\n")

}/*end case*/

}/*mext*/

}/*end clear*/

int main(void)

{

int cmd = 0CON s

for() {

printf("欢迎使用通信簿!请选择:1-添加;2-查询;3-删除;4-修改;5-全部输出;0-退出\n")

scanf("%d", &cmd)

switch(cmd) {

case 0: return 0

case 1: regist()break

case 2: query(&s)break

case 3: clear()break

case 4: modify()break

case 5: browse(0, 0, &s)break

}//end case

}

return 0

}


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

原文地址: http://outofmemory.cn/yw/11185156.html

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

发表评论

登录后才能评论

评论列表(0条)

保存