原本想着只用一个头文件,但是操作字符串自己写一个函数不好弄,就加了一个#include
以下是耗时半天编写的代码,累~~~~
还有一件事,没有写判断输入类型的函数(其实是懒,没有写),例如:不要在输入学号ID,int类型的地方输入字符或者是符号。否则你可以试一下。
对应着类型输入就可以。
/*********************************************************************
文件名称:
文件描述:
编写时间:2020年6月1日
创建工程:韩法旭
***********************************************************************/
#include
#include
typedef struct stu{
int ID; //学号
char name[15]; //名字
char sex[10]; //性别
int grade; //成绩
int num; //代号
}student;
int temp=1; //菜单结束判断
int str=0; //结构体编号
student s[100];
int ji;//记录值
int dh=1; //学生代号
void list(){
printf("代号----------名字---------学号---------性别---------成绩\n");
for(int i=0;s[i].num!=0;i++){
printf("%d %s %d %s %d",s[i].num,s[i].name,s[i].ID,s[i].sex,s[i].grade);
printf("\n");
}
printf("\n");
printf("==-------------==------------==------------==------------==\n");
printf("\n");
printf("\n");
}
//============↓↓↓↓↓↓↓====输入函数(能力不够,数量来凑)============↓↓↓↓↓↓===========
void inquID(){ //输入学号
int t;
scanf("%d",&t);
s[str].ID=t;
}
void inquName(){ //输入名字
char cha[15];
scanf("%s",cha);
for(int i=0;i<15;i++){
s[str].name[i]=cha[i];
}
}
void inquSex(){ //输入性别
char cha[10];
scanf("%s",cha);
for(int i=0;i<15;i++){
s[str].sex[i]=cha[i];
}
}
void inquGrade(){ //输入成绩
int g;
scanf("%d",&g);
s[str].grade=g;
s[str].num=dh++;
str++;
}
//===========↑↑↑↑↑↑↑↑↑========输入函数(能力不够,数量来凑)======↑↑↑↑↑↑↑================
//============↓↓↓↓↓↓↓=========删除函数(能力不够,数量来凑)============↓↓↓↓↓↓===========
void delID(){//通过 ID 删除学生成绩
printf("请输入要删除成绩学生的学号\n");
int inID;
int ty=0;
scanf("%d",&inID);
for(int i=0;i<=dh;i++){
if(s[i].ID==inID){
printf("删除结果为:\n");
s[i].grade=-1;
printf("代号----------名字---------学号---------性别---------成绩\n");
printf("%d %s %d %s %d",s[i].num,s[i].name,s[i].ID,s[i].sex,s[i].grade);
printf("\n");
ty=1;
}
}
if(ty==0){
printf("该学生不存在\n");
}
}
void delName(){
printf("请输入要删除成绩学生的名字\n");
char inName[15];
int ty=0;
scanf("%s",&inName);
for(int i=0;i<dh;i++){
if(strcmp(s[i].name,inName)==0){
printf("删除结果为:\n");
s[i].grade=-1;
printf("代号----------名字---------学号---------性别---------成绩\n");
printf("%d %s %d %s %d",s[i].num,s[i].name,s[i].ID,s[i].sex,s[i].grade);
printf("\n");
ty=1;
}
}
if(ty==0){
printf("该学生不存在\n");
}
}
//===========↑↑↑↑↑↑↑↑↑========删除函数(能力不够,数量来凑)======↑↑↑↑↑↑↑================
//============↓↓↓↓↓↓↓=========查询函数(能力不够,数量来凑)============↓↓↓↓↓↓===========
void inqID(){//根据 学号 查询
printf("请输入学号\n");
int inID;
int ty=0;
scanf("%d",&inID);
for(int i=0;i<=dh;i++){
if(s[i].ID==inID){
printf("查询结果为:\n");
printf("代号----------名字---------学号---------性别---------成绩\n");
printf("%d %s %d %s %d",s[i].num,s[i].name,s[i].ID,s[i].sex,s[i].grade);
printf("\n");
ty=1;
}
}
if(ty==0){
printf("该学生不存在\n");
}
}
void inqName(){//根据 名字 查询
printf("请输入名字\n");
char inName[15];
int ty=0;
scanf("%s",&inName);
for(int i=0;i<dh;i++){
if(strcmp(s[i].name,inName)==0){
printf("查询结果为:\n");
printf("代号----------名字---------学号---------性别---------成绩\n");
printf("%d %s %d %s %d",s[i].num,s[i].name,s[i].ID,s[i].sex,s[i].grade);
printf("\n");
ty=1;
}
}
if(ty==0){
printf("该学生不存在\n");
}
}
//===========↑↑↑↑↑↑↑↑↑========查询函数(能力不够,数量来凑)======↑↑↑↑↑↑↑================
//============↓↓↓↓↓↓↓=========修改函数(能力不够,数量来凑)============↓↓↓↓↓↓===========
void reID(){
int inID;
printf("请输入要修改的值-学号\n");
scanf("%d",&inID);
printf("修改结果为:\n");
s[ji].ID=inID;
printf("代号----------名字---------学号---------性别---------成绩\n");
printf("%d %s %d %s %d",s[ji].num,s[ji].name,s[ji].ID,s[ji].sex,s[ji].grade);
printf("\n");
}
void reName(){
char inName[15];
printf("请输入要修改的值-名字\n");
scanf("%s",&inName);
printf("修改结果为:\n");
strcpy(s[ji].name,inName);
printf("代号----------名字---------学号---------性别---------成绩\n");
printf("%d %s %d %s %d",s[ji].num,s[ji].name,s[ji].ID,s[ji].sex,s[ji].grade);
printf("\n");
}
void reSex(){
char inSex[10];
printf("请输入要修改的值-性别\n");
scanf("%s",&inSex);
printf("修改结果为:\n");
strcpy(s[ji].sex,inSex);
printf("代号----------名字---------学号---------性别---------成绩\n");
printf("%d %s %d %s %d",s[ji].num,s[ji].name,s[ji].ID,s[ji].sex,s[ji].grade);
printf("\n");
}
void reGrade(){
int inGrade;
printf("请输入要修改的值-成绩\n");
scanf("%d",&inGrade);
printf("修改结果为:\n");
s[ji].grade=inGrade;
printf("代号----------名字---------学号---------性别---------成绩\n");
printf("%d %s %d %s %d",s[ji].num,s[ji].name,s[ji].ID,s[ji].sex,s[ji].grade);
printf("\n");
}
void renum(){
list();
printf("请输入要修改学生的代号\n");
int inNum;
int ty=0;
scanf("%d",&inNum);
for(int i=0;i<=dh;i++){
if(s[i].num==inNum){
printf("\n");
printf("你要修改的学生是:");
printf("\n");
printf("代号----------名字---------学号---------性别---------成绩\n");
printf("%d %s %d %s %d",s[i].num,s[i].name,s[i].ID,s[i].sex,s[i].grade);
printf("\n");
printf("1.修改学号 2.修改名字 3.修改性别 4.修改成绩\n");
ji=i;
int x;
scanf("%d",&x);
switch(x){
case 1:
reID();
break;
case 2:
reName();
break;
case 3:
reSex();
break;
case 4:
reGrade();
}
printf("\n");
ty=1;
}
}
if(ty==0){
printf("该学生不存在\n");
}
}
//===========↑↑↑↑↑↑↑↑↑========修改函数(能力不够,数量来凑)======↑↑↑↑↑↑↑================
//============↓↓↓↓↓↓↓=========冒泡排序函数(能力不够,数量来凑)============↓↓↓↓↓↓===========
void sort(){
int n= sizeof(s)/sizeof(s[0]);
for (int i=0; i<n-1; ++i) //比较n-1轮
{
for (int j=0; j<n-1-i; ++j) //每轮比较n-1-i次,
{
if (s[j].grade < s[j+1].grade)
{
int t = s[j].num;
s[j].num = s[j+1].num;
s[j+1].num= t;
student t1 = s[j];
s[j]= s[j+1];
s[j+1]= t1;
}
}
}
list();
}
//===========↑↑↑↑↑↑↑↑↑========冒泡排序函数(能力不够,咳)======↑↑↑↑↑↑↑================
void menu(){
while(temp){
printf("\t\t》》》学生管理系统《《《\n");
printf("=========================================================\n");
printf("*\t1.输入学生成绩\t\t2.删除学生成绩\t\t*\n");
printf("*\t3.查询学生成绩\t\t4.修改学生成绩\t\t*\n");
printf("*\t5.排序学生成绩\t\t6.列出所有学生\t\t*\n");
printf("*\t\t\t8.退出系统\t\t\t*\n");
printf("=========================================================\n");
int i;
scanf("%d",&i);
switch(i){
case 1 : /////已实现
printf("请输入学生学号\n");
inquID();//输入学号
printf("请输入学生名字\n");
inquName();//输入名字
printf("请输入学生性别\n");
inquSex(); //输入性别
printf("请输入学生成绩\n");
inquGrade();//输入成绩
break;
case 2 : //////已实现
int x;
printf("++++++++++删除学生成绩++++++++++++\n");
printf("==================================\n");
printf("--------1.输入学号删除------------\n");
printf("--------2.输入名字删除------------\n");
printf("==================================\n");
scanf("%d",&x);
if(x==1){
delID(); //通过学号 删除学生成绩
}else if(x==2){
delName(); //通过名字 删除学生成绩
}
break;
case 3 : /////已实现
int c;
printf("++++++++++查询学生成绩++++++++++++\n");
printf("==================================\n");
printf("--------1.输入学号查询------------\n");
printf("--------2.输入名字查询------------\n");
printf("==================================\n");
scanf("%d",&c);
if(c==1){
inqID(); //通过 学号 查询
}else if(c==2){
inqName();
}
break;
case 4 :
int xg;
printf("\t\t++++++++++修改学生成绩++++++++++++\n");
printf("\t\t以下是当前学生列表\n");
renum();
//修改 ;
break;
case 5 :
printf("++++++++++排序++++++++++++\n");
printf("\n");
sort();
break;
case 6 :
list();
break;
case 8:
temp=0;
printf("您已安全退出\n");
break;
}
menu();
}
}
int main(){
menu();
return 0;
}
运行截图就不放了,太长了,你们(指同学)不会看的,溜了溜了。
算了,运行结果的图片链接在这:
https://s1.ax1x.com/2020/06/01/tJCqUA.png
有些长。。