同学通讯录系统(完整项目过程-迭代式开发)

小项目集锦博客目录(不断更新,总结)

本次项目参考 《C 程序设计与项目实践》这本书

对于初学者建议看本书, 学起来比较感兴趣, 人家都说兴趣是最好的老师。

这本书打破了传统的教学模式, 以各个小项目来讲解知识点。

 

同学通讯录系统项目开发步骤:


第一次迭代:完成系统框架的搭建。

第二次迭代:用数组实现同学通信录系统。

第三次迭代:用数组和文件实现同学通讯录系统。

第四次迭代:用链表和文件实现同学通讯录系统。





整个系统功能:

1.增加同学 2.查找同学 3.修改同学 4.删除同学 5.退出系统。

 

第一次迭代:版本v1.0  功能:大件系统框架

          codehttps://github.com/lujinjianst/myNCCL/blob/master/practices/Alumni-management-information-system/version1.0.c

运行结果:

====Alumnni management information system
 1. Increase students information
 2. Find students information
 3. Modify students information
 4. Delete students information
 0. Quit system
=============================================
Please input your choice(0~4):
1
is in the process of the first 1 a choice
deal with increseing......


====Alumnni management information system
 1. Increase students information
 2. Find students information
 3. Modify students information
 4. Delete students information
 0. Quit system
=============================================
Please input your choice(0~4):
2
is in the process of the first 2 a choice
deal with querying......


====Alumnni management information system
 1. Increase students information
 2. Find students information
 3. Modify students information
 4. Delete students information
 0. Quit system
=============================================
Please input your choice(0~4):
3
is in the process of the first 3 a choice
deal with modifying......


====Alumnni management information system
 1. Increase students information
 2. Find students information
 3. Modify students information
 4. Delete students information
 0. Quit system
=============================================
Please input your choice(0~4):
4
is in the process of the first 4 a choice
deal with deleteing......

 

====Alumnni management information system
 1. Increase students information
 2. Find students information
 3. Modify students information
 4. Delete students information
 0. Quit system
=============================================
Please input your choice(0~4):
0
is in the process of the first 0 a choice

 Welcome to use this system again, goodbye!

第二次迭代:版本v2.0 功能: 用数组存储同学录信息

          code:https://github.com/lujinjianst/myNCCL/blob/master/practices/Alumni-management-information-system/version2.0.c

运行结果:

====Alumnni management information system
 1. Increase students information
 2. Find students information
 3. Modify students information
 4. Delete students information
 0. Quit system
=============================================
Please input your choice(0~4):
1
is in the process of the first 1 a choice
deal with increseing......
name:a
address:b
telephone:1234
Uint:c
Increase student success

 

====Alumnni management information system
 1. Increase students information
 2. Find students information
 3. Modify students information
 4. Delete students information
 0. Quit system
=============================================
Please input your choice(0~4):
2
is in the process of the first 2 a choice
deal with querying......
Please input to change the name of the students:a
You find classmate information below:
name:a address:b telephone:1234 work unit:c 

 

====Alumnni management information system
 1. Increase students information
 2. Find students information
 3. Modify students information
 4. Delete students information
 0. Quit system
=============================================
Please input your choice(0~4):
2
is in the process of the first 2 a choice
deal with querying......
Please input to change the name of the students:a
You find classmate information below:
name:a address:b telephone:1234 work unit:c 

 

====Alumnni management information system
 1. Increase students information
 2. Find students information
 3. Modify students information
 4. Delete students information
 0. Quit system
=============================================
Please input your choice(0~4):
3
is in the process of the first 3 a choice
deal with modifying......
Please input to change the name of the students:a
You find classmate information below:
name:a address:b telephone:1234 work unit:c 
 Please modify:
name:aa
address:bb
telephone:234
Uint:cc
Name for a classmates information has been modified successfully

 

====Alumnni management information system
 1. Increase students information
 2. Find students information
 3. Modify students information
 4. Delete students information
 0. Quit system
=============================================
Please input your choice(0~4):
4
is in the process of the first 4 a choice
deal with deleteing......
Please input to be deleted the name of the students:aa
Name for aa classmates information has been deleted successfully


====Alumnni management information system
 1. Increase students information
 2. Find students information
 3. Modify students information
 4. Delete students information
 0. Quit system
=============================================
Please input your choice(0~4):
2
is in the process of the first 2 a choice
deal with querying......
Please input to change the name of the students:aa
I'm sorry, name for aa classmates haven't login in the alumni


====Alumnni management information system
 1. Increase students information
 2. Find students information
 3. Modify students information
 4. Delete students information
 0. Quit system
=============================================
Please input your choice(0~4):
0
is in the process of the first 0 a choice

 Welcome to use this system again, goodbye!

第二次迭代增量1:增加了do_list_all 函数 列出所有同学信息

          code:https://github.com/lujinjianst/myNCCL/blob/master/practices/Alumni-management-information-system/version2.1.c

运行结果;

