C语言写学生成绩管理系统,利用结构体数组写的
主要包括:1、增删查改四个最基本的功能,2、利用冒泡排序按总分从大到小的顺序写的排序,3、文件保存,读取(若在文件中保存的有学生成绩,有学号重复的能够显示重复)
一、头文件
#include<stdio.h>
#include<stdlib.h>//用于数组,清屏功能
#include<string.h>
#include<conio.h>
#include<windows.h>
#define N 1000
#define LNE 20
二、函数(方便后面的调用,可随意调用,不用在意先后位置)
void initData();
void writeData();
void denglu();
void establish();
void caidan();
int panduan();
void keyDown();
void chance();
void chance2();
void insert_student();//1、添加学生信息
int find1(struct Student student[], int num);
void isIdSame(int x);
void search();//1、查找学生信息
int findIndex(int num);
void showone(struct Student stu);
void sortTotal();//3、按总分排序(冒泡排序)
void showAll();
void del();//4、删除学生信息
void updata();//5、修改学生信息
void inserInfo();
void inserCurrentInfo(int site);
void con();
三、结构体数组
struct Student {
int num;
char name[20];
char banji[20];
int math;
int english;
int computer;
int sum;
int total;
} student[N], student1;
四、注册登录账号(可利用预留手机号来找回密码)
void establish() //创建账号,密码//修改密码
{
char telephone[LNE];
char telephone1[LNE];
char password[LNE];
char password1[LNE];
char confirmation[LNE];
int tryagain = 0;
char account[LNE];
char account1[LNE];
char confirmationaccount[LNE];
do{
printf("---------------欢迎来到学生成绩管理系统--------------\n");
printf("-----------------请创建账号-----------------\n");
printf("\t\t请输入你的账号\n");
scanf("%s",account);
printf("\t\t请确认你的账号\n");
scanf("%s",confirmationaccount);
}
while(strcmp(account,confirmationaccount));
printf("账号创建成功!你的账号为%s\n",account);
printf("请输入您的手机号码:\n");
scanf("%s",telephone);
printf("按任意键继续---\n");
getch();
system("cls");
do{
printf("------------------请创建密码-----------------\n");
printf("请输入你的密码\n");
scanf("%s",password);
printf("请确认你的密码\n");
scanf("%s",confirmation);
}
while(strcmp(password,confirmation));
printf("密码创建成功!你的密码为%s\n",password);
printf("按任意键开始登录系统....\n");
getch();
system("cls");//清屏
printf("—————登录系统——————\n");
printf("请输入账号:");
while(scanf("%s",account),strcmp(account,confirmationaccount))
{
tryagain++;
if(tryagain<3)
printf("错误%d次,请重新输入\n",tryagain);
else
break;
}
if (tryagain>=3){
printf("对不起,三次账号错误!\n");
getch();
printf("请重新创建账号!");
system("cls");
establish();
}
else{
printf("账号正确!\n");
}
printf("请输入密码:");
while(scanf("%s",password),strcmp(password, confirmation))
{
tryagain++;
if(tryagain<3)
printf("错误%d次,请重新输入\n",tryagain);
else
break;
}
if (tryagain>=3)
{
printf("对不起,三次密码错误!\n");
printf("请输入预留的手机号码:\n");
scanf("%s",telephone1);
if(!strcmp(telephone,telephone1))
{
do{
printf("————创建密码—————\n");
printf("请输入你的密码\n");
scanf("%s",password);
printf("请确认你的密码\n");
scanf("%s",confirmation);
}
while(strcmp(password,confirmation));
}
else
{
printf("输入错误,请重新创建账号!!!");
getch();
system("cls");
establish();
}
printf("重新设置成功!\n");
printf("请输入您的账号:\n");
scanf("%s",account1);
if(strcmp(account1,account)==0)
printf("请输入新密码:\n");
else
printf("账号错误!请重新输入---\n");
while(scanf("%s",password1),strcmp(password,password1))
{
printf("学生成绩管理系统登陆成功!\n");
printf("按任意键进入系统..\n.");
getch();
system("cls");
break;
}
}
system("cls");
caidan();
}
五、菜单
void caidan() {
printf("\t--------------------------------------\n");
printf("\t\t 欢迎进入学生成绩管理系统\n");
printf("\t\t请选择操作\n");
printf("\t\t1.添加学生信息\n");
printf("\t\t2.查询学生信息\n");
printf("\t\t3.排序学生信息\n");
printf("\t\t4.删除学生信息\n");
printf("\t\t5.修改学生信息\n");
printf("\t\t6.输出学生信息表\n");
printf("\t\t7.保存文件\n");
printf("\t\t8.退出系统\n");
printf("\t--------------------------------------\n");
printf("请输入1~8:");
keyDown();
}
六、 做交互(由菜单对应数字跳转所实现函数位置(使用switch函数))
void keyDown() {
int c;
c=panduan();
system("cls");
switch (c) {
case 1:
printf("------------【添加】--------------\n");
insert_student();
break;
case 2:
printf("------------【查询】--------------\n");
search();
break;
case 3:
printf("------------【排序】--------------\n");
sortTotal();
break;
case 4:
printf("------------【删除】--------------\n");
del();
break;
case 5:
printf("------------【修改】--------------\n");
updata();
break;
case 6:
printf("----------【学生信息表】-----------\n");
showAll();
break;
case 7:
printf("---------【保存文件】-----------\n");
writeData();
break;
case 8:
printf("【退出系统】\n");
printf("退出成功\n");
system("pause");
exit(0);//退出整个系统
break;
}
printf("按任意键继续!");
getchar();
system("cls");//清屏
}
int panduan()
{
int a,b;
b=scanf("%d",&a);
while(b!=1){
while((getchar())!='\n');
printf("警告:只能输入数字!\n");
printf("请正确输入!\n");
b=scanf("%d",&a);
}
b=0;
return a;
}
七、实现
其中包括增删查改,排序
在中间有限制成绩只能输入数字,选择继续或返回菜单时只能输入1或2;
1、添加学生信息
void insert_student() {
system("cls");
initData();//读入文件内学生成绩信息,并显示出来,以免添加重复
printf("\t添加学生信息\n");
printf("请输入学生学号:") ;
isIdSame(count);
printf("\n");
printf("姓名:");
scanf("%s", student[count].name);
printf("\n");
printf("班级:");
scanf("%s", student[count].banji);
printf("\n");
printf("数学成绩:");
int aaa;
aaa=panduan();
student[count].math=aaa;
printf("\n");
printf("英语成绩:");
int bbb;
bbb=panduan();
student[count].english=bbb;
printf("\n");
printf("计算机成绩:");
int ccc;
ccc=panduan();
student[count].computer=ccc;
printf("\n");
student[count].total = student[count].math + student[count].english + student[count].computer;
printf("总成绩:%d\n", student[count].total);
printf("%s的信息录入成功\n\n", student[count].name);
count++;
int choose;
printf("1、继续\t2、返回主页面\n");
scanf("%d", &choose);
system("cls");
if (choose == 1) {
insert_student();
} else if (choose == 2) {
caidan();
} else if (choose != 1 || choose != 2) {
printf("请正确输入1或2!");
system("cls");
chance();
}
}
//选择
void chance() {
int choose;
printf("1、继续\t2、返回主页面\n");
scanf("%d", &choose);
if (choose == 1) {
insert_student();
} else if (choose == 2) {
caidan();
} else if (choose != 1 || choose != 2)
printf("请正确输入1或2!");
}
// 判断学号是否重复重复返回1 否则返回0
int find1(struct Student student[], int num) {
int temp = 0;
for (int i = 0; i < count; i++) {
if (student[i].num == num) {
temp = 1;
break;
}
}
return temp;
}
//检验所输入的学号是否重复
void isIdSame(int x) {
int inputId;
scanf("%d", &inputId);
do {
if (find1(student, inputId)) {
printf("学号有重复,请重新输入\n");
scanf("%d", &inputId);
} else {
student[x].num = inputId;
break;
}
} while (1);
}
// 2、查找展示结果
void search() {
system("cls");
int num;
printf("请输入你想要查找的学生的学号:\n");
num=panduan();
int target = findIndex(num);
if (target != -1) {
printf("\n\t查询结果\n\n");
showone(student[target]);
con();
system("cls");
caidan();
} else {
printf("\n查无此人\n");
con();
system("cls");
caidan();
}
}
//根据学号返回对应下标
int findIndex(int num) {
int temp;
for (int i = 0; i < count; i++) {
if (student[i].num == num) {
temp = i;
break;
} else {
temp = -1;
}
}
return temp;
}
//查找学生信息
void showone(struct Student stu) {
printf("学号:%d\n姓名:%s\n班级:%s\n数学:%d\n英语:%d\n计算机:%d\n总成绩:%d\n", stu.num, stu.name, stu.banji, stu.math, stu.english, stu.computer, stu.total);
printf("\n-----------------------------\n");
}
// 6、显示所有信息
void showAll() {
system("cls");
for (int i = 0; i < count; i++) {
showone(student[i]);
}
con();
system("cls");
caidan();
}
//3、按总分排序(冒泡排序)
void sortTotal() {
int temp;
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - 1 - i; j++) {
if (student[j].total < student[j + 1].total) {
temp = student[j + 1].total;
student[j + 1].total = student[j].total;
student[j].total = temp;
}
}
}
printf("排序完成!");
showAll();
con();
caidan();
system("cls");
}
// 4、删除学生信息
void del() {
system("cls");
int num;
int target;
printf("\n请输入你想删除学生的学号\n");
scanf("%d", &num);
target = findIndex(num);
if (target < 0) {
printf("\n查无此人\n");
con();
} else {
for (int i = target; i < count; i++) {
student[i] = student[i + 1]; //删除操作 后一位元素覆盖前一位元素
}
printf("删除成功\n");
con();
count--;
}
int choose;
printf("1、继续\t2、返回主页面\n");
scanf("%d", &choose);
if (choose == 1) {
system("cls");
del();
} else if (choose == 2) {
system("cls");
caidan();
} else if (choose != 1 || choose != 2) {
printf("请输入1或2!");
system("cls");
chance2();
}
system("cls");
}
void chance2() {
int choose;
printf("1、继续\t2、返回主页面\n");
scanf("%d", &choose);
if (choose == 1) {
system("cls");
del();
} else if (choose == 2) {
system("cls");
caidan();
} else if (choose != 1 || choose != 2)
printf("请输入1或2!");
}
// 5、修改学生信息
void updata()
{
system("cls");
int num, flag;
printf("请输入你要修改的学生的学号\n");
scanf("%d", &num);
int target = findIndex(num);
if (target < 0) {
printf("查无此人");
con();
caidan();
} else {
flag = 1;
showone(student[target]);
}
do {
int choose = 0;
printf("请输入需要修改的选项\t(1.学号\t2.姓名\t3.班级\t4.数学\t5.英语\t6.计算机\t)\n");
choose=panduan();
switch (choose) {
case 1:
printf("请输入学号\n");
isIdSame(target);
break;
case 2:
printf("请输入姓名\n");
scanf("%s", student[target].name);
break;
case 3:
printf("请输入班级\n");
scanf("%s", student[target].banji);
break;
case 4:
printf("请输入数学\n");
int aaa;
aaa=panduan();
student[target].math=aaa;
break;
case 5:
printf("请输入英语\n");
int bbb;
bbb=panduan();
student[target].english=bbb;
break;
case 6:
printf("请输入计算机\n");
int ccc;
ccc=panduan();
student[target].computer=ccc;
break;
}
student[target].total = student[target].math + student[target].english + student[target].computer;
printf("%s的信息修改成功\n", student[target].name);
printf("\n按1继续\t按2退出修改\n");
int choose2;
choose2=panduan();
if (choose2 == 1) {
system("cls");
flag = 1;
} else {
system("cls");
flag = 0;
}
} while (flag);
system("cls");
caidan();
}
八、文件
//初始化数据
void initData() {
int xx=0;
FILE * fp = NULL;
fp = fopen("file.txt", "r");
if (!fp) {
printf("文件打开失败\n");
exit(0);// 退出程序
}
for(int i = 0;i < 100;i ++) { //读取数据 赋值给数组
xx= fscanf(fp, "%d\t%s\t%s\t%d\t%d\t%d\t%d\n", &student[i].num, student[i].name, student[i].banji, &student[i].math, &student[i].english, &student[i].computer, &student[i].total);
if (xx == -1)
{
count = i;
fclose(fp);
break;
}
}
int x=count;
while(x--)
{
printf("学号:%d\n姓名:%s\n班级:%s\n数学:%d\n英语:%d\n计算机:%d\n总成绩:%d\n",student[x].num, student[x].name, student[x].banji, student[x].math, student[x].english,student[x].computer, student[x].total);
}
return ;
}
//保存数据写入文件中
void writeData() {
FILE *fp;
if((fp=fopen("D:\\file.txt","w"))==NULL)
{
printf("打开失败\n");
exit(0);
}
for (int i = 0; i < count; i++)
{
fprintf(fp, "%d\t%s\t%s\t%d\t%d\t%d\t%d\n", student[i].num, student[i].name, student[i].banji, student[i].math, student[i].english, student[i].computer, student[i].total);
}
fclose(fp);
printf("\n");
printf("数据保存成功\n");
return;
}
void duqu()
{
FILE *fp;
if((fp=fopen("D:\\file.txt","w"))==NULL)
{
printf("打开失败\n");
exit(0);
}
fclose(fp);
printf("\n");
return ;
}
文件中保存的不可重复输入
九、主函数
int main() {
getchar();
system("cls");
while (1) {
establish();
system("cls");
writeData();
Student();
system("pause");
system("cls");
}
system("pause");
return 0;
}
以下为完整代码:
#include<stdio.h>
#include<stdlib.h>//用于数组,清屏功能
#include<string.h>
#include<conio.h>
#include<windows.h>
#define N 1000
#define LNE 20
void initData();
void writeData();
void denglu();
void establish();
void caidan();
int panduan();
void keyDown();
void chance();
void chance2();
void insert_student();//1、添加学生信息
int find1(struct Student student[], int num);
void isIdSame(int x);
void search();//1、查找学生信息
int findIndex(int num);
void showone(struct Student stu);
void sortTotal();//3、按总分排序(冒泡排序)
void showAll();
void del();//4、删除学生信息
void updata();//5、修改学生信息
void inserInfo();
void inserCurrentInfo(int site);
void con();
int count = 0;
struct Student {
int num;
char name[20];
char banji[20];
int math;
int english;
int computer;
int sum;
int total;
} student[N], student1;
void establish() //创建账号,密码//修改密码
{
char telephone[LNE];
char telephone1[LNE];
char password[LNE];
char password1[LNE];
char confirmation[LNE];
int tryagain = 0;
char account[LNE];
char account1[LNE];
char confirmationaccount[LNE];
do{
printf("---------------欢迎来到学生成绩管理系统--------------\n");
printf("-----------------请创建账号-----------------\n");
printf("\t\t请输入你的账号\n");
scanf("%s",account);
printf("\t\t请确认你的账号\n");
scanf("%s",confirmationaccount);
}
while(strcmp(account,confirmationaccount));
printf("账号创建成功!你的账号为%s\n",account);
printf("请输入您的手机号码:\n");
scanf("%s",telephone);
printf("按任意键继续---\n");
getch();
system("cls");
do{
printf("------------------请创建密码-----------------\n");
printf("请输入你的密码\n");
scanf("%s",password);
printf("请确认你的密码\n");
scanf("%s",confirmation);
}
while(strcmp(password,confirmation));
printf("密码创建成功!你的密码为%s\n",password);
printf("按任意键开始登录系统....\n");
getch();
system("cls");//清屏
printf("—————登录系统——————\n");
printf("请输入账号:");
while(scanf("%s",account),strcmp(account,confirmationaccount))
{
tryagain++;
if(tryagain<3)
printf("错误%d次,请重新输入\n",tryagain);
else
break;
}
if (tryagain>=3){
printf("对不起,三次账号错误!\n");
getch();
printf("请重新创建账号!");
system("cls");
establish();
}
else{
printf("账号正确!\n");
}
printf("请输入密码:");
while(scanf("%s",password),strcmp(password, confirmation))
{
tryagain++;
if(tryagain<3)
printf("错误%d次,请重新输入\n",tryagain);
else
break;
}
if (tryagain>=3)
{
printf("对不起,三次密码错误!\n");
printf("请输入预留的手机号码:\n");
scanf("%s",telephone1);
if(!strcmp(telephone,telephone1))
{
do{
printf("————创建密码—————\n");
printf("请输入你的密码\n");
scanf("%s",password);
printf("请确认你的密码\n");
scanf("%s",confirmation);
}
while(strcmp(password,confirmation));
}
else
{
printf("输入错误,请重新创建账号!!!");
getch();
system("cls");
establish();
}
printf("重新设置成功!\n");
printf("请输入您的账号:\n");
scanf("%s",account1);
if(strcmp(account1,account)==0)
printf("请输入新密码:\n");
else
printf("账号错误!请重新输入---\n");
while(scanf("%s",password1),strcmp(password,password1))
{
printf("学生成绩管理系统登陆成功!\n");
printf("按任意键进入系统..\n.");
getch();
system("cls");
break;
}
}
system("cls");
caidan();
}
//菜单
void caidan() {
printf("\t--------------------------------------\n");
printf("\t\t 欢迎进入学生成绩管理系统\n");
printf("\t\t请选择操作\n");
printf("\t\t1.添加学生信息\n");
printf("\t\t2.查询学生信息\n");
printf("\t\t3.排序学生信息\n");
printf("\t\t4.删除学生信息\n");
printf("\t\t5.修改学生信息\n");
printf("\t\t6.输出学生信息表\n");
printf("\t\t7.保存文件\n");
printf("\t\t8.退出系统\n");
printf("\t--------------------------------------\n");
printf("请输入1~8:");
keyDown();
}
// 做交互
void keyDown() {
int c;
c=panduan();
system("cls");
switch (c) {
case 1:
printf("------------【添加】--------------\n");
insert_student();
break;
case 2:
printf("------------【查询】--------------\n");
search();
break;
case 3:
printf("------------【排序】--------------\n");
sortTotal();
break;
case 4:
printf("------------【删除】--------------\n");
del();
break;
case 5:
printf("------------【修改】--------------\n");
updata();
break;
case 6:
printf("----------【学生信息表】-----------\n");
showAll();
break;
case 7:
printf("---------【保存文件】-----------\n");
writeData();
break;
case 8:
printf("【退出系统】\n");
printf("退出成功\n");
system("pause");
exit(0);//退出整个系统
break;
}
printf("按任意键继续!");
getchar();
system("cls");//清屏
}
int panduan()
{
int a,b;
b=scanf("%d",&a);
while(b!=1){
while((getchar())!='\n');
printf("警告:只能输入数字!\n");
printf("请正确输入!\n");
b=scanf("%d",&a);
}
b=0;
return a;
}
// 1、添加学生信息
void insert_student() {
system("cls");
initData();
printf("\t添加学生信息\n");
printf("请输入学生学号:") ;
isIdSame(count);
printf("\n");
printf("姓名:");
scanf("%s", student[count].name);
printf("\n");
printf("班级:");
scanf("%s", student[count].banji);
printf("\n");
printf("数学成绩:");
int aaa;
aaa=panduan();
student[count].math=aaa;
printf("\n");
printf("英语成绩:");
int bbb;
bbb=panduan();
student[count].english=bbb;
printf("\n");
printf("计算机成绩:");
int ccc;
ccc=panduan();
student[count].computer=ccc;
printf("\n");
student[count].total = student[count].math + student[count].english + student[count].computer;
printf("总成绩:%d\n", student[count].total);
printf("%s的信息录入成功\n\n", student[count].name);
count++;
int choose;
printf("1、继续\t2、返回主页面\n");
scanf("%d", &choose);
system("cls");
if (choose == 1) {
insert_student();
} else if (choose == 2) {
caidan();
} else if (choose != 1 || choose != 2) {
printf("请正确输入1或2!");
system("cls");
chance();
}
}
void chance() {
int choose;
printf("1、继续\t2、返回主页面\n");
scanf("%d", &choose);
if (choose == 1) {
insert_student();
} else if (choose == 2) {
caidan();
} else if (choose != 1 || choose != 2)
printf("请正确输入1或2!");
}
// 判断学号是否重复重复返回1 否则返回0
int find1(struct Student student[], int num) {
int temp = 0;
for (int i = 0; i < count; i++) {
if (student[i].num == num) {
temp = 1;
break;
}
}
return temp;
}
//检验所输入的学号是否重复
void isIdSame(int x) {
int inputId;
scanf("%d", &inputId);
do {
if (find1(student, inputId)) {
printf("学号有重复,请重新输入\n");
scanf("%d", &inputId);
} else {
student[x].num = inputId;
break;
}
} while (1);
}
// 2、查找展示结果
void search() {
system("cls");
int num;
printf("请输入你想要查找的学生的学号:\n");
num=panduan();
int target = findIndex(num);
if (target != -1) {
printf("\n\t查询结果\n\n");
showone(student[target]);
con();
system("cls");
caidan();
} else {
printf("\n查无此人\n");
con();
system("cls");
caidan();
}
}
//根据学号返回对应下标
int findIndex(int num) {
int temp;
for (int i = 0; i < count; i++) {
if (student[i].num == num) {
temp = i;
break;
} else {
temp = -1;
}
}
return temp;
}
//查找学生信息
void showone(struct Student stu) {
printf("学号:%d\n姓名:%s\n班级:%s\n数学:%d\n英语:%d\n计算机:%d\n总成绩:%d\n", stu.num, stu.name, stu.banji, stu.math, stu.english, stu.computer, stu.total);
printf("\n-----------------------------\n");
}
// 6、显示所有信息
void showAll() {
system("cls");
for (int i = 0; i < count; i++) {
showone(student[i]);
}
con();
system("cls");
caidan();
}
//3、按总分排序(冒泡排序)
void sortTotal() {
int temp;
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - 1 - i; j++) {
if (student[j].total < student[j + 1].total) {
temp = student[j + 1].total;
student[j + 1].total = student[j].total;
student[j].total = temp;
}
}
}
printf("排序完成!");
showAll();
con();
caidan();
system("cls");
}
// 4、删除学生信息
void del() {
system("cls");
int num;
int target;
printf("\n请输入你想删除学生的学号\n");
scanf("%d", &num);
target = findIndex(num);
if (target < 0) {
printf("\n查无此人\n");
con();
} else {
for (int i = target; i < count; i++) {
student[i] = student[i + 1]; //删除操作 后一位元素覆盖前一位元素
}
printf("删除成功\n");
con();
count--;
}
int choose;
printf("1、继续\t2、返回主页面\n");
scanf("%d", &choose);
if (choose == 1) {
system("cls");
del();
} else if (choose == 2) {
system("cls");
caidan();
} else if (choose != 1 || choose != 2) {
printf("请输入1或2!");
system("cls");
chance2();
}
system("cls");
}
void chance2() {
int choose;
printf("1、继续\t2、返回主页面\n");
scanf("%d", &choose);
if (choose == 1) {
system("cls");
del();
} else if (choose == 2) {
system("cls");
caidan();
} else if (choose != 1 || choose != 2)
printf("请输入1或2!");
}
// 5、修改学生信息
void updata()
{
system("cls");
int num, flag;
printf("请输入你要修改的学生的学号\n");
scanf("%d", &num);
int target = findIndex(num);
if (target < 0) {
printf("查无此人");
con();
caidan();
} else {
flag = 1;
showone(student[target]);
}
do {
int choose = 0;
printf("请输入需要修改的选项\t(1.学号\t2.姓名\t3.班级\t4.数学\t5.英语\t6.计算机\t)\n");
choose=panduan();
switch (choose) {
case 1:
printf("请输入学号\n");
isIdSame(target);
break;
case 2:
printf("请输入姓名\n");
scanf("%s", student[target].name);
break;
case 3:
printf("请输入班级\n");
scanf("%s", student[target].banji);
break;
case 4:
printf("请输入数学\n");
int aaa;
aaa=panduan();
student[target].math=aaa;
break;
case 5:
printf("请输入英语\n");
int bbb;
bbb=panduan();
student[target].english=bbb;
break;
case 6:
printf("请输入计算机\n");
int ccc;
ccc=panduan();
student[target].computer=ccc;
break;
}
student[target].total = student[target].math + student[target].english + student[target].computer;
printf("%s的信息修改成功\n", student[target].name);
printf("\n按1继续\t按2退出修改\n");
int choose2;
choose2=panduan();
if (choose2 == 1) {
system("cls");
flag = 1;
} else {
system("cls");
flag = 0;
}
} while (flag);
system("cls");
caidan();
}
// 按任意键继续
void con() {
printf("\n按任意键继续\n");
getch();
system("cls");
}
//初始化数据
void initData() {
int xx=0;
FILE * fp = NULL;
fp = fopen("file.txt", "r");
if (!fp) {
printf("文件打开失败\n");
exit(0);// 退出程序
}
for(int i = 0;i < 100;i ++) { //读取数据 赋值给数组
xx= fscanf(fp, "%d\t%s\t%s\t%d\t%d\t%d\t%d\n", &student[i].num, student[i].name, student[i].banji, &student[i].math, &student[i].english, &student[i].computer, &student[i].total);
if (xx == -1)
{
count = i;
fclose(fp);
break;
}
}
int x=count;
while(x--)
{
printf("学号:%d\n姓名:%s\n班级:%s\n数学:%d\n英语:%d\n计算机:%d\n总成绩:%d\n",student[x].num, student[x].name, student[x].banji, student[x].math, student[x].english,student[x].computer, student[x].total);
}
return ;
}
//保存数据写入文件中
void writeData() {
FILE *fp;
if((fp=fopen("D:\\file.txt","w"))==NULL)
{
printf("打开失败\n");
exit(0);
}
for (int i = 0; i < count; i++)
{
fprintf(fp, "%d\t%s\t%s\t%d\t%d\t%d\t%d\n", student[i].num, student[i].name, student[i].banji, student[i].math, student[i].english, student[i].computer, student[i].total);
}
fclose(fp);
printf("\n");
printf("数据保存成功\n");
return;
}
void duqu()
{
FILE *fp;
if((fp=fopen("D:\\file.txt","w"))==NULL)
{
printf("打开失败\n");
exit(0);
}
fclose(fp);
printf("\n");
return ;
}
int main() {
getchar();
system("cls");
while (1) {
establish();
system("cls");
writeData();
Student();
system("pause");
system("cls");
}
system("pause");
return 0;
}