C 语 言 文 件
一.代码
1. 主函数;
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
struct student {
char sID[10];
char cla[50];
char gender[10];
char name[20];
int scoreLinea;
}s[70];
//定义一个结构题数组用来存放学生信息
void begin(int n);//用来展示首页面的一个自定义函数
void sever(int m);//用来展示功能界面的自定义函数
int main()
{
begin(1);//调用首页面函数
sever(1);//调用功能菜单页面函数
int sever;
printf("请选择您需要的服务(*^▽^*):
");
scanf("%d", &sever);
system("cls");//清屏操作,使得程序能简洁的进入下一个页面
system("color f4");//设计背景框颜色为白色,字体颜色为红色
int n = 1, i;
char name1[100][20], name2[100][20];
FILE* fp;//定义一个文件指针
switch (sever) {
case 1:printf("
欢迎使用添加服务!
");
printf("
请输入您需要添加的人数:
");
scanf("%d", &n);
printf(" 依次输入需要添加到学生姓名:
");
printf("
再分别输入该学生信息:
");
printf(" 姓名 班级 学号 姓名 性别 线代成绩
");
for (i = 0;i < n;i++) {
printf(" ");
scanf("%s", &name1[i]);
strcpy_s(name2[i], name1[i]);
strcat_s(name1[i], ".txt");//使用strcat使得能够生成“.txt”文件
if (fp = fopen(name1[i], "w+")) {
scanf("%s", &s[i].cla);printf(" ");
scanf("%s", &s[i].sID);printf(" ");
scanf("%s", &s[i].name);printf(" ");
scanf("%s", &s[i].gender);printf(" ");
scanf("%d", &s[i].scoreLinea);//printf("
");
}//将数据按顺序依次输入
else {
printf("Sorry!文件打开时遇到错误
");
exit(0);
}
fprintf(fp, "%s %s %s %s %d
", s[i].cla, s[i].sID, s[i].name, s[i].gender, s[i].scoreLinea);
fclose(fp);//记得一定要关闭文件,否则所输入的东西将会存留在缓冲区
}
break;
case 2:printf("
欢迎使用查询服务!
");
printf("
请输入您需要查询的人数:
");
scanf_s("%d", &n);
printf(" 班级 学号 姓名 性别 线代成绩
");
for (i = 0;i < n;i++) {
printf(" 班级:%s 学号:%s 姓名:%s 性别:%s 线代成绩:%d
",s[i].cla,s[i].sID,s[i].name,s[i].gender,s[i].scoreLinea);
}
printf("
");
system("pause");
break;
default: break;
}
return 0;
}
2. begin函数;
void begin(int n){
system("color f4");
printf("
");
printf(" **et**----------------------------------------------**et**
");
printf(" ****** | 学生信息管理系统 | ******
");
printf(" ******----------------------------------------------******
");
printf(" ****** ******
");
printf(" ****** (*^▽^*)欢迎您的使用(*^▽^*) ******
");
printf(" ****** 本系统祝您期末考科科90+ ******
");
printf(" ****** ******
");
printf(" **et**----------------------------------------------**et**
");
printf("
");
system("date");//给使用者显示当前服务器的日期(yyyy/mm/dd)
system("time");//给使用者显示当前服务器的时间(hh:mm)
system("pause");//实现窗口冻结,使得使用者能够拥有更长时间来仔细阅读
}
3. sever函数;
void sever(int m) {
system("color f4");
system("cls");//实现清屏操作
printf("
");
printf(" **et**----------------------------------------------**et**
");
printf(" ****** | 功能菜单 | ******
");
printf(" ******----------------------------------------------******
");
printf(" ****** ******
");
printf(" ****** [1]添加学生信息 ******
");
printf(" ****** [2]查询学生信息 ******
");
printf(" ****** [0] 退出系统 ******
");
printf(" ****** ******
");
printf(" **et**----------------------------------------------**et**
");
printf("
");
system("pause");//实现窗口冻结
}
二.程序运行截图
1. 首页界面(begin函数)
2. 菜单页面(sever函数)
3. 添加学生信息(完成任务一与任务二)
4. 查询学生信息(完成任务三)
5. 退出程序
四. system()函数(完成任务四)
-
system("PAUSE")可以实现冻结屏幕,便于观察程序的执行结果;
-
system("CLS")可以实现清屏操作;
-
system("DATE")可以显示或设置日期;
-
system("TIME")可以显示或设置系统时间;
-
system("color f4"); 其中color后面的f是背景色代号,4是前景色代号;
五. 总结归纳
- 刚要开始准备些博客园作业时,发现自己文件的知识原来是如此不熟悉,虽然贺老师上课讲过,但是我忘记得挺快的,所以我之后有去看mooc上翁凯老师的视频以及阅读,了解了书本上关于文件的知识。
- 做出这个其实还蛮有成就感的,虽然班助说的链表和二进制文本我都不了解。我的程序里面多数使用的都是普普通通的一些操作,正常的输入输出,switch-case分支结构语句,if-else语句和for循环语句,程序还是很单调的。
- 这次的程序我学到了蛮多,基本的文件操作了解了,以及基本对结构体数组的学习,同时get了system函数的有意思的地方。
- 缓冲区:缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区缓冲区。缓冲器为暂时置放输出或输入资料的内存。
- EOF: 在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。