第一次写博客—大学生成绩管理系统
基本要求
使用c语言在windows环境下使用本地编译器实现成绩管理系统,要求具有登录以及基本的增、删、查、改功能。
源代码
因为是第一次尝试写博客,程序思路及代码的各功能就不一一解释了,感兴趣的同学的看看,同时欢迎各位大佬指正不足和错误。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void login();
void numquery();
void insert();
void update();
void del();
void list();
void inde();
int k=0,n=3,a;
struct user
{ char username[20];
char password[20];
}user[3]={{"aaa","111"},{"bbb","222"},{"ccc","111"}};
struct student
{ int num;
char name[20];
float score[5];
int classs;
char sub[20];
}s[30]={{101,"li",{65,66,78,90,87},9901,"会计"},{102,"wang",{65,66,78,90,87},9901,"软工"},{103,"zhang",{68,78,56,88,90},9901,"软工"}};
void login() //登录功能
{ int i; char a[20],b[20];
printf("please input username:");
scanf("%s",a);
printf("please input password:");
scanf("%s",b);
for(i=0;i<3;i++)
if(strcmp(a,user[i].username)==0&&strcmp(b,user[i].password)==0)
{ printf("登录成功!");
inde(); break; }
if(i==3)
{printf("登录失败!"); k++;
if(k>=3) exit(1);
else login();}
}
void inde() //主菜单函数
{ int x,z;
printf("欢迎来到学生管理系统\n");
printf("---------------------\n");
printf("选择要查询的类型\n");
printf("1 按学号查询\n2 添加\n3 删除\n4 修改 \n5显示全部 \n6 退出登入\n");
printf("---------------------\n");
scanf("%d",&x);
if (x==1) numquery();
if(x==2) insert();
if(x==3) del();
if(x==4) update();
if(x==5) list();
if(x==6){
printf("是否继续登入账号(1 是;2 否)\n");
scanf("%d",&z);
if(z==1) inde();
else{ printf("退出系统成功!!!");
exit(1);}
};
}
void numquery() //按学号查询函数
{ int i,x;
printf("请输入要查询的学号:");
scanf("%d",&x);
for(i=0;i<n;i++)
if(x==s[i].num)
{ printf("%5d %s %.2f %.2f %.2f %.2f %.2f%5d%s\n",s[i].num,s[i].name,s[i].score[0],s[i].score[1],s[i].score[2],s[i].score[3],s[i].score[4],s[i].classs,s[i].sub); break;}
if(i==n) printf("没有这个学生的纪录\n");
printf("1 返回主菜单\n 2 继续查询\n");
scanf("%d",&x);
if(x==1) inde();
else numquery();
}
void insert() //添加学生函数
{ int x,i;
int num;
char name[20];
float score[5];
int classs;
char sub[20];
printf("请输入要添加的学号:");
scanf("%d",&num);
printf("请输入要添加的姓名:");
scanf("%s",name);
for(i=0;i<5;i++)
{
printf("请输入要添加的第%d门课成绩:",i+1);
scanf("%f",&score[i]);
}
printf("请输入要添加的班级号:");
scanf("%d",&classs);
printf("请输入要添加的专业:");
scanf("%s",sub);
s[n].num=num;
strcpy(s[n].name,name);
for(i=0;i<5;i++)
s[n].score[i]=score[i];
s[n].classs=classs;
strcpy(s[n].sub,sub);
n++; //实际人数增1
printf("1 返回主菜单\n 2 继续添加\n");
scanf("%d",&x);
if(x==1) inde();
else insert();
}
void list() //显示全部学生信息
{ int x,i;
for(i=0;i<n;i++)
printf("%5d %s %.2f %.2f %.2f %.2f %.2f%5d%s\n",s[i].num,s[i].name,s[i].score[0],s[i].score[1],s[i].score[2],s[i].score[3],s[i].score[4],s[i].classs,s[i].sub);
if(a==1){
printf("1 返回主菜单\n2 继续显示\n3 继续删除\n");
a++;}
else
printf("1 返回主菜单\n2 继续显示\n");
scanf("%d",&x);
if(x==1) inde();
if(x==2) list();
if(x==3) del();
}
void del() //删除学生信息
{
int i,j,m;
printf("请输入要删除学生所有信息的学生学号(0 退出并回到主菜单;1显示目前全部学生信息):\n");
scanf("%d",&a);
if(a==0)
inde();
if(a==1)
list();
for(i=0;i<n;i++){
if(a==s[i].num){
if(i==n-1){
n--;
break;
}
else{
for(m=i;m<n-1;m++){
s[m].num=s[m+1].num;
s[m].classs=s[m+1].classs;
for(j=0;j<5;j++){
s[m].score[j]=s[m+1].score[j];}
strcpy(s[m].name,s[m+1].name);
strcpy(s[m].sub,s[m+1].sub);}
n--;
break;
}
}
}
del();
}
void update() //修改学生信息
{ int x,y,z,i,m,first,h,j;
char name1[20],sub1[20];
printf("请输入要修改的学生学号,对该学生进行学生信息修改(0退出修改回到主菜单)\n");
scanf("%d",&x);
if(x==0)
inde();
for(i=0;i<n;i++){
if(x==s[i].num)
m=i;
}
printf("\n1 学号修改\n2 名字修改\n3 成绩\n4 班级\n5 专业\n");
scanf("%d",&y);
if(y==1){
printf("将该学生的学号修改为:");
scanf("%d",&z);
s[m].num=z;
}
if(y==2){
printf("将该学生的姓名修改为:");
getchar();
gets(name1);
strcpy(s[m].name,name1);
}
if(y==3){
do{
printf("修改第几课目成绩(输入0退出修改成绩)\n");
scanf("%d",&first);
if(first==0)
break;
else if(first==1)
j=0;
else if(first==2)
j=1;
else if(first==3)
j=2;
else if(first==4)
j=3;
else if(first==5)
j=4;
else{ printf("无此科目,请重新输入!!\n");
continue;}
printf("将该成绩修改为:\n");
scanf("%d",&z);
s[m].score[j]=z;
}while(1);
}
if(y==4){
printf("将该学生班级修改为:\n");
scanf("%d" ,&z);
s[m].classs=z;
}
if(y==5){
printf("将该学生专业修改为:\n");
getchar();
gets(sub1);
strcpy(s[m].sub,sub1);
}
printf("修改成功!!!!\n");
printf("1继续修改\n2回到主菜单)\n");
scanf("%d",&h);
if(h==1)
update();
if(h==2)
inde();
}
int main()
{ login();
inde();
return 0;
}
总结
程序不是现写的就不展示运行截图了,感兴趣可以自行复制粘贴去编译一下,大一萌新要是有类似的大作业可不要照搬哦,多动手试试才会进步呢。
还有,写博客感觉还不错,以后尽量保持写博客吧,啊哈哈。。。。