c语言实现学生通讯录

源码在下面,文只是我做完的感悟

世界在我的眼中如同一台巨大的、飞速运转的计算机,各种音乐、图像、语言就像不同的代码,文字也是其中一种。我希望自己是一个合格的程序员,在自己的有生之年能给这个世界输入足够多的信息,让你们看见更有趣的内容。
——程浩《站在两个世界的边缘》

2018年12月27日午14点左右,我终于在解决最后一个文件越界问题后完成了我简单的学生通讯录小程序的编写,数天来,心血终于在此刻有了回报,这棵“树”终于长大,此刻的我,此刻初长成的码农,可以卷起裤腿,迎满树韶光,做一回南柯一梦了,回望这数天,过程亦苦亦甜。

起初,当我以为我可以看懂一个程序的时候,下了一个纯c的贪吃蛇源码,用CB打开贪吃蛇源码,以为可以“一日看尽长安花”,结果落了个“此恨绵绵无绝期”。傻眼,看不懂,不明白,硬撑着看下去,才发现自己只能看懂一些基础的c代码,不语苦笑,自认为已经到达彼岸,才发现还没找到渡河的船。去图书馆寻觅原因,去网上查找答案,《C语言程序设计236例》,《C语言案例实训》,《C语言学习手册》,CSDN…一晚上的翻阅,发现我们并没有学c语言的复杂数据类型,数据存储。要学,我抱着不服输的狠劲,在图书馆“蹲点”了两天后,终于在图书馆的左底下角,找到了对我这十几天来帮助最大的一本书《c语言程序设计教程与项目实训》,我的链表学习,文件存储皆出去此,除此之外,还在实训篇中了解到了需求分析的思想,这本书的内容让我喜出望外。我现在有了“船木头”位置的大致方向了,该去“从里寻他千百度”了。

又花费数天学了复杂数据类型和数据存储,收集完了“船的材料”,该开始做“船”了,除了codeblocks还有什么工具来做“船”?再一次在百度和图书馆处寻得答案,CB,TC,VC,VS,既然还未具体敲定编译器,那就安上大部分。现在的问题是要做个什么程序?才当木匠的人总想在一开始就做个渡轮,我自然也不例外,于是我一开始想的是做个二合一游戏吧,想法是在网上找到2个游戏的源码后改一下,把它们改成头文件,再直接调用即可,简单又霸气,但是我又觉得这样不是自己写的,毫无成就感,于是直接pass了这个想法。继续“问道”,当我回过头来看其他的程序书时,我发现了一个令人有趣又迷惑的事情,有一些程序的源码在其他编译器上并不能运行,甚至有一些库文件根本不能使用,比如要我很是头大的graphics.h库,这个库是仅在TC里才有的C语言里的绘图库,做C语言游戏程序时它的作用很大,但是TC太老以及graphics.h库已经很少有人用了,当然如果要在其他编译器上使用这个库也是可以的,下载这个库,并找到指定路径就行。用还是不用这个仅躲在TC庇护下的这个“腼腆孩子”呢?由于这个问题,我不得不暂缓进度去寻找相应答案,更加了解了之后,我已经不打算用了但心里依旧没下定决心,去问了老师后,才彻底打消了用这个库的念头,并且我还选择了一件称手的“工具”,vs2017。最重要的是,对程序的构想也出来了—就做一个简单的学生通讯录。正好会用到我学了复杂数据类型和文件存储了,大致构想了7个功能,建立,读取,删除,浏览,查找,插入,存储。值得高兴的是,这几个构想在接下来“造船”的过程中都一一实现了。

“小木船”终于完成,关掉VS的sdl,开始运行,开始“渡河”,错误,警告的“潮水”直接把我的“小木船”拍回了岸。“哈哈,没事,该学如何debug了”,“身经百战”的我自嘲道,自己按照网上vs调试的教程开始对我的程序进行调试,debug的几天自己的状态可谓是是夜半怅然入梦,寻bug日出到迟暮了。终明了“程序员的生活就是不停的改代码了”这一含义了。

当我解决了我最后一个文件访问越界问题时,狂喜是对那一刻的我的真实写照,信工人的最大快乐大致如此吧,什么将会成为我日后向往的大学生活呢?仔细想了想,码下数字:

梧桐大道,图书馆旁,代码与文字相伴,滑板与信纸前行,岁月打磨落尘炭笔,风月难扯,离合不骚。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define LEN sizeof(struct scorenode)//内存对齐
#define DEBUG
struct scorenode
{
	int number;/*学号*/
	char name[10];/*姓名*/
	char dianhua[20];/*电话情况*/
	struct scorenode *next;
};
typedef struct scorenode score;
int n, k;/*n,k为全局变量*/
void menu();
score *creat(void);
score *load(score *head);
score *search(score *head);
score *del(score *head);
score *add(score *head, score *stu);
void print(score *head);
save(score *p1);
/*==============================================================================================*/
/*=========================创建链表,此函数带回一个指向链表头的指针=============================*/
score *creat(void)
{

	score *head=NULL;
	score *p1, *p2, *p3, *max;
	int i, j;
	char t[50];
	n = 0;
	p1 = p2 = p3 = (score *)malloc(LEN);/*head=p3; 开辟一个新单元*/
	printf("请输入学生的信息,输出 0 退出!\n");
repeat1: printf("请输入学生的学号:");/*输入学号,学号应大于0*/
	scanf("%d", &p1->number);
	while (p1->number < 0)
	{
		getchar();
		printf("输入错误,请重新输入:"
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值