当前位置:网站首页>学生成绩管理系统(C语言版)
学生成绩管理系统(C语言版)
2022-07-30 05:43:00 【m0_67402731】
大一上学期实训项目总结(学生成绩管理系统)
大一刚接触这个计算机专业的相关知识,就觉得这个专业很有趣。最先接触的编程语言就是C语言,想必大多数人都是如此吧。我们这个学期末,也就是期末考试结束后,开始这个实训。我也是第一次听说实训这个东西,当然可能这个实训也主要针对我们计算机专业的学生。
我们这次实训历时5天,是由公司请来的专业人员给我们进行指导的。前面几天时进行C语言基础知识的复习与巩固,后面两天就是给每个组时间,进行实训项目的制作。我们组选择的是学生成绩管理系统,这个也是比较常见的项目,有些组选择的是贪吃蛇等等。
下面给图片展示我们组的实训项目图片:
1 登录界面(确实挺简陋的)
2 功能界面
3 录入学生信息图片

4 查询信息示例图片
5 显示学生信息示例图片
6 退出界面
最后上代码,这是我们组这几天的实训成果,希望点个赞,谢谢啦。
#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%-12.1f
"
#define DATA stu[i].num,stu[i].name,stu[i].cyy,stu[i].dlfx,stu[i].gs,stu[i].yy,stu[i].jd
struct student
{
int num;
char name[15];
double cyy;
double dlfx;
double gs;
double yy;
double jd;
};
struct student stu[51];
void denglujiemian();
void menu1();
void menu2();
void in();
void search();
void del();
void modify();
void insert();
void order();
void total();
void show();
void flunk();
void denglujiemian();
int main()
{
system("color e3
");
int n;
char w;
printf("***欢***迎***进***入***学***生***成***绩***管***理***系***统***");
printf("请选择进入模式:
如果选择老师模式请输入“A”,选择学生模式请按“B”。");
scanf("%c",&w);
if(w=='A')
{
menu2();
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;
case 8: flunk();break;
case 9: show();break;
default:break;
}
printf("输入任意键将返回主菜单
");
getch();
menu2();
scanf("%d",&n);
}
}
else if(w=='B')
{
menu1();
scanf("%d",&n);
while(n)
{
switch(n)
{
case 1: search();break;
case 2: order();break;
case 3: total();break;
case 4: flunk();break;
case 5: show();break;
default:break;
}
printf("输入任意键将返回主菜单
");
getch();
menu1();
scanf("%d",&n);
}
}
else
{
printf("错误!!!请重新输入");
}
}
void in()
{
int i,m=0;
char ch[2];
FILE *fp;
if((fp=fopen("data1.txt","a+"))==NULL)
{
printf("文件不存在!
");
return;
}
while(!feof(fp))
{
if(fread(&stu[m] ,LEN,1,fp)==1)
{
m++;
}
}
fclose(fp);
if(m==0)
{
printf("文件中没有记录!
");
}
else
{
show();
}
if((fp=fopen("data1.txt","ab+"))==NULL)
{
printf("文件不存在!
");
return;
}
printf("输入学生信息(y/n):");
scanf("%s",ch);
while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
{
printf("学号:");
scanf("%d",&stu[m].num);
for(i=0;i<m;i++)
if(stu[i].num==stu[m].num)
{
printf("该序号已经存在了,按任意键继续!");
getch();
fclose(fp);
return;
}
printf("姓名:");
scanf("%s",stu[m].name);
printf("C语言:");
scanf("%lf",&stu[m].cyy);
printf("电路分析:");
scanf("%lf",&stu[m].dlfx);
printf("高等数学:");
scanf("%lf",&stu[m].gs);
printf("大学英语:");
scanf("%lf",&stu[m].yy);
stu[m].jd=stu[m].cyy/10-5+stu[m].dlfx/10-5+stu[m].gs/10-5+stu[m].yy/10-5;
if(fwrite(&stu[m],LEN,1,fp)!=1)
{
printf("不能保存!");
getch();
}
else
{
printf("%s 被保存!
",stu[m].name);
m++;
}
printf("继续?(y/n):");
scanf("%s",ch);
}
fclose(fp);
printf("OK!
");
}
void show()
{
FILE *fp;
int i,m=0;
fp=fopen("data1.txt","rb");
while(!feof(fp))
{
if(fread(&stu[m] ,LEN,1,fp)==1)
m++;
}
fclose(fp);
printf("学号 姓名 C语言 电路分析 高等数学 大学英语 总绩点
");
for(i=0;i<m;i++)
{
printf(FORMAT,DATA);
}
}
void menu2()
{
system("cls");
printf("
");
printf(" |---------------学生成绩管理系统---------------|
");
printf(" | |
");
printf(" | 1. 录入学生成绩 |
");
printf(" | 2. 查找学生信息 |
");
printf(" | 3. 删除学生信息 |
");
printf(" | 4. 修改学生信息 |
");
printf(" | 5. 插入学生信息 |
");
printf(" | 6. 按总绩点排序 |
");
printf(" | 7. 统计学生总数 |
");
printf(" | 8. 显示挂科学生信息 |
");
printf(" | 9. 显示所有学生信息 |
");
printf(" | 0. 退出系统 |
");
printf(" | |
");
printf(" |----------------------------------------------|
");
printf(" 制作团队:第二组
");
printf(" 请选择(0-9):");
}
void menu1()
{
system("cls");
printf("
");
printf(" |---------------学生成绩管理系统---------------|
");
printf(" | |
");
printf(" | 1. 查找学生信息 |
");
printf(" | 2. 按总绩点排序 |
");
printf(" | 3. 统计学生总数 |
");
printf(" | 4. 显示挂科学生信息 |
");
printf(" | 5. 显示所有学生信息 |
");
printf(" | 0. 退出系统 |
");
printf(" | |
");
printf(" |----------------------------------------------|
");
printf(" 制作团队:第二组
");
printf(" 请选择(0-5):");
}
void order()
{
FILE *fp;
struct student t;
int i=0,j=0,m=0;
if((fp=fopen("data1.txt","r+"))==NULL)
{
printf("文件不存在!
");
return;
}
while(!feof(fp))
if(fread(&stu[m] ,LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("文件中没有记录!
");
return;
}
if((fp=fopen("data1.txt","wb"))==NULL)
{
printf("文件不存在!
");
return;
}
for(i=0;i<m-1;i++)
for(j=i+1;j<m;j++)
if(stu[i].jd<stu[j].jd)
{
t=stu[i];stu[i]=stu[j];stu[j]=t;
}
if((fp=fopen("data1.txt","wb"))==NULL)
{
printf("文件不存在!
");
return;
}
for(i=0;i<m;i++)
if(fwrite(&stu[i] ,LEN,1,fp)!=1)
{
printf("%s 不能保存文件!
");
getch();
}
fclose(fp);
printf("保存成功
请返回选项9查看排名
");
}
void del()
{
FILE *fp;
int snum,i,j,m=0,n=0;
char ch[2];
if((fp=fopen("data1.txt","r+"))==NULL)
{
printf("文件不存在!
");
return;
}
while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++;
fclose(fp);
if(m==0)
{
printf("文件中没有记录!
");
return;
}
printf("请输入学生学号");
scanf("%d",&snum);
for(i=0;i<m;i++)
if(snum==stu[i].num)
{
printf("找到了这条记录,是否删除?(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--;
if((fp=fopen("data1.txt","wb"))==NULL)
{
printf("文件不存在
");
return;
}
for(j=0;j<m;j++)
if(fwrite(&stu[j] ,LEN,1,fp)!=1)
{
printf("can not save!
");
getch();
}
fclose(fp);
printf("删除成功!
");
}
else
{
printf("找到了记录,选择不删除!");
}
break;
}
else
{
n++;
}
if(n==m)
printf("没有找到记录!
");
}
void search()
{
FILE *fp;
int snum,i,m=0;
if((fp=fopen("data1.txt","rb"))==NULL)
{
printf("文件不存在!
");
return;
}
while(!feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("文件中没有记录!
");
return;
}
printf("请输入学号:");
scanf("%d",&snum);
for(i=0;i<m;i++)
if(snum==stu[i].num)
{
printf("学号 姓名 C语言 电路分析 高等数学 大学英语 总绩点
");
printf(FORMAT,DATA);
break;
}
if(i==m) printf("没有找到这名学生!
");
}
void modify()
{
FILE *fp;
struct student t;
int i=0,j=0,m=0,snum;
if((fp=fopen("data1.txt","r+"))==NULL)
{
printf("文件不存在!
");
return;
}
while(!feof(fp))
if(fread(&stu[m] ,LEN,1,fp)==1)
m++;
if(m==0)
{
printf("文件中没有记录!
");
fclose(fp);
return;
}
show();
printf("请输入要修改的学生学号: ");
scanf("%d",&snum);
for(i=0;i<m;i++)
if(snum==stu[i].num)
{
printf("找到了这名学生,可以修改他的信息!
");
printf("姓名:");
scanf("%s",stu[i].name);
printf("C语言:");
scanf("%lf",&stu[i].cyy);
printf("电路分析:");
scanf("%lf",&stu[i].dlfx);
printf("高等数学:");
scanf("%lf",&stu[i].gs);
printf("大学英语:");
scanf("%lf",&stu[i].yy);
printf("修改成功!");
stu[i].jd=(stu[i].cyy+stu[i].dlfx+stu[i].gs+stu[i].yy)/10-20;
if((fp=fopen("data1.txt","wb"))==NULL)
{
printf("can not open
");
return;
}
for(j=0;j<m;j++)
if(fwrite(&stu[j] ,LEN,1,fp)!=1)
{
printf("can not save!");
getch();
}
fclose(fp);
break;
}
if(i==m)
printf("没有找到这名学生!
");
}
void insert()
{
FILE *fp;
int i,j,k,m=0,snum;
if((fp=fopen("data1.txt","r+"))==NULL)
{
printf("文件不存在!
");
return;
}
while(!feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)
m++;
if(m==0)
{
printf("文件中没有记录!
");
fclose(fp);
return;
}
printf("请输入要插入的位置(学号):
");
scanf("%d",&snum);
for(i=0;i<m;i++)
if(snum==stu[i].num)
break;
for(j=m-1;j>i;j--)
stu[j+1]=stu[j];
printf("现在请输入要插入的学生信息.
");
printf("序号:");
scanf("%d",&stu[i+1].num);
for(k=0;k<m;k++)
if(stu[k].num==stu[m].num)
{
printf("该学号已经存在,按任意键继续!");
getch();
fclose(fp);
return;
}
printf("姓名:");
scanf("%s",stu[i+1].name);
printf("C语言:");
scanf("%lf",&stu[i+1].cyy);
printf("电路分析:");
scanf("%lf",&stu[i+1].dlfx);
printf("高等数学:");
scanf("%lf",&stu[i+1].gs);
printf("大学英语:");
scanf("%lf",&stu[i+1].yy);
stu[i+1].jd=(stu[i+1].cyy+stu[i+1].dlfx+stu[i+1].gs+stu[i+1].yy)/10-20;
printf("插入成功!按任意键返回主界面!");
if((fp=fopen("data1.txt","wb"))==NULL)
{
printf("不能打开!
");
return;
}
for(k=0;k<=m;k++)
if(fwrite(&stu[k] ,LEN,1,fp)!=1)
{
printf("不能保存!");
getch();
}
fclose(fp);
}
void total()
{
FILE *fp;
int m=0;
if((fp=fopen("data1.txt","r+"))==NULL)
{
printf("文件不存在!
");
return;
}
while(!feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)
m++;
if(m==0) {printf("no record!
");fclose(fp);return;}
printf("这个班级一共有 %d 名学生!
",m);
fclose(fp);
}
void flunk()
{
FILE *fp;
int i,m=0;
fp=fopen("data1.txt","rb");
while(!feof(fp))
{
if(fread(&stu[m] ,LEN,1,fp)==1)
m++;
}
fclose(fp);
printf("学号 姓名 C语言 电路分析 高等数学 大学英语 总绩点
");
for(i=0;i<m;i++)
{
if(stu[i].dlfx<60||stu[i].cyy<60||stu[i].gs<60||stu[i].yy<60)
printf(FORMAT,DATA);
}
}
边栏推荐
猜你喜欢

Flink CDC implements Postgres to MySQL streaming processing transmission case

FastAPI Quick Start

标准输入输出流(System.in,System.out)

【小程序项目开发-- 京东商城】uni-app之分类导航区域

PHP-fpm

uni-app使用npm命令安装组件

MySQL 5.7 installation tutorial (all steps, nanny tutorials)

"MySQL Advanced Chapter" four, the storage structure of the index

oracle行转列、列转行总结

c#下Web3合约空投、转账调用代码
随机推荐
【小程序项目开发-- 京东商城】uni-app之分类导航区域
oracle row to column, column to row summary
【调优】一个 Spark 任务某天突然变慢怎么解决
Connect to Mysql in the cloud server Docker detailed graphic and text operations (full)
一类SMS漏洞的防御思路
Bypassing the file upload vulnerability
Remember a traffic analysis practice - Anheng Technology (August ctf)
【面经】米哈游数据开发面经
【SQL】SQL 高频面试题英语版(1)
CTF之misc-其他类型隐写
Jackson serialization failure problem - oracle data return type can't find the corresponding Serializer
Flink CDC 实现Postgres到MySQL流式加工传输案例
FastAPI Quick Start
MySQL achievement method 】 【 5 words, single table SQL queries
uncategorized SQLException; SQL state [null]; error code [0]; sql injection violation, syntax error
根据ip地址获取地理位置及坐标(离线方式)
Flink PostgreSQL CDC configuration and FAQ
C#下大批量一键空投实现
mysql删除表中重复数据,(只保留一行)
Dcat Admin 安装