69,373
社区成员
发帖
与我相关
我的任务
分享
/* Student Score Manager */
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define DB_FILE "成绩管理系统.txt"
#define DB_SIZE 100000
#define STUDENT_NAME_LENGTH 10
typedef struct student
{
int n; //顺序号
int Num; //学号
char name[STUDENT_NAME_LENGTH]; //姓名
int C; //语文成绩
int M; //数学成绩
int E; //英语成绩
int P; //物理成绩
int J; //计算机成绩
double Ave; //平均成绩
}Student;
Student stu[DB_SIZE];
int nstrlen(const char *s, int max)
{
int i;
for (i = 0; i < max; ++i) {
if (s[i] == '\0') {
break;
}
}
return i;
}
int input_number(const char *text, ...)
{
va_list vargs;
int num;
va_start(vargs, text);
vprintf(text, vargs);
va_end(vargs);
scanf("%d", &num);
fflush(stdin);
return num;
}
int input_string(char *buf, int buf_len, const char *text, ...)
{
va_list vargs;
int len;
va_start(vargs, text);
vprintf(text, vargs);
va_end(vargs);
fgets(buf, buf_len, stdin);
len = nstrlen(buf, buf_len);
if (len > 0) {
if (buf[len - 1] == '\n') {
buf[len - 1] = '\0';
}
}
fflush(stdin);
return 0;
}
int input_one_record(Student *rec, int i)
{
rec->Num = input_number("请输入学号(数字型): ");
input_string(rec->name, sizeof(rec->name), "请输入姓名(字符型): ");
rec->C = input_number("请输入语文成绩(0~100): ");
rec->M = input_number("请输入数学成绩(0~100): ");
rec->E = input_number("请输入英语成绩(0~100): ");
rec->P = input_number("请输入物理成绩(0~100): ");
rec->J = input_number("请输入计算机成绩(0~100): ");
rec->Ave = (rec->C + rec->M + rec->E + rec->P + rec->J) / 5.0;
rec->n = i;
return 0;
}
int load_database_file(const char *filename, Student *stu, int len)
{
FILE *fp;
int i;
memset(stu, 0, sizeof(stu) * len);
fp = fopen(filename, "rb");
if (fp != NULL) {
for (i = 0; i < len; i++) {
if (fread(&stu[i], sizeof(Student), 1, fp) != 1) {
break;
}
}
fclose(fp);
return i;
}
return -1;
}
int save_database_file(const char *filename, const Student *stu, int count)
{
FILE *fp;
int i;
fp = fopen(filename, "wb");
if (fp != NULL) {
for (i = 0; i < count; i++) {
if (fwrite(&stu[i], sizeof(Student), 1, fp) != 1) {
break;
}
}
fclose(fp);
return i;
}
return -1;
}
int save_one_record(FILE *fp, const Student *rec, int i)
{
fseek(fp, i * sizeof(Student), SEEK_SET);
fwrite(rec, sizeof(Student), 1, fp);
return 0;
}
int print_one_record(const Student *rec)
{
printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");
printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n"
, rec->n, rec->Num, rec->name, rec->C
, rec->M, rec->E, rec->P, rec->J, rec->Ave);
return 0;
}
int print_all_records(const Student *stu, int count)
{
int i;
printf("***********************************************************************\n");
printf("\t\t\t\t成绩列表\n");
printf("-----------------------------------------------------------------------\n");
printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");
printf("-----------------------------------------------------------------------\n");
for(i = 0; i < count; i++) {
printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n"
, stu[i].n, stu[i].Num, stu[i].name, stu[i].C
, stu[i].M, stu[i].E, stu[i].P, stu[i].J, stu[i].Ave);
}
printf("-----------------------------------------------------------------------\n");
return 0;
}
int search_one_record_by_no(const Student *stu, int count, int no)
{
int i;
for (i = 0; i < count; ++i) {
if (stu[i].Num == no) {
return i;
}
}
return -1;
}
//录入数据
void Input(void)
{
FILE *fp;
int i;
system("cls");
fp = fopen(DB_FILE, "wb");
if (fp == NULL) {
printf("不能打开数据库文件\n");
}else {
for (i = 0; i < DB_SIZE; i++) {
i = input_number("请输入序号i=%d: ", i);
if (i == -1) {
break;
}else {
input_one_record(&stu[i], i);
save_one_record(fp, &stu[i], i);
}
}
fclose(fp);
}
system("pause");
}
//输出数据
void Listout(void)
{
int total;
system("cls");
total = load_database_file(DB_FILE, stu, DB_SIZE);
if (total == -1) {
printf("不能打开数据库文件\n");
}else {
print_all_records(stu, total);
}
system("pause");
}
//查找数据
void Search(void)
{
int total;
int i, num;
system("cls");
total = load_database_file(DB_FILE, stu, DB_SIZE);
if (total == -1) {
printf("不能打开数据库文件\n");
}else {
num = input_number("请输入要查找的学号: ");
i = search_one_record_by_no(stu, total, num);
if (i == -1) {
printf("没找到\n");
}else {
printf("\t\t\t查询结果\n");
print_one_record(&stu[i]);
}
}
system("pause");
}
//增加数据
void Add(void)
{
int i, total;
FILE *fp;
system("cls");
total = load_database_file(DB_FILE, stu, DB_SIZE);
if (total == -1) {
printf("不能打开数据库文件\n");
}else {
print_all_records(stu, total);
fp = fopen(DB_FILE, "ab");
if (fp == NULL) {
printf("不能修改数据库文件\n");
}else {
for (i = total; i < DB_SIZE; i++) {
i = input_number("请输入序号i=%d: ", i);
if (i == -1) {
break;
}else {
input_one_record(&stu[i], i);
save_one_record(fp, &stu[i], i);
print_one_record(&stu[i]);
}
}
fclose(fp);
}
}
system("pause");
}
//删除数据
void Delete(void)
{
int i, num;
int total = 0;
int flag = 0;
system("cls");
total = load_database_file(DB_FILE, stu, DB_SIZE);
if (total == -1) {
printf("不能打开数据库文件\n");
}else {
print_all_records(stu, total);
num = input_number("请输入要删除学生的学号: ");
i = search_one_record_by_no(stu, total, num);
if (i == -1) {
printf("* 输入错误! *\n");
printf("* 请返回! *\n");
}else {
printf("\t\t\t要删除的学生信息\n");
print_one_record(&stu[i]);
printf("\n\n");
memcpy(&stu[i], &stu[i + 1], (total - i - 1) * sizeof(Student));
memset(&stu[total], 0, sizeof(Student));
--total;
save_database_file(DB_FILE, stu, total);
print_all_records(stu, total);
}
}
system("pause");
}
//修改数据
void Change(void)
{
int i, num;
int total;
system("cls");
total = load_database_file(DB_FILE, stu, DB_SIZE);
if (total == -1) {
printf("不能打开数据库文件\n");
}else {
print_all_records(stu, total);
num = input_number("请输入要修改学生的学号: ");
i = search_one_record_by_no(stu, total, num);
if (i == -1) {
printf("* 输入错误! *\n");
printf("* 请返回! *\n");
}else {
printf("\t\t\t\t成绩列表\n");
print_one_record(&stu[i]);
printf("\n\n");
input_one_record(&stu[i], i);
save_database_file(DB_FILE, stu, total);
print_all_records(stu, total);
}
}
system("pause");
}
//密码
void password(void)
{
int mm;
for (;;) {
system("cls");
printf("\t\t 欢迎进入 \n");
printf("\t\t \n");
printf("\t\t 学生信息管理系统 \n");
mm = input_number("\n请输入6位数字密码: ");
if (mm == 123456) {
return;
}
printf("密码错误,请重新输入!\n");
system("pause");
}
}
//主函数
int main(void)
{
int n;
password();
for (;;) {
system("cls");
printf("\n");
printf("\t\t* 学生信息管理系统 *\n");
printf("\t\t* 主菜单 *\n");
printf("\t\t* *\n");
printf("\t\t* 1.录入数据 *\n");
printf("\t\t* 2.删除数据 *\n");
printf("\t\t* 3.输出数据 *\n");
printf("\t\t* 4.查找数据 *\n");
printf("\t\t* 5.增加数据 *\n");
printf("\t\t* 6.修改数据 *\n");
printf("\t\t* 7.退出系统 *\n");
n = input_number("\n请输入选择项(1-7): ");
if (n > 0 && n <= 7) {
switch(n) {
case 1:
Input();
break;
case 2:
Delete();
break;
case 3:
Listout();
break;
case 4:
Search();
break;
case 5:
Add();
break;
case 6:
Change();
break;
case 7:
exit(0);
}
}else {
system("cls");
printf("* *\n");
printf("* 输入无效 *\n");
printf("* 请重新输入! *\n");
system("pause");
}
}
return 0;
}
/* Student Score Manager */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 100000
typedef struct student
{
int n; //顺序号
int Num; //学号
char name[10]; //姓名
int C; //语文成绩
int M; //数学成绩
int E; //英语成绩
int P; //物理成绩
int J; //计算机成绩
double Ave; //平均成绩
}Student;
Student stu[SIZE];
int input_number(const char *text)
{
int num;
printf(text);
scanf("%d", &num);
fflush(stdin);
return num;
}
int input_one_record(Student *rec, int i)
{
printf("请输入学号(数字型):");
scanf("%d",&rec->Num);
fflush(stdin);
printf("请输入姓名(字符型):");
scanf("%s",rec->name);
fflush(stdin);
printf("请输入语文成绩(0~100):");
scanf("%d",&rec->C);
fflush(stdin);
printf("请输入数学成绩(0~100):");
scanf("%d",&rec->M);
fflush(stdin);
printf("请输入英语成绩(0~100):");
scanf("%d",&rec->E);
fflush(stdin);
printf("请输入物理成绩(0~100):");
scanf("%d",&rec->P);
fflush(stdin);
printf("请输入计算机成绩(0~100):");
scanf("%d",&rec->J);
fflush(stdin);
rec->Ave = (rec->C + rec->M + rec->E + rec->P + rec->J) / 5.0;
rec->n = i;
return 0;
}
int load_database_file(const char *filename, Student *stu, int len)
{
FILE *fp;
int i;
memset(stu, 0, sizeof(stu));
fp = fopen(filename, "rb");
for (i = 0; i < len; i++) {
if (fread(&stu[i], sizeof(Student), 1, fp) != 1) {
break;
}
}
fclose(fp);
return i;
}
int save_database_file(const char *filename, const Student *stu, int count)
{
FILE *fp;
int i;
fp = fopen(filename, "wb");
for (i = 0; i < count; i++) {
if (fwrite(&stu[i], sizeof(Student), 1, fp) != 1) {
break;
}
}
fclose(fp);
return i;
}
int save_one_record(FILE *fp, const Student *rec, int i)
{
fseek(fp, i * sizeof(Student), SEEK_SET);
fwrite(rec, sizeof(Student), 1, fp);
return 0;
}
int print_one_record(const Student *rec)
{
printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");
printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n"
, rec->n, rec->Num, rec->name, rec->C
, rec->M, rec->E, rec->P, rec->J, rec->Ave);
return 0;
}
int print_all_records(const Student *stu, int count)
{
int i;
printf("***********************************************************************\n");
printf("\t\t\t\t成绩列表\n");
printf("-----------------------------------------------------------------------\n");
printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");
printf("-----------------------------------------------------------------------\n");
for(i = 0; i < count; i++) {
printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n"
, stu[i].n, stu[i].Num, stu[i].name, stu[i].C
, stu[i].M, stu[i].E, stu[i].P, stu[i].J, stu[i].Ave);
}
printf("-----------------------------------------------------------------------\n");
return 0;
}
int search_one_record_by_no(const Student *stu, int count, int no)
{
int i;
for (i = 0; i < count; ++i) {
if (stu[i].Num == no) {
return i;
}
}
return -1;
}
//录入数据
void Input(void)
{
FILE *fp;
int i;
fp = fopen("成绩管理系统.txt", "wb");
for (i = 0; i < SIZE; i++) {
printf("i=%d", i);
i = input_number("请输入序号i: ");
if (i == -1) {
break;
}else {
input_one_record(&stu[i], i);
save_one_record(fp, &stu[i], i);
}
}
fclose(fp);
}
//输出数据
void Listout(void)
{
int total;
total = load_database_file("成绩管理系统.txt", stu, SIZE);
system("cls");
print_all_records(stu, total);
system("pause");
}
//查找数据
void Search(void)
{
int total;
int i, num;
total = load_database_file("成绩管理系统.txt", stu, SIZE);
system("cls");
num = input_number("请输入要查找的学号: ");
i = search_one_record_by_no(stu, total, num);
if (i == -1) {
printf("没找到\n");
}else {
printf("\t\t\t查询结果\n");
print_one_record(&stu[i]);
}
system("pause");
}
//增加数据
void Add(void)
{
int i, total;
FILE *fp;
total = load_database_file("成绩管理系统.txt", stu, SIZE);
system("cls");
print_all_records(stu, total);
fp = fopen("成绩管理系统.txt", "ab");
for (i = total; i < SIZE; i++) {
printf("i=%d", i);
i = input_number("请输入序号i: ");
if (i == -1) {
break;
}else {
input_one_record(&stu[i], i);
save_one_record(fp, &stu[i], i);
print_one_record(&stu[i]);
}
}
fclose(fp);
}
//删除数据
void Delete(void)
{
int i, num;
int total = 0;
int flag = 0;
total = load_database_file("成绩管理系统.txt", stu, SIZE);
system("cls");
print_all_records(stu, total);
num = input_number("请输入要删除学生的学号: ");
i = search_one_record_by_no(stu, total, num);
if (i == -1) {
printf("* 输入错误! *\n");
printf("* 请返回! *\n");
}else {
printf("\t\t\t要删除的学生信息\n");
print_one_record(&stu[i]);
printf("\n\n");
memcpy(&stu[i], &stu[i + 1], (total - i - 1) * sizeof(Student));
memset(&stu[total], 0, sizeof(Student));
save_database_file("成绩管理系统.txt", stu, total);
print_all_records(stu, total);
}
system("pause");
}
//修改数据
void Change(void)
{
int i, num;
int total;
total = load_database_file("成绩管理系统.txt", stu, SIZE);
system("cls");
print_all_records(stu, total);
num = input_number("请输入要修改学生的学号: ");
i = search_one_record_by_no(stu, total, num);
if (i == -1) {
printf("* 输入错误! *\n");
printf("* 请返回! *\n");
}else {
printf("\t\t\t\t成绩列表\n");
print_one_record(&stu[i]);
system("pause");
printf("\n\n");
input_one_record(&stu[i], i);
save_database_file("成绩管理系统.txt", stu, total);
print_all_records(stu, total);
}
system("pause");
}
//密码
void password(void)
{
int mm;
for (;;) {
system("cls");
printf("\t\t 欢迎进入 \n");
printf("\t\t \n");
printf("\t\t 学生信息管理系统 \n");
mm = input_number("\n请输入6位数字密码: ");
if (mm == 123456) {
return;
}
printf("密码错误,请重新输入!\n");
system("pause");
}
}
//主函数
int main(void)
{
int n;
password();
for (;;) {
system("cls");
printf("\n");
printf("\t\t* 学生信息管理系统 *\n");
printf("\t\t* 主菜单 *\n");
printf("\t\t* *\n");
printf("\t\t* 1.录入数据 *\n");
printf("\t\t* 2.删除数据 *\n");
printf("\t\t* 3.输出数据 *\n");
printf("\t\t* 4.查找数据 *\n");
printf("\t\t* 5.增加数据 *\n");
printf("\t\t* 6.修改数据 *\n");
printf("\t\t* 7.退出系统 *\n");
n = input_number("\n请输入选择项(1-7): ");
if (n > 0 && n <= 7) {
switch(n) {
case 1:
Input();
break;
case 2:
Delete();
break;
case 3:
Listout();
break;
case 4:
Search();
break;
case 5:
Add();
break;
case 6:
Change();
break;
case 7:
exit(0);
}
}else {
system("cls");
printf("* *\n");
printf("* 输入无效 *\n");
printf("* 请重新输入! *\n");
system("pause");
}
}
return 0;
}
//修改了Change函数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE (100000)
typedef struct student
{
int n; //顺序号
int Num; //学号
char name[10]; //姓名
int C; //语文成绩
int M; //数学成绩
int E; //英语成绩
int P; //物理成绩
int J; //计算机成绩
float Ave; //平均成绩
} Student;
Student stu[SIZE];
//录入数据
void Input()
{
int i = 0;
FILE *fp = NULL;
if (NULL == (fp = fopen("E:\\成绩管理系统.txt", "ab")))
{
printf("%s:%d\n",__FUNCTION__, __LINE__);
return;
}
for (i = 0; i < SIZE; i++)
{
printf("\n请输入序号i(当输入i=-1时,返回),i= ",i++);
scanf("%d",&i);
if(-1 == i)
{
break;
}
else
{
printf("\n请输入学号(数字型): ");
scanf("%d",&stu[i].Num);
printf("\n请输入姓名(字符型): ");
scanf("%s",stu[i].name);
printf("\n请输入语文成绩(0~100): ");
scanf("%d",&stu[i].C);
printf("\n请输入数学成绩(0~100):");
scanf("%d",&stu[i].M);
printf("\n请输入英语成绩(0~100):");
scanf("%d",&stu[i].E);
printf("\n请输入物理成绩(0~100):");
scanf("%d",&stu[i].P);
printf("\n请输入计算机成绩(0~100):");
scanf("%d",&stu[i].J);
stu[i].Ave = (stu[i].C+stu[i].M+stu[i].E+stu[i].P+stu[i].J)/5.0;
stu[i].n = i;
fwrite(&stu[i], sizeof(Student), 1, fp);
}
}
fclose(fp);
}
//输出数据
void Listout(void)
{
FILE *fp = NULL;
int i = 0;
if (NULL == (fp = fopen("E:\\成绩管理系统.txt", "rb")))
{
printf("%s:%d\n",__FUNCTION__, __LINE__);
return;
}
system("cls");
printf("***********************************************************************\n");
printf("\t\t\t\t成绩列表\n");
printf("-----------------------------------------------------------------------\n");
printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");
printf("-----------------------------------------------------------------------\n");
for(i = 0;fread(&stu[i], sizeof(Student),1,fp)==1; i++)
{
printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].Num,stu[i].name,stu[i].C,
stu[i].M,stu[i].E,stu[i].P,stu[i].J,stu[i].Ave);
}
printf("-----------------------------------------------------------------------\n");
system("pause");
fclose(fp);
}
//查找数据
void Search()
{
FILE *fp;
int i,num;
fp=fopen("F:\\成绩管理系统.txt","rb");
rewind(fp);
system("cls");
printf("请输入要查找的学号:");
scanf("%d",&num);
fflush(stdin);
printf("\t\t\t查询结果\n");
printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");
for(i=0;i<=SIZE;i++)
if(stu[i].Num==num)
{
printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].Num,stu[i].name,stu[i].C,
stu[i].M,stu[i].E,stu[i].P,stu[i].J,stu[i].Ave);
}
system("pause");
fclose(fp);
}
//增加数据
void Add()
{
int i,s;
FILE *fp;
fp=fopen("F:\\成绩管理系统.txt","ab+");
rewind(fp);
system("cls");
printf("\t\t\t\t成绩列表\n");
printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");
for(i=0;fread(&stu[i],sizeof(Student),1,fp)==1;i++)
{
printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].Num,stu[i].name,stu[i].C,
stu[i].M,stu[i].E,stu[i].P,stu[i].J,stu[i].Ave);
}
s=i;
for(i=s;i<SIZE;i++)
{
printf("输入序号i(当输入i=-1时,返回),i=",i);
scanf("%d",&i);
fflush(stdin);
if(i==-1)
{
fclose(fp);
return;
}
else
{
printf("\n\r请输入学号(数字型):");
scanf("%d",&stu[i].Num);
fflush(stdin);
printf("\n\r请输入姓名(字符型):");
scanf("%s",stu[i].name);
fflush(stdin);
printf("\n\r请输入语文成绩(0~100):");
scanf("%d",&stu[i].C);
fflush(stdin);
printf("\n\r请输入数学成绩(0~100):");
scanf("%d",&stu[i].M);
fflush(stdin);
printf("\n\r请输入英语成绩(0~100):");
scanf("%d",&stu[i].E);
fflush(stdin);
printf("\n\r请输入物理成绩(0~100):");
scanf("%d",&stu[i].P);
fflush(stdin);
printf("\n\r请输入计算机成绩(0~100):");
scanf("%d",&stu[i].J);
fflush(stdin);
stu[i].Ave=(stu[i].C+stu[i].M+stu[i].E+stu[i].P+stu[i].J)/5.0;
stu[i].n=i;
fwrite(&stu[i],sizeof(Student),1,fp);
printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");
printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].Num,stu[i].name,stu[i].C,
stu[i].M,stu[i].E,stu[i].P,stu[i].J,stu[i].Ave);
}
}
fclose(fp);
}
//删除数据
void Delete()
{
FILE *fp;
int i,num,n;
int total =0;
int flag=0;
fp=fopen("F:\\成绩管理系统.txt","rb");
system("cls");
printf("\t\t\t\t成绩列表\n");
printf(" 序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");
for(i=0;fread(&stu[i],sizeof(Student),1,fp)==1;i++)
{
printf(" %d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].Num,stu[i].name,stu[i].C,
stu[i].M,stu[i].E,stu[i].P,stu[i].J,stu[i].Ave);
}
fclose(fp);
total = i-1;
printf(" 请输入要删除学生的学号:");
scanf("%d",&num);
fflush(stdin);
system("cls");
for(i=0;i<=SIZE;i++)
if(stu[i].Num==num)
{
printf("\t\t\t要删除的学生信息\n");
printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");
printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].Num,stu[i].name,stu[i].C,
stu[i].M,stu[i].E,stu[i].P,stu[i].J,stu[i].Ave);
n=i+1;
flag=1;
break;
}
if(flag==0)
{
printf("* 输入错误! *\n");
printf("* 请返回! *\n");
return;
}
printf("\n\n");
for(i=n;i<=total;i++)
{
memcpy(&stu[i-1],&stu[i],sizeof(Student));
}
memset(&stu[total],0,sizeof(Student));
fp=fopen("E:\\成绩管理系统.txt","wb+");
for(i=0;i<total;i++)
{
fwrite(&stu[i],sizeof(Student),1,fp);
}
fclose(fp);
fp=fopen("E:\\成绩管理系统.txt","rb");
printf("\t\t\t当前成绩列表\n");
printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");
for(i=0;fread(&stu[i],sizeof(Student),1,fp)==1;i++)
{
printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].Num,stu[i].name,stu[i].C,
stu[i].M,stu[i].E,stu[i].P,stu[i].J,stu[i].Ave);
}
system("pause");
fclose(fp);
}
//修改数据
void Change()
{
FILE *fp = NULL;
int i,num,n;
int flag = 0;
system("cls");
printf("请输入要修改学生的学号:");
scanf("%d",&num);
fflush(stdin);
for (i = 0; i <= SIZE; i++)
{
if (stu[i].Num == num)
{
printf("\t\t\t\t成绩列表\n");
printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");
printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].Num,stu[i].name,stu[i].C,
stu[i].M,stu[i].E,stu[i].P,stu[i].J,stu[i].Ave);
n = i + 1;
flag = 1;
break;
}
}
if(flag == 0)
{
printf("* 输入错误! *\n");
printf("* 请返回! *\n");
system("pause");
return;
}
printf("\n\n");
fp = fopen("E:\\成绩管理系统.txt","r+b");
printf("\n请输入学号(数字型):");
scanf("%d",&stu[i].Num);
printf("\n请输入姓名(字符型):");
scanf("%s",stu[i].name);
printf("\n请输入语文成绩(0~100):");
scanf("%d",&stu[i].C);
printf("\n请输入数学成绩(0~100):");
scanf("%d",&stu[i].M);
printf("\n请输入英语成绩(0~100):");
scanf("%d",&stu[i].E);
printf("\n请输入物理成绩(0~100):");
scanf("%d",&stu[i].P);
printf("\n请输入计算机成绩(0~100):");
scanf("%d",&stu[i].J);
stu[i].Ave=(stu[i].C+stu[i].M+stu[i].E+stu[i].P+stu[i].J)/5.0;
// stu[i].n=i;
fseek(fp, i * sizeof(Student), SEEK_SET);
fwrite(&stu[i], sizeof(Student), 1, fp);
fclose(fp);
system("cls");
fp = fopen("E:\\成绩管理系统.txt","rb");
printf("\t\t\t\t成绩列表\n");
printf("序号 学号 姓名 语文 数学 英语 物理 计算机 平均\n");
for(i = 0; fread(&stu[i],sizeof(Student),1,fp) == 1; i++)
{
printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].Num,stu[i].name,stu[i].C,
stu[i].M,stu[i].E,stu[i].P,stu[i].J,stu[i].Ave);
}
#if 0
fseek(fp, n * sizeof(Student), SEEK_SET);
Student s;
fread(&s,sizeof(Student), 1, fp);
printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",s.n,s.Num,s.name,s.C,
s.M,s.E,s.P,s.J,s.Ave);
#endif
system("pause");
fclose(fp);
}
//密码
void password()
{
int mm;
while(1)
{
system("cls");
printf("\t\t 欢迎进入 \n");
printf("\t\t \n");
printf("\t\t 学生信息管理系统 \n");
printf("请输入6位数字密码:");
scanf("%d",&mm);
fflush(stdin);
if(mm-123456!=0) {printf("密码错误,请重新输入!\n");}
else return;
system("pause");
}
}
//主函数
int main()
{
int n;
password();
while(1)
{
system("cls");
printf("\n");
printf("\t\t* 学生信息管理系统 *\n");
printf("\t\t* 主菜单 *\n");
printf("\t\t* *\n");
printf("\t\t* 1.录入数据 *\n");
printf("\t\t* 2.删除数据 *\n");
printf("\t\t* 3.输出数据 *\n");
printf("\t\t* 4.查找数据 *\n");
printf("\t\t* 5.增加数据 *\n");
printf("\t\t* 6.修改数据 *\n");
printf("\t\t* 7.退出系统 *\n");
printf("请输入选择项(1-7):");
scanf("%d",&n);
fflush(stdin);
printf("\n");
if(n>0&&n<=7)
{
switch(n)
{
case 1:Input();break;
case 2:Delete();break;
case 3:Listout();break;
case 4:Search();break;
case 5:Add();break;
case 6:Change();break;
case 7:exit(0);
}
}
else
{
system("cls");
printf("* *\n");
printf("* 输入无效 *\n");
printf("* 请重新输入! *\n");
system("pause");
}
}
return 0;
}
fp=fopen("F:\\成绩管理系统.txt","ab");
打开格式符换成a+试试