C语言写学籍管理系统所遇到的问题

这是我的第一个项目,就把这次项目所遇到的问题都记录总结下来吧。(需要源码私信)

目录

1.printf("****** \t ******");

2. 简洁头函数

3.所用到的一些新的函数

1)库函数<stdlib.h>

1)system("pause")

2)system("cls")


1.printf("****** \t ******");

在学籍管理系统的菜单书写时,为了对齐我们可以 使用\t进行对齐 ,根据我查到的资料发现\t有着他自己的性质,并不是说无论间距多少个空格他都能自动补齐。而是逢八补齐,对于相距空格数小于八时可以达到自动补齐的效果,否则只能是八的倍数。                                                                  借用一下一个博主的一句话:“因此,\t的空格数应为|x (含有的字符数) - 8| % 8,逢8补齐。博主那篇\t文章传送门

2. 简洁头函数

由于是创建项目,我们会引用到很多头函数,例如我现在就已经用到了这些函数头。

#include <stdio.h>

#include<string.h>

#include<conio.h>

#include<stdlib.h>                       

同样,我在主函数main(){  }里又定义一个个新的函数,分别构成着管理系统的菜单功能。          我们可以把我们所用到的这些函数名称写道函数头(加入命名为:tou.h)里,那么我们在源文件只需要引用#include"tou.h"就可以省去这些头函数和函数声明,在主函数后面进行定义就可以了。

3.所用到的一些新的函数

1    )库函数<stdlib.h>中

对于主菜单显示后,我使用了一个while循环:代码如下

while (1) {
		Welcome();//显示主菜单
		char ch= _getch();												
//引用_ getch函数(来自conio.h)特点是不必输入回车,自动就可以识别		
		switch (ch){
			case '1':InputStudent();	break;		//录入学生信息
			case '2':PrintStudent();	break;		//打印学生信息
			case '3':			break;		//保存学生信息
			case '4':			break;		//读取学生信息
			case '5':			break;		//统计学生人数
			case '6':			break;		//查找学生信息
			case '7':			break;		//修改学生信息
			case '8':			break;		//删除学生信息
			case '9':			break;		//退出系统
			default :printf("没有这个功能"); break;
    	}
	}

这段代码是我的代码的骨架。

其中有两个system函数特别好用,它们分别是:

1)system("pause")

这个函数的作用是:让我在按一次回车(录入完信息)程序不会立刻停止,而是会暂停(等待第二次回车),第二次回车程序才会正常运行(两次回车才相当于以前的一次回车)。

因为我在录入学生信息后我要按回车,而如果没有这个函数的话,那么由于while函数的作用,程序会立即再出现一个菜单那么就把我前面的信息给隐藏了,会让使用者感觉风中凌乱,所以为了提高体验感,我们可以使用这个函数。在我们使用这个函数后我们按一下回车程序不会立即结束,而是会先暂停,再按一下回车程序才会停止。

2)system("cls")

这个函数的作用是:清除小黑框(终端)上的所有东西,进行下一步程序(看着更加美观)。

接着上面的说,因为while(1){}所以录入学生信息的程序结束后,会再次出现一个主菜单,(主菜单还比较长。。。。)为了提升体验感,我们使用system("cls"),将以前的程序全部清除掉,(在一个功能结束后)再次出现菜单(由于while),让用户进行再次操作。

2    )库函数<conio.h>中                                                                      1)getch()

这个函数的作用是我们输入单个字符,不用按回车就能被系统读取,增加体验感。

//用法如下:
          char ch;
//或者 int ch;
然后ch=getch();

3    )文件函数

1)fopen()

这个函数的作用是打开文件,具体用法是

 fopen("文件地址","操作类型")

对于操作类型有如下几种类型:

"r"          打开一个文本文件,文件必须存在,只允许读
"r+"        打开一个文本文件,文件必须存在,允许读写
"rb"        打开一个二进制文件,文件必须存在,只允许读
"rb+"      打开一个二进制文件,文件必须存在,允许读写
"w"         新建一个文本文件,已存在的文件将内容清空,只允许写
"w+"       新建一个文本文件,已存在的文件将内容清空,允许读写
"wb"       新建一个二进制文件,已存在的文件将内容清空,只允许写
"wb+"     新建一个二进制文件,已存在的文件将内容清空,允许读写
"a"          打开或新建一个文本文件,只允许在文件末尾追写
"a+"        打开或新建一个文本文件,可以读,但只允许在文件末尾追写
"ab"        打开或新建一个二进制文件,只允许在文件末尾追写
"ab+"      打开或新建一个二进制文件,可以读,但只允许在文件末尾追写

我的代码为FILE *fp=fopen("C:\\StudentmanagerDATE.dat","w");                                                  如果打开失败的情况下,指针fp会返回一个NULL。

不要忘记使用fopen后要使用fclose。

2)fwrite()

我的项目代码: fwrite(&p->stu,1,sizeof(Student),fp);

函数原型是:size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)

ptr -- 这是指向要被写入的元素数组的指针,是获取数据的地址

size -- 这是要被写入的每个元素的大小,以字节为单位。

nmemb -- 这是元素的个数,每个元素的大小为 size 字节。

stream -- 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输出流,是目标文件的指针

3)fclose()

函数原型为:    int fclose(FILE * stream);

stream -- 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输出流,是目标文件的指针

fclose()与fopen()是相互照应的,通常我们使用过fopen后使用fcloes进行关闭文件,否则会很麻烦,例如对文件进行更改没有被记录。

                                                                                                                        -------要原码私信

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Eilic.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值