03.03 你想要的源代码来啦!C语言实现通讯录管理系统

说明:

本系统基于C语言实现班级通讯录管理系统,为小伙伴学习C语言刚入门所做的课程设计。功能包括增、删、查、改等,非常适合初学者练手。通讯录包括的个人信息有姓名、学号、性别、籍贯、政治面貌、手机号、QQ号、宿舍等。主要用到了指针、结构体、遍历链表、文件读取等知识点。

没有开发工具的小伙伴可以找我获取!

运行效果:

你想要的源代码来啦!C语言实现通讯录管理系统

代码:

<code>  1#include

2#include

3#include

4 #include<windows.h>

5 typedef struct student //定义结构体

6 {

7 char name[20]; //姓名

8 char num[15]; //学号

9 char sex[10]; //性别

10 char from[20]; //籍贯

11 char political[10]; //政治面貌

12 char phone[15]; //手机号

13 char QQ[15]; //QQ号

14 char dorm[10]; //宿舍

15 struct student *next; //结构体指针

16 }stu;

17 stu *head;

18

19 void print() //主菜单

20 {

21 system("cls");


22 printf("\\n\\n\\n");

23 printf(" ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\\n");

24 printf(" ***********************************************************\\n");

25 printf(" \\t\\t\\t班级通讯录管理系统\\n");

26 printf("\\n");

27 printf(" \\t\\t1. 输入数据");

28 printf("\\t\\t2. 显示数据\\n");

29 printf(" \\t\\t3. 插入数据");

30 printf("\\t\\t4. 删除数据\\n");

31 printf(" \\t\\t5. 查看数据");

32 printf("\\t\\t6. 修改数据\\n");

33 printf(" \\t\\t7. 保存数据");

34 printf("\\t\\t8. 返回主菜单\\n");

35 printf(" ***********************************************************\\n");

36 printf(" ~~~~~退~~~~~~~~~~出~~~~~~~~~~请~~~~~~~~~~按~~~~~~~~~~9~~~~~\\n");

37 printf(" -----------------------------------------------------------\\n\\n");

38 }

39

40

41 void input(stu *p1) //输入相关数据

42 {

43 printf("姓名:");

44 scanf("%s",&p1->name);

45 printf("学号:");

46 scanf("%s",&p1->num);

47 printf("性别:");

48 scanf("%s",&p1->sex);

49 printf("籍贯:");

50 scanf("%s",&p1->from);

51 printf("政治面貌:");

52 scanf("%s",&p1->political);

53 printf("手机号:");

54 scanf("%s",&p1->phone);

55 printf("QQ号:");

56 scanf("%s",&p1->QQ);

57 printf("宿舍:");

58 scanf("%s",&p1->dorm);

59 }

60

61

62 stu * inputdata() //数据输入的函数

63 {

64 stu *p1,*p2;

65 int i=1;

66 p1=(stu *)malloc(sizeof(stu));

67 if(p1!=NULL)

68 {

69 head=p1;

70 printf("\\n\\t\\t\\t☆☆☆输入数据☆☆☆\\n");

71 printf("------------------------------------------------------------------\\n");

72 printf("在姓名处输入“ok”代表输入数据结束\\n");

73 while(i)

74 {

75 printf("姓名:");

76 scanf("%s",&p1->name);

77 if(strcmp(p1->name,"ok")==0)

78 {

79 printf("\\n输入完毕!\\n");

80 printf("========================================================================\\n");

81 i=0;

82 p2->next=NULL;

83 free(p1);

84 p1=p2;

85 }

86 else

87 {

88 printf("学号:");

89 scanf("%s",&p1->num);

90 printf("性别:");

91 scanf("%s",&p1->sex);


92 printf("籍贯:");

93 scanf("%s",&p1->from);

94 printf("政治面貌:");

95 scanf("%s",&p1->political);

96 printf("手机号:");

97 scanf("%s",&p1->phone);

98 printf("QQ号:");

99 scanf("%s",&p1->QQ);

100 printf("宿舍:");

101 scanf("%s",&p1->dorm);

102 printf("=====================================\\n");

103 p2=p1;

104 p1=(stu *)malloc(sizeof(stu));

105 if(p1!=NULL)

106 {

107 p2->next=p1;

108 }

109 }

110 }

111 return(p1->next);

112 }

113 }

114

115

116 stu * lookdata(stu *p1) //查看数据的函数

117 {

118 printf("\\n\\t\\t\\t☆☆☆显示数据☆☆☆\\n");

119 printf("----------------------------------------------------------------------\\n");

120 while(p1!=NULL)

121 {

122 printf("姓名:%s\\n",p1->name);

123 printf("学号:%s\\t",p1->num);

124 printf("性别:%s\\t",p1->sex);

125 printf("籍贯:%s\\t",p1->from);

126 printf("政治面貌:%s\\t",p1->political);

127 printf("手机号:%s\\t",p1->phone);

128 printf("QQ号:%s\\t",p1->QQ);

129 printf("宿舍:%s\\n",p1->dorm);

130 printf("======================================================================\\n");

131 p1=p1->next;

132 }

133 return p1;

134 }

135

136

137 void insert() //插入数据

138 {

139 int i;


140 char named[20];

141 stu *p1,*p2,*p3;

142 p1=head;

143 p3=(stu *)malloc(sizeof(stu));

144 p3->next=NULL;

145 printf("\\n\\t\\t\\t☆☆☆插入数据☆☆☆\\n");

146 printf("----------------------------------------------------------------------\\n");

147 printf("请输入插入者的资料:\\n");

148 input(p3);

149 printf("\\n插入选项\\n");

150 printf("1.首位置插入\\t2.尾位置插入\\t3.前插\\n");

151 printf("请输入你的选择:");

152 scanf("%d",&i);

153 switch(i)

154 {

155 case 1:p3->next=p1;

156 head=p3;

157 break;

158 case 2:while(p1->next!=NULL)

159 {

160 p2=p1;

161 p1=p1->next;

162 }

163 p1->next=p3;

164 break;

165 case 3:printf("请输入姓名(前插):");

166 scanf("%s",named);

167 while(strcmp(named,p1->name)!=0)

168 {

169 p2=p1;

170 p1=p1->next;

171 }

172 p2->next=p3;

173 p3->next=p1;

174 break;

175 }

176 printf("插入成功!\\n");

177 printf("======================================================================\\n");

178 return;

179 }

180

181 void deleted() //删除数据

182 {

183 stu *p1,*p2;

184 char Name[20]; //想要删除的人的姓名

185 printf("\\n\\t\\t\\t☆☆☆删除数据☆☆☆\\n");

186 printf("----------------------------------------------------------------------\\n");


187 printf("请输入要删除的姓名:");

188 scanf("%s",Name);

189 p1=head;

190 if(head==NULL)

191 {

192 printf("内存空空神马都没有!\\n");

193 printf("======================================================================\\n");

194 return;

195 }

196 if(strcmp(Name,p1->name)==0)

197 {

198 head=p1->next;

199 printf("删除成功!\\n");

200 printf("======================================================================\\n");

201 return;

202 }

203 while(p1!=NULL&&(strcmp(Name,p1->name)!=0))

204 {

205 p2=p1;

206 p1=p1->next;

207 }

208 if(p1==NULL)

209 {

210 printf("此人不存在!\\n");


211 printf("======================================================================\\n");

212 return;

213 }

214 if(p1->next!=NULL)

215 {

216 p1=p1->next;

217 p2->next=p1;

218 printf("删除成功!\\n");

219 printf("======================================================================\\n");

220 return;

221 }

222 else

223 {

224 p2->next=NULL;

225 printf("删除成功!\\n");

226 printf("======================================================================\\n");

227 return;

228 }

229 }

230

231

232 find(stu *p2) //通过姓名查找查看数据的函数

233 {

234 char name[20];


235 int b=0;

236 printf("\\n\\t\\t\\t☆☆☆查看数据☆☆☆\\n");

237 printf("----------------------------------------------------------------------\\n");

238 printf("请输入您想查找人的姓名:");

239 scanf("%s",name);

240 while(p2!=NULL)

241 {

242 if(strcmp(name,p2->name)==0)

243 {

244 printf("你要找到的数据\\n");

245 printf("姓名:%s\\n",p2->name);

246 printf("学号:%s\\t",p2->num);

247 printf("性别:%s\\t",p2->sex);

248 printf("籍贯:%s\\t",p2->from);

249 printf("政治面貌:%s\\t",p2->political);

250 printf("手机号:%s\\t",p2->phone);

251 printf("QQ号:%s\\t",p2->QQ);

252 printf("宿舍:%s\\n",p2->dorm);

253 printf("======================================================================\\n");

254 b=1;

255 }

256 p2=p2->next;

257 }


258 if(b==0)

259 {

260 printf("\\n您要查找的人不存在!\\n");

261 }

262 }

263

264

265 update(stu *p2) //通过姓名查找修改数据