====Alumnni management information system
 1. Increase students information
 2. Find students information
 3. Modify students information
 4. Delete students information
 5. List all students information
 0. Quit system
=============================================
Please input your choice(0~5):
1
is in the process of the first 1 a choice
deal with increseing......
name:a
address:b
telephone:12
Uint:c
Increase student success


====Alumnni management information system
 1. Increase students information
 2. Find students information
 3. Modify students information
 4. Delete students information
 5. List all students information
 0. Quit system
=============================================
Please input your choice(0~5):
5
is in the process of the first 5 a choice
The classmate alumni have 1 student information:
===============================================================
name:a address:b telephone:12 work unit:c 
===============================================================

第二次迭代增量2:增加了初始化init

code:https://github.com/lujinjianst/myNCCL/blob/master/practices/Alumni-management-information-system/version2.2.c

 

====Alumnni management information system
 1. Increase students information
 2. Find students information
 3. Modify students information
 4. Delete students information
 5. List all students information
 0. Quit system
=============================================
Please input your choice(0~5):
2
is in the process of the first 2 a choice
deal with querying......
Please input to change the name of the students:a
You find classmate information below:
name:a address:HLJ telephone:0452-12345678 work unit:software engineering 

 
====Alumnni management information system
 1. Increase students information
 2. Find students information
 3. Modify students information
 4. Delete students information
 5. List all students information
 0. Quit system
=============================================
Please input your choice(0~5):
5
is in the process of the first 5 a choice
The classmate alumni have 2 student information:
===============================================================
name:a address:HLJ telephone:0452-12345678 work unit:software engineering 
===============================================================
name:b address:SH telephone:0452-24244355 work unit:computer 
===============================================================

 

****相信大家从前面几个版本会有疑惑, 关闭终端后数据消失了, 那做个有什么意义呢? 当你有这样的疑惑时说明你认真去做了,接下来这个版本将解决这个问题, 将文件IO操作引入进来。

第三次迭代: v3.0  功能:用文件存储同学录信息(完整的增,删,改,查功能)

得先touch 一个文件tx1.txt,否则有段错误。

code:https://github.com/lujinjianst/myNCCL/blob/master/practices/Alumni-management-information-system/version3.0.c

 

*****大家现在看起来这个代码已经没什么问题 了,其实不然, 因为数组的局限性, 数组大小固定了, 不能根据需要而动态增长, 所以现在以动态链表的形式实现在内存中的存储。

第四次迭代: 用文件存储同学录信息(链表实现)

遇到个段错误 在init函数倒数第四行tail->next = NULL 应该改成p->next = NULL。

code:https://github.com/lujinjianst/myNCCL/blob/master/practices/Alumni-management-information-system/version4.0.c

 

 

为了方便看我把框架代码放在这里:

#include <stdio.h>
#include <stdlib.h>

#define INSERT 1
#define QUERY  2
#define UPDATE 3
#define DELETE 4
#define QUIT   0 

void show_menu();
void do_choice(int);
int get_choice();
void do_quit();
void do_insert();
void do_update();
void do_query();
void do_delete();

int main(int argc, const char *argv[])
{
	int choice;

	while (1)
	{
		//1.display the main menu
		show_menu();
		//2.retrieve the user opition
		choice = get_choice();
		//3.According to the function of the corresponding choice of implementation
		do_choice(choice);
		
		system("pause>nul");
	}
	return 0;
}

void show_menu()
{
	system("clear");
	printf("====Alumnni management information system\n");
	printf("\t1. Increase students information\n");
	printf("\t2. Find students information\n");
	printf("\t3. Modify students information\n");
	printf("\t4. Delete students information\n");
	printf("\t0. Quit system\n");
	printf("=============================================\n");
	printf("Please input your choice(0~4):\n");
}

void do_quit()
{
	printf("\n Welcome to use this system again, goodbye!\n");
	exit(0);
}

void do_insert()
{
	printf("deal with increseing......\n");
}

void do_update()
{
	printf("deal with modifying......\n");
}

void do_query()
{
	printf("deal with querying......\n");
}

void do_delete()
{
	printf("deal with deleteing......\n");
}

int get_choice()
{
	int choice;

	scanf("%d", &choice);

	return choice;
}

void do_choice(int choice)
{
	printf("is in the process of the first %d a choice \n", choice);

	switch (choice)
	{
		case INSERT :
			do_insert();
			break;
		case QUERY:
			do_query();
			break;
		case UPDATE:
			do_update();
			break;
		case DELETE:
			do_delete();
			break;
		case QUIT:
			do_quit();
			break;
		default:
			break;
	}
}

 
 
 /* version2.0*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define INSERT 1
#define QUERY  2
#define UPDATE 3
#define DELETE 4
#define QUIT   0 

//新增加的机构体来存放同学信息
typedef struct
{
	char name[100];		//students' name
	char addr[100];		//students' address
	char phone[100];	//students' telephone
	char workfor[100];	//work unit
} TX;

TX txl[100];	// An array of alumni record, Up to one hundred students
int last = 0;	//The current number of alumni

void show_menu();
void do_choice(int);
int get_choice();
void do_quit();
void do_insert();
void do_update();
void do_query();
void do_delete();

int main(int argc, const char *argv[])
{
	int choice;

	while (1)
	{
		//1.display the main menu
		show_menu();
		//2.retrieve the user opition
		choice = get_choice();
		//3.According to the function of the corresponding choice of implementation
		do_choice(choice);
		//Sleep 5 sec, let the user see clearly
		sleep(3);	
	//	system("pause>nul");
	}
	return 0;
}

void show_menu()
{
	system("clear");
	printf("====Alumnni management information system\n");
	printf("\t1. Increase students information\n");
	printf("\t2. Find students information\n");
	printf("\t3. Modify students information\n");
	printf("\t4. Delete students information\n");
	printf("\t0. Quit system\n");
	printf("=============================================\n");
	printf("Please input your choice(0~4):\n");
}

void do_quit()
{
	printf("\n Welcome to use this system again, goodbye!\n");
	exit(0);
}

void do_insert()
{
	printf("deal with increseing......\n");
	printf("name:");
	scanf("%s", &txl[last].name);
	printf("address:");
	scanf("%s", &txl[last].addr);
	printf("telephone:");
	scanf("%s", &txl[last].phone);
	printf("Uint:");
	scanf("%s", &txl[last].workfor);
	printf("Increase student success\n");
	last++; // increase a student success , increased 1.
}

void do_update()
{
	char tname[100];	 //Temporary storage input name.
	int i;
	int find = 0; 		 //Whether the student find.	

	printf("deal with modifying......\n");
	printf("Please input to change the name of the students:");
	scanf("%s", &tname);

	for (i = 0; i < last && !find; i++)
	{
		if (!strcmp(tname, txl[i].name))
		{
			find = 1;
			printf("You find classmate information below:\n");
			printf("name:%s\t", txl[i].name);
			printf("address:%s\t", txl[i].addr);
			printf("telephone:%s\t", txl[i].phone);
			printf("work unit:%s\t", txl[i].workfor);

			printf("\n Please modify:\n");
			printf("name:");
			scanf("%s", &txl[i].name);
			printf("address:");
			scanf("%s", &txl[i].addr);
			printf("telephone:");
			scanf("%s", &txl[i].phone);
			printf("Uint:");
			scanf("%s", &txl[i].workfor);

		}
		
	}

	if (!find)
	{
		printf("I'm sorry, name for %s classmates haven't login in the alumni\n", tname);
	}

	else
	{
		printf("Name for %s classmates information has been modified successfully\n", tname);
	}
}

void do_query()
{
	char tname[100];	 //Temporary storage input name.
	int i;
	int find = 0; 		 //Whether the student find.	

	printf("deal with querying......\n");
	printf("Please input to change the name of the students:");
	scanf("%s", &tname);

	for (i = 0; i < last && !find; i++)
	{
		if (!strcmp(tname, txl[i].name))
		{
			find = 1;
			printf("You find classmate information below:\n");
			printf("name:%s\t", txl[i].name);
			printf("address:%s\t", txl[i].addr);
			printf("telephone:%s\t", txl[i].phone);
			printf("work unit:%s\t\n", txl[i].workfor);
		}
		
	}

	if (!find)
	{
		printf("I'm sorry, name for %s classmates haven't login in the alumni\n", tname);
	}
}

void do_delete()
{
	char tname[100];	 //Temporary storage to delete students' name.
	int i;
	int find = 0; 		 //Whether the student find.	
	int index; 		 //Record to be deleted in students of the array index

	printf("deal with deleteing......\n");
	printf("Please input to be deleted the name of the students:");
	scanf("%s", &tname);

	for (i = 0; i < last && !find; i++)
	{
		if (!strcmp(tname, txl[i].name))
		{
			find = 1;
			index = i; 	//Storage to delete classmate subcript position
			break;
		}
		
	}

	if (!find)
	{
		printf("I'm sorry, name for %s classmates haven't login in the alumni\n", tname);
	}
	else
	{
		for (i = index; i <= last; i++)
		{
			strcpy(txl[i].name, txl[i+1].name);
			strcpy(txl[i].addr, txl[i+1].addr);
			strcpy(txl[i].phone, txl[i+1].phone);
			strcpy(txl[i].workfor, txl[i+1].workfor);
		}
		printf("Name for %s classmates information has been deleted successfully\n", tname);
	}
}

int get_choice()
{
	int choice;

	scanf("%d", &choice);

	return choice;
}

void do_choice(int choice)
{
	printf("is in the process of the first %d a choice \n", choice);

	switch (choice)
	{
		case INSERT :
			do_insert();
			break;
		case QUERY:
			do_query();
			break;
		case UPDATE:
			do_update();
			break;
		case DELETE:
			do_delete();
			break;
		case QUIT:
			do_quit();
			break;
		default:
			break;
	}
}














评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

皓月峰

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

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

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

打赏作者

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

抵扣说明:

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

余额充值