学生信息管理系统

来源:互联网 发布:sql合计多个列的值 编辑:程序博客网 时间:2024/06/05 02:18

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

之所以改名呢,不是因为觉得大家都写了成绩管理系统,更不是为了装逼,只是想换个名字。其实呢我这人很低调,我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