sunum.cpp
字号:
//sunum 按用户序号排序
#include "sunum.h"
void SortByUserNum()
{
int i, j, k;
User Tmps;
User s[SIZE];
int recNumber = 0;
char DataFile[40] = "";
FILE *fp;
//提示用户输入要进行排序的文件名
printf("\nplease input the name of file where data is stored,end with enter key.\n");
gets(DataFile);
//提示用户输入要进行排序的文件名
while (*DataFile == ('\0'))
{
printf("\nplease input the name of file where data is stored,end with enter key.\n");
gets(DataFile);
}
//以读的方式打开文件,如文件不存在,提示错误
fp = fopen(DataFile, "rb");
if (fp == NULL)
{
printf("\nopen file %s fail !end with any key\n", DataFile);
perror("open file fail");
getch();
exit(1);
}
//将文件中要排序的信息存入结构体数组
while ((fread(&Tmps, sizeof(User), 1, fp)))
{
s[recNumber].Number = Tmps.Number;
strcpy(s[recNumber].Name, Tmps.Name);
strcpy(s[recNumber].ps, Tmps.ps);
s[recNumber].power = Tmps.power;
//s[recNumber].heji=Tmps.heji;
recNumber++;
}
fclose(fp);
//如果文件中有记录,则将各条记录按序号值排序
if (recNumber > 1)
{
//用选择排序法进行按总成绩排序
for (i = 0;i < recNumber;i++)
{
k = i;
for (j = i + 1;j < recNumber;j++)
{
if (s[k].Number < s[j].Number)
k = j;
}
Tmps.Number = s[k].Number;
strcpy(Tmps.Name, s[k].Name);
strcpy(Tmps.ps, s[k].ps);
Tmps.power = s[k].power;
//Tmps.heji=s[k].heji;
s[k].Number = s[i].Number;
strcpy(s[k].Name, s[i].Name);
strcpy(s[k].ps, s[i].ps);
s[k].power = s[i].power;
//s[k].heji=s[i].heji;
s[i].Number = Tmps.Number;
strcpy(s[i].Name, Tmps.Name);
strcpy(s[i].ps, Tmps.ps);
s[i].power = Tmps.power;
//s[i].heji=Tmps.heji;
}
//将排序好的结构体记录写入文件
fp = fopen(DataFile, "wb+");
if (fp == NULL)
{
printf("\nset up file %s fail.end with any key.\n", DataFile);
perror("open file fail");
getch();
exit(1);
}
for (i = 0;i < recNumber;i++)
{
if (fwrite(&s[i], sizeof(User), 1, fp) != 1)
{
printf("\nwrite file %s !end with any key.\n", DataFile);
perror("write file fail");
getch();
exit(1);
}
}
fclose(fp);
}
//显示排序后的文件
printf("the Student's score in file %s is as flow.\n", DataFile);
fp = fopen(DataFile, "rb");
if (fp == NULL)
{
printf("\nopen file %s fail !end with any key\n", DataFile);
perror("open file fail");
getch();
exit(1);
}
printf("\nnumber\tname\tpassword\tpower\n");
while (fread(&Tmps, sizeof(User), 1, fp))
{
printf("\n%ld\t%s\t%s\t%d\n", Tmps.Number, Tmps.Name, Tmps.ps, Tmps.power);
}
fclose(fp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -