学生信息管理系统

啊哈!今天来介绍一下成绩管理系统的升级版——学生信息管理系统。

之所以改名呢,不是因为觉得大家都写了成绩管理系统,更不是为了装逼,只是想换个名字。其实呢我这人很低调,我C语言能写出好多代码,但是我低调我不说。我的指针数组多厉害,因为我低调所以我不说……(此处省略……)

咳咳,还是说正事吧,一扯就收不住。

这次的成绩管理程序比较长,但仔细分析下,主要分为账号密码,成绩管理,通讯录三部分。

这篇博文里给大家介绍通讯录部分,相信以各位大兄弟大姐们比我略低的智商是可以举一反三,理解另外两部分的(我越来越不想听这大傻逼说话了,唉~)。


一,先来看主程序


1.我使用建立txt文件储存账号密码信息(在这我有个想法,就是让账号密码与用户的信息匹配,然后登陆后便能直接提供给用户之前所存数据),用户可以使用之前所建账户密码,或者新建。

 

2.在每次小片段进行后我都会用system("CLS");进行清屏,主要为了用户界面更加友好。

 

3.登陆之后,随即开始重头戏的上映,我用了几重do while循环switch来实现用户持续地选择操作,配合上各类函数,这个程序便算是跑完了。

 

4.有点需要注意,我在有文件读写操作的程序片段开始时都有对文件的初始化,这是必须的,因为你只有找到对应文件才能继续后续操作。(逛街之前需要找到钱包,之后你才能使用钞票,没毛病)


二,看下contactinit()函数


这个函数是对通讯录.txt的初始化,文件存在便读取信息,注意到我在其中有段注释,allCount2 --;//因为最后输入时,会将换行符记为一行,故删除这是因为,在读取时因为你文件中每段信息会有一个换行符,在最后的换行会被当做一行给allCount加上,当然用程序读取和写入时没任何毛病,可如果你直接在外存文件中写入东西的话,很有可能程序就不能正常读写了。

/*函数功能:联系方式初始化*/
void contactinit()
{
	
	FILE *fp;
	fp = fopen(adress2, "r");
	allCount2 = 0;
	if(fp != NULL){
		while(!feof(fp)){
			fscanf(fp,"%s%s%s%s",stuc[allCount2].studentID,
								stuc[allCount2].name,
								stuc[allCount2].tel,
								stuc[allCount2].qq);//读取联系人信息
			allCount2 ++;
		}
		allCount2 --;//因为最后输入时,会将换行符记为一行,故删除
	}
	else
	{
		fp = fopen(adress2, "w");//创建联系方式
	}
	fclose(fp);
	printf("学生联系方式.txt初始化成功!\n");
}

三,看实现各个不同功能的函数

这里需要注意一下,函数的功能最好能够单一一点,别问为什么,自己体悟(因为你不知道,哈哈,你他妈是想要把我笑死然后继承老子的遗产吗?……)。

我简单给大家说下我的deleteContact()函数,在这我采用的方法是盖过那个需要删除的词条,然后改动后面数组的下标(其实还有种效率更高的,就是创建一个新的数组与值匹配,然后给需要删除的词条对应数打上标记,在读写时直接越过这个数就好)。

再看下我的searchContact()函数,我访问了所有词条,寻找那个与值匹配的(一起开黑不?……惊恐)词条,然后根据对应下标读出所有信息。但总感觉这样效率太低,应该有更好的优化,待我后期考虑考虑。点击打开链接

/*函数功能:删除联系人*/
void deleteContact()
{
	FILE *fp;
	int flag;
	int i,j;
	char studentID[20];
	lookContact();
	printf("请输入要删除学生的学号:\n");
	scanf("%s", studentID);
	printf("确定删除?删除后将无法恢复!1.确定0.取消\n");
	scanf("%d", &flag);
	if(flag)
	{
		for(i = 0; i < allCount2; i ++)
		{
			if(strcmp(stuc[i].studentID,studentID) == 0)
			break;
		}
		if(i == allCount2)
		{
			allCount2 --;
		}
		else
		{
			for (j = i; j < allCount2 - 1; j++)
			{
				stuc[j] = stuc[j + 1];
			}
			allCount2 --;
		}
		fp = fopen(adress2, "w");
		if (fp != NULL)
		{
			for(i = 0; i < allCount2; i ++)
			{
				fprintf(fp,"%s\t%s\t%s\t%s\r\n",stuc[i].studentID,
												stuc[i].name,
												stuc[i].tel,
												stuc[i].qq);
			}
		}
	fclose(fp);
		printf("删除成功!");
	}
}

/*函数功能:查找联系人*/
void searchContact()
{
	char searchID[10];
	int i;
	int flag = 0;
	printf("请输入要查找的学生学号:\n");  
	scanf("%s",searchID);  
	for (i = 0; i < allCount2; i ++)
	{  
		if (strcmp(searchID,stuc[i].studentID) == 0)
		{  
			printf("您查找的联系人为:\n");  
			printf("%s\t%s\t%s\t%s\n",stuc[i].studentID,
									stuc[i].name,
									stuc[i].tel,
									stuc[i].qq);   
			flag = 1;
			break;

		}
	}
	if(flag == 0)
	{
		printf("该学生不在联系方式内!\n");
	}
}

四,介绍下我写这个程序的感受

初期基本什么都不会,然后就用到什么查什么,上QQ搜,问同学,问老师……偶尔饭没吃,偶尔熬夜到四点,偶尔在网上被人喷……但这些都不重要,重要的是真的学到了很多。其它也不多说(你说的还不多?额……)有点大家要注意,千万别经常熬夜,经常熬夜有三大弊端:第一,记忆力越来越差;第二,数数经常数错;第五,记忆力越来越差……(这句话是你从网上抄的,鄙视。我……我骄傲,咋滴)

给一发下大家这段程序的链接:http://pan.baidu.com/s/1skOmwXZ

皮皮虾,我们走,得儿,驾...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值