266 {

267 char name[20];

268 int b=0,i;

269 printf("\\n\\t\\t\\t☆☆☆修改数据☆☆☆\\n");

270 printf("----------------------------------------------------------------------\\n");

271 printf("请输入将要修改人的姓名:");

272 scanf("%s",name);

273 while(p2!=NULL)

274 {

275 if(strcmp(name,p2->name)==0)

276 {

277 printf("该同学的基本信息\\n");

278 printf("姓名:%s\\n",p2->name);

279 printf("学号:%s\\t",p2->num);

280 printf("性别:%s\\t",p2->sex);


281 printf("籍贯:%s\\t",p2->from);

282 printf("政治面貌:%s\\t",p2->political);

283 printf("手机号:%s\\t",p2->phone);

284 printf("QQ号:%s\\t",p2->QQ);

285 printf("宿舍:%s\\n",p2->dorm);

286 printf("\\n请选择要修改的信息\\n");

287 printf("\\t1.姓名\\t2.学号\\t3.性别\\t4.籍贯\\n\\t5.政治面貌\\t6.手机号\\t7.QQ\\t8.宿舍\\n");

288 printf("\\n您的选择是(1~8):");

289 scanf("%d",&i);

290 printf("请输入修改之后的内容\\n");

291 switch(i)

292 {

293 case 1:printf("姓名:");

294 scanf("%s",&p2->name);

295 break;

296 case 2:printf("学号:");

297 scanf("%s",&p2->num);

298 break;

299 case 3:printf("性别:");

300 scanf("%s",&p2->sex);

301 break;

302 case 4:printf("籍贯:");


303 scanf("%s",&p2->from);

304 break;

305 case 5:printf("政治面貌:");

306 scanf("%s",&p2->political);

307 break;

308 case 6:printf("手机号:");

309 scanf("%s",&p2->phone);

310 break;

311 case 7:printf("QQ:");

312 scanf("%s",&p2->QQ);

313 break;

314 case 8:printf("宿舍:");

315 scanf("%d",&p2->dorm);

316 break;

317 }

318 printf("\\n修改成功!\\n");

319 printf("=========================================================================\\n");

320 b=1;

321 }

322 p2=p2->next;

323 }

324 if(b==0)

325 {

326 printf("没有找到该人的资料!\\n");


327 }

328 }

329

330

331 save(stu *p2) //保存数据

332 {

333 FILE *fp;

334 char file[15];

335 printf("\\n\\t\\t\\t☆☆☆保存数据☆☆☆\\n");

336 printf("----------------------------------------------------------------------\\n");

337 printf("输入文件名:");

338 scanf("%s",file);

339 if((fp=fopen(file,"w"))==NULL)

340 {

341 printf("cannot open this file\\n");

342 exit(0);

343 }

344 fprintf(fp,"姓名\\t学号\\t性别\\t籍贯\\t政治面貌\\t手机号\\tQQ号\\t宿舍\\n");

345 while(p2!=NULL)

346 {

347 fprintf(fp,"%s\\t",p2->name);

348 fprintf(fp,"%s\\t",p2->num);

349 fprintf(fp,"%s\\t",p2->sex);

350 fprintf(fp,"%s\\t",p2->from);

351 fprintf(fp,"%s\\t",p2->political);

352 fprintf(fp,"%s\\t",p2->phone);

353 fprintf(fp,"%s\\t",p2->QQ);

354 fprintf(fp,"%s\\n",p2->dorm);

355 p2=p2->next;

356 }

357 printf("\\n保存成功!\\n");

358 printf("======================================================================\\n");

359 fclose(fp);

360 }

361

362

363 void screen()

364 {

365 int i;

366 char s[251]={"欢迎使用由ZM制作班级通讯录管理系统,\\n\\n\\t\\t\\t本系统用于通讯录管理----排序,打印\\n\\n\\n\\t\\tWelcome to use produced by ZM class address book\\n\\n\\t\\t management system,sorting,printing"};

367

368 printf("\\n================================================================================\\n");

369 printf("\\n\\n\\n\\t\\t\\t");

370 for(i=0;s[i]!=NULL;i++)

371 {

372 Sleep(30);

373 printf("%c",s[i]);


374 }

375 printf("\\n\\n\\n\\n\\n\\n\\n\\n\\t\\t ~ Hi~ o(* ̄▽ ̄*)ブ~ ~ ~祝您旅途愉快~ ~\\n");

376 printf("================================================================================\\n");

377

378 }

379

380

381 void main()

382 {

383 int i;

384 system("color 4e");

385 screen();

386 Sleep(3000);

387 print();

388 while(1)

389 {

390 printf("请输入你的选择(1~9):");

391 loop:scanf("%d",&i);

392 if(i<1||i>9)

393 {

394 printf("输入有误,请在1~9中进行选择:");

395 goto loop;

396 }

397 switch(i)


398 {

399 case 1:

400 inputdata();

401 break;

402 case 2:

403 lookdata(head);

404 break;

405 case 3:

406 insert();

407 break;

408 case 4:

409 deleted();

410 break;

411 case 5:

412 find(head);

413 break;

414 case 6:

415 update(head);

416 break;

417 case 7:

418 save(head);

419 break;

420 case 8:

421 print();

422 break;


423 case 9:

424 exit(1);

425 break;

426 }

427 }

428 }/<windows.h>/<code>


分享到:


相關文章: