****#学生信息管理系统
这个我们是当作一个实践课作业独立完成的。老师就给了几个选题,作为小白,我就选了最简单的。我们没有上课,就老师拉了个群,发个文件,就没了。
要知道,当时我看到都懵了。想着啥都没讲,就让我做个系统,我哪里会。我当时就真以为是我们存款机那种的一个系统。后来,我就报着试一试的心理,去百度看看。毕竟都是个大学生了,什么东西都要自己解决,不会就百度。后来,真的就有,看了人家做出来的东西发现,是我想的深奥了,原来做出来的系统还是个黑框。然后我就自己写了一个。自己也不算厉害那种,然后就都是用很简单的语句。
**
##
**功能主要是对学生信息进行添加、删除、查找、显示信息、排序、存档。
实现代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void creat();
void info();
void add();
void shanchu();
void search();
void charge();
void show();
void sort();
void save();
int count=0;
struct Student{
int num;
char name[20];
int English;
int math;
int chinese;
int ave;
int total;
}student[60],stemp;//结构体,学生信息
int main(){
creat();
return 0;
}
void creat(){
int a=0;
info();
printf("当前文件中有%d条数据\n", count);
printf("\t\t\t欢迎使用学生成绩管理系统\n");
printf("1:添加一条学生数据\n");
printf("2:删除一条学生数据\n");
printf("3:查找一条学生数据\n");
printf("4:修改一条学生数据\n");
printf("5:显示所有学生数据\n");
printf("6:按照学生成绩排序\n");
printf("7:学生数据存档并退出\n");
while(1){
scanf("%d",&a);
switch(a){
case 1:add();break;
case 2:shanchu();break;
case 3:search();break;
case 4:charge();break;
case 5:show();break;
case 6:sort();break;
case 7:save();
}}
}
void info(){
FILE*fp=NULL;
fp=fopen("student.txt","r");
if(!fp){
printf("打开文件失败\n");
exit(0);
}
while(1){
fscanf(fp,"%d%s%f%f%f%f",&student[count].num,&student[count].name,&student[count].English,&student[count].math,
&student[count].chinese,&student[count].ave,&student[count].total);
if(feof(fp)){
break;
}
count++;
}
}//打开文件
void add(){
int num=0;
printf("请输入学号\n");
scanf("%d",&num);
student[count].num=num;
printf("请输入姓名\n") ;
scanf("%s",student[count].name);
printf("请输入英语成绩\n");
scanf("%d",&student[count].English);
student[count].total+=student[count].English;
printf("请输入数学成绩\n");
scanf("%d",&student[count].math);
student[count].total+=student[count].math;
printf("请输入语文成绩\n");
scanf("%d",&student[count].chinese);
student[count].total+=student[count].chinese;
student[count].ave=student[count].total/3.0;
printf("%s同学的成绩添加完成\n",student[count].name);
count++;
}//输入结构体数值进行添加学生的信息
void shanchu(){
int num=0;int k=0;int j=0;
printf("请输入你想删除的学生的学号\n");
scanf("%d",&num);
for(int i=0;i<count;i++){
if(student[i].num==num){
student[i]=student[i+1];
printf("删除成功\n");
k=i;j=1;
count--;
for(int i=k+1;i<count;i++)
student[i]=student[i+1];}}
if(j!=1)
printf("查无此人\n");
}//删除学生的信息
void search(){
int num=0;
int k=0;
printf("请输入你想查找的学生的学号\n");
scanf("%d",&num);
for(int i=0;i<count;i++){
if(student[i].num==num){
printf("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("学号:%d 姓名:%s 英语:%d 数学:%d 语文:%d 总分:%d 平均分:%d\n",student[i].num,student[i].name,
student[i].English,student[i].math,student[i].chinese,student[i].total,student[i].ave);
printf("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");k=1;}
if(k!=1)
printf("查无此学生\n") ;
}
}//查找学生的信息
void charge(){
int num=0;
printf("请输入你想修改的学生的学号\n");
scanf("%d",&num);
for(int i=0;i<count;i++){
if(student[i].num==num){
student[i].total=0;student[i].ave=0;
printf("请输入该学生的学号\n");
scanf("%d",&student[i].num);
printf("请输入该学生的姓名\n");
scanf("%s",student[i].name);
printf("请输入该学生的英语成绩\n");
scanf("%d",&student[i].English);
student[i].total+=student[i].English;
printf("请输入该学生的数学成绩\n");
student[i].total+=student[i].math;
scanf("%d",&student[i].math);
printf("请输入该学生的语文成绩\n");
scanf("%d",&student[i].chinese);
student[i].total+=student[i].chinese;
student[i].ave=student[i].total/3.0;
printf("修改成功\n");
printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("学号:%d 姓名:%s 英语:%d 数学:%d 语文:%d 总分:%d 平均分:%d\n",student[i].num,student[i].name,
student[i].English,student[i].math,student[i].chinese,student[i].total,student[i].ave);
printf("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
}
else
printf("查无此学生\n");
}
}//找到该学生进行新的赋值达到修改学生的信息的目的
void show(){
if(count==0)
printf("无信息\n");
else{
for(int i=0;i<count;i++){
printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("学号:%d 姓名:%s 英语:%d 数学:%d 语文:%d 总分:%d 平均分:%d\n",student[i].num,student[i].name,
student[i].English,student[i].math,student[i].chinese,student[i].total,student[i].ave);
printf("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");//显示所有学生的信息
}
}
}
void sort(){
if(count<1)
printf("无学生信息\n");
else{
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){
stemp=student[j];
student[j]=student[j+1];
student[j+1]=stemp;}}}
printf("排序完成\n");
}}//通过冒泡排序法把所有学生成绩按总分进行排序
void save(){
FILE * fp = NULL;
fp = fopen("student.txt", "w");
for (int i = 0; i < count; i++){
fprintf(fp, "%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", student[i].num, student[i].name, student[i].English, student[i].math,
student[i].chinese, student[i].ave, student[i].total);
}
printf("数据保存成功,程序已退出\n");
exit(0);}//保存数据到student.txt中
输出如下:
我觉得我的代码是最简单的了,就感觉简单的不能再简单了,根本没有任何复杂的语句,一看就能看懂吧。
多看代码呀!!