//学生成绩管理系统
#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<dos.h>
#include<string.h>
#define LEN sizeof(struct student)
#define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf%-12.1lf\n"
#define DATA stu[i].num,stu[i].name,stu[i].elec,stu[i].expe,stu[i].requ,stu[i].sum
struct student/*定义学生成绩结构体*/
{
int num;/*学号*/
char name[15];/*姓名*/
double elec;/*选修课*/
double expe;/*实验课*/
double requ;/*必修课*/
double sum;/*总分*/
};
struct student stu[50];/*定义结构体数组*/
void in();/*录入学生成绩信息*/
void show();/*显示学生信息*/
void order();/*按总分排序*/
void del();/*删除学生成绩信息*/
void modify();/*修改学生成绩信息*/
void menu();/*主菜单*/
void insert();/*插入学生信息*/
void total();/*计算总人数*/
void search();/*查找学生信息*/
void main()/*主函数*/
{
int n;
menu();
scanf("%d", &n);/*输入选择功能的编号*/
while (n)
{
switch (n)
{
case 1: in(); break;
case 2: search(); break;
case 3: del(); break;
case 4: modify(); break;
case 5: insert(); break;
case 6: order(); break;
case 7: total(); break;
default:break;
}
_getch();
menu();/*执行完功能再次显示菜单界面*/
scanf("%d", &n);
}
}
void in()/*录入学生信息*/
{
int i, m = 0;/*m是记录的条数*/
char ch[2];
FILE* fp;/*定义文件指针*/
if ((fp = fopen("data.txt", "a+")) == NULL)/*打开指定文件*/
{
printf("can not open\n"); return;
}
while (!feof(fp)) {
if (fread(&stu[m], LEN, 1, fp) == 1)
m++;/*统计当前记录条数*/
}
fclose(fp);
if (m == 0)
printf("No record!\n");
else
{
system("cls");
show();/*调用show函数,显示原有信息*/
}
if ((fp = fopen("data.txt", "wb")) == NULL)
{
printf("can not open\n"); return;
}
for (i = 0; i < m; i++) fwrite(&stu[i], LEN, 1, fp);/*向指定的磁盘文件写入信息*/
printf("please input(y/n):");
scanf("%s", ch);
while (strcmp(ch, "Y") == 0 || strcmp(ch, "y") == 0)/*判断是否要录入新信息*/
{
printf("number:"); scanf("%d", &stu[m].num);/*输入学生学号*/
for (i = 0; i < m; i++)
if (stu[i].num == stu[m].num)
{
printf("the number is existing,press any to continue!");
_getch();
fclose(fp);
return;
}
printf("name:"); scanf("%s", stu[m].name);/*输入学生姓名*/
printf("elective:"); scanf("%lf", &stu[m].elec);/*输入选修课成绩*/
printf("experiment:"); scanf("%lf", &stu[m].expe);/*输入实验课成绩*/
printf("required course:"); scanf("%lf", &stu[m].requ);/*输入必修课成绩*/
stu[m].sum = stu[m].elec + stu[m].expe + stu[m].requ;/*计算出总成绩*/
if (fwrite(&stu[m], LEN, 1, fp) != 1)/*将新录入的信息写入指定的磁盘文件*/
{
printf("can not save!"); _getch();
}
else { printf("%s saved!\n", stu[m].name); m++; }
printf("continue?(y/n):");/*询问是否继续*/
scanf("%s", ch);
}
fclose(fp);
printf("OK!\n");
}
void show()
{
FILE* fp;
int i, m = 0;
fp = fopen("data.txt", "rb");
while (!feof(fp))
{
if (fread(&stu[m], LEN, 1, fp) == 1)
m++;
}
fclose(fp);
printf("number name elective experiment required sum\t\n");
for (i = 0; i < m; i++)
{
printf(FORMAT, DATA);/*将信息按指定格式打印*/
}
}
void menu()/*自定义函数实现菜单功能*/
{
system("cls");
printf("\n\n\n\n\n");
printf("\t\t|---------------------STUDENT-------------------|\n");
printf("\t\t|\t 0. exit |\n");
printf("\t\t|\t 1. input record |\n");
printf("\t\t|\t 2. search record |\n");
printf("\t\t|\t 3. delete record |\n");
printf("\t\t|\t 4. modify record |\n");
printf("\t\t|\t 5. insert record |\n");
printf("\t\t|\t 6. order |\n");
printf("\t\t|\t 7. number |\n");
printf("\t\t|-----------------------------------------------|\n\n");
printf("\t\t\tchoose(0-7):");
}
void order()/*自定义排序函数*/
{
FILE* fp;
struct student t;
int i = 0, j = 0, m = 0;
if ((fp = fopen("data.txt", "r+")) == NULL)
{
printf("can not open!\n");
return;
}
while (!feof(fp))
if (fread(&stu[m], LEN, 1, fp) == 1)
m++;
fclose(fp);
if (m == 0)
{
printf("no record!\n");
return;
}
if ((fp = fopen("data.txt", "wb")) == NULL)
{
printf("can not open\n");
return;
}
for (i = 0; i < m - 1; i++)
for (j = i + 1; j < m; j++)/*双重循环实现成绩比较并交换*/
if (stu[i].sum < stu[j].sum)
{
t = stu[i]; stu[i] = stu[j]; stu[j] = t;
}
if ((fp = fopen("data.txt", "wb")) == NULL)
{
printf("can not open\n"); return;
}
for (i = 0; i < m; i++)/*将重新排好序的内容重新写入指定的磁盘文件中*/
if (fwrite(&stu[i], LEN, 1, fp) != 1)
{
printf("%s can not save!\n");
_getch();
}
fclose(fp);
printf("save successfully\n");
}
void del()/*自定义删除函数*/
{
FILE* fp;
int snum, i, j, m = 0;
char ch[2];
if ((fp = fopen("data.txt", "r+")) == NULL)
{
printf("can not open\n"); return;
}
while (!feof(fp)) if (fread(&stu[m], LEN, 1, fp) == 1) m++;
fclose(fp);
if (m == 0)
{
printf("no record!\n");
return;
}
printf("please input the number:");
scanf("%d", &snum);
for (i = 0; i < m; i++)
if (snum == stu[i].num)
break;
printf("find the student,delete?(y/n)");
scanf("%s", ch);
if (strcmp(ch, "Y") == 0 || strcmp(ch, "y") == 0)/*判断是否要进行删除*/
for (j = i; j < m; j++)
stu[j] = stu[j + 1];/*将后一个记录移到前一个记录的位置*/
m--;/*记录的总个数减1*/
if ((fp = fopen("data.txt", "wb")) == NULL)
{
printf("can not open\n"); return;
}
for (j = 0; j < m; j++)/*将更改后的记录重新写入指定的磁盘文件中*/
if (fwrite(&stu[j], LEN, 1, fp) != 1)
{
printf("can not save!\n");
_getch();
}
fclose(fp);
printf("delete successfully!\n");
}
void search()/*自定义查找函数*/
{
FILE* fp;
int snum, i, m = 0;
char ch[2];
if ((fp = fopen("data.txt", "rb")) == NULL)
{
printf("can not open\n"); return;
}
while (!feof(fp)) if (fread(&stu[m], LEN, 1, fp) == 1) m++;
fclose(fp);
if (m == 0) { printf("no record!\n"); return; }
printf("please input the number:");
scanf("%d", &snum);
for (i = 0; i < m; i++)
if (snum == stu[i].num)/*查找输入的学号是否在记录中*/
{
printf("find the student,show?(y/n)");
scanf("%s", ch);
if (strcmp(ch, "Y") == 0 || strcmp(ch, "y") == 0)
{
printf("number name elective experiment required sum\t\n");
printf(FORMAT, DATA);/*将查找出的结果按指定格式输出*/
break;
}
}
if (i == m) printf("can not find the student!\n");/*未找到要查找的信息*/
}
void modify()/*自定义修改函数*/
{
FILE* fp;
int i, j, m = 0, snum;
if ((fp = fopen("data.txt", "r+")) == NULL)
{
printf("can not open\n"); return;
}
while (!feof(fp))
if (fread(&stu[m], LEN, 1
没有合适的资源?快使用搜索试试~ 我知道了~
学生成绩管理系统c++源码大作业.zip
共11个文件
vsidx:2个
vcxproj:1个
user:1个
9 下载量 16 浏览量
2024-06-11
13:33:45
上传
评论 11
收藏 1.22MB ZIP 举报
温馨提示
学生成绩管理系统c++源码大作业.zip 学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.zip学生成绩管理系统c++源码大作业.
资源推荐
资源详情
资源评论
收起资源包目录
学生成绩管理系统c++.zip (11个子文件)
test12c-language-0523-c-cncost
test_12
.vs
test_12
v17
DocumentLayout.json 2KB
Browse.VC.db 1.84MB
.suo 20KB
ipch
AutoPCH
3320c008c1426d3f
TEST_12_05_23.ipch 4.13MB
FileContentIndex
54b5c4de-9537-4abb-90fb-692b7375a98e.vsidx 194B
e86521c3-09d0-4d66-95ae-c7ff0f10074e.vsidx 200B
test_12.vcxproj.user 168B
test_12.vcxproj 6KB
test_12_05_23.cpp 11KB
test_12.vcxproj.filters 975B
test_12.sln 1KB
共 11 条
- 1
资源评论
盈梓的博客
- 粉丝: 9562
- 资源: 2308
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功