VC6.0环境下的C程序
#include<stdio.h> /*I/O函数*/ #include<stdlib.h> /*其它说明*/ #include<string.h> /*字符串函数*/ #define LEN 20 /* 学号和姓名最大字符数,实际请更改*/ #define N 50 /* 最大学生人数,实际请更改*/ struct Student /*创建结构体*/ { char* code; /* 学号*/ char* name; /* 姓名*/ int age; /* 年龄*/ char sex[N]; /* 性别*/ float score[3]; /* 3门课程成绩*/ }stu[N]; int k=1,n=0, m=0;/* n代表当前记录的学生人数,k用来控制程序是否继续*/ void seek(); void modify(); void insert(); void del(); void display(); void menu(); void save(); void updata(); int main() { while(k) { menu(); } system("pause"); return 0; } void help() //帮助文档 { int item; printf("\n0.欢迎使用系统帮助!\n"); printf("\n1.初次进入系统后,请先选择增加学生信息;\n"); printf("\n2.按照菜单提示键入数字代号;\n"); printf("\n3.增加学生信息(4)后,切记保存;\n"); printf("\n4.谢谢您的使用!\n"); system("pause"); /* 防止程序“闪现”*/ } void seek() /*查找*/ { int i,item,flag; char s1[LEN+1]; /* 以姓名和学号最长长度+1为准*/ printf("------------------\n"); printf("-----1.按学号查询-----\n"); printf("-----2.按姓名查询-----\n"); printf("-----3.退出本菜单-----\n"); printf("------------------\n"); while(1) { printf("请选择子菜单编号:"); scanf("%d",&item); flag=0; switch(item) { case 1: printf("请输入要查询的学生的学号:\n"); scanf("%s",s1); for(i=0;i<n;i++) //遍历已有学号,和输入学号作对比 if(strcmp(stu[i].code,s1)==0) //strcmp函数返回0,表示两字符串相同 { flag=1; printf("学生学号 学生姓名 年龄 性别 C语言成绩 高等数学 大学英语成绩\n"); printf("--------------------------------------------------------------------\n"); printf("%6s %7s m %6s %9.1f .1f .1f\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].score[0],stu[i].score[1],stu[i].score[2]); } if(0==flag) printf("该学号不存在!\n"); break; case 2: printf("请输入要查询的学生的姓名:\n"); scanf("%s",s1); for(i=0;i<n;i++) //遍历,同上 if(strcmp(stu[i].name,s1)==0) { flag=1; printf("学生学号 学生姓名 年龄 性别 C语言成绩 高等数学 大学英语成绩\n"); printf("--------------------------------------------------------------------\n"); printf("%6s %7s m %6s %9.1f .1f .1f\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].score[0],stu[i].score[1],stu[i].score[2]); } if(0==flag) printf("该姓名不存在!\n"); break; case 3:return; default:printf("请在1-3之间选择\n"); } } } void modify() /*修改信息*/ { int i,item,num,age; char sex1[LEN+1],s1[LEN+1],s2[LEN+1]; /* 以姓名和学号最长长度+1为准*/ float score1; printf("请输入要要修改的学生的学号:\n"); scanf("%s",s1); for(i=0;i<n;i++) if(strcmp(stu[i].code,s1)==0) /*比较字符串是否相等*/ num=i; printf("------------------\n"); printf("1.修改姓名\n"); printf("2.修改年龄\n"); printf("3.修改性别\n"); printf("4.修改C语言成绩\n"); printf("5.修改高等数学成绩\n"); printf("6.修改大学英语成绩\n"); printf("7.退出本菜单\n"); printf("------------------\n"); while(1) { printf("请选择子菜单编号:"); scanf("%d",&item); switch(item) { case 1: printf("请输入新的姓名:\n"); scanf("%s",s2); strcpy(stu[num].name,s2); break; /*strcpy用于修改字符串*/ case 2: printf("请输入新的年龄:\n"); scanf("%d",&age); /*使用中间变量替换*/ stu[i].age=age; break; case 3: printf("请输入新的性别:\n"); scanf("%s",&sex1); strcpy(stu[num].sex,sex1); break; case 4: printf("请输入新的C语言成绩:\n"); scanf("%f",&score1); stu[num].score[0]=score1; break; case 5: printf("请输入新的高等数学成绩:\n"); scanf("%f",&score1); stu[num].score[1]=score1; break; case 6: printf("请输入新的大学英语成绩:\n"); scanf("%f",&score1); stu[num].score[2]=score1; break; case 7: return; default:printf("请在1-7之间选择\n"); } } } void sort()/*按学号排序*/ { int i,j,k,*p,*q,s; char temp[LEN+1],ctemp[LEN+1]; float ftemp; for(i=0;i<n-1;i++) { for(j=n-1;j>i;j--) if(strcmp(stu[j-1].code,stu[j].code)>0) /*按学号比较*/ { strcpy(temp,stu[j-1].code); strcpy(stu[j-1].code,stu[j].code); strcpy(stu[j].code,temp); strcpy(temp,stu[j-1].name); strcpy(stu[j-1].name,stu[j].name); strcpy(stu[j].name,temp); strcpy(ctemp,stu[j-1].sex); strcpy(stu[j-1].sex,stu[j].sex); strcpy(stu[j].sex,ctemp); p=&stu[j-1].age; q=&stu[j].age; s=*q; *q=*p; *p=s; for(k=0;k<3;k++) { ftemp=stu[j-1].score[k]; stu[j-1].score[k]=stu[j].score[k]; stu[j].score[k]=ftemp; } } } } void insert() /*插入函数,增加学生信息*/ { int j=n; printf("请输入待增加的学生数:\n"); scanf("%d",&m); do { stu[j].code=(char *)malloc(20); stu[j].name=(char *)malloc(20); printf("请输入第%d 个学生的学号:\n",j-n+1); scanf("%s",stu[j].code); printf("请输入第%d 个学生的姓名:\n",j-n+1); scanf("%s",stu[j].name); printf("请输入第%d 个学生的年龄:\n",j-n+1); scanf("%d",&stu[j].age); printf("请输入第%d 个学生的性别:\n",j-n+1); scanf(" %s",&stu[j].sex); printf("请输入第%d 个学生的C语言成绩\n",j-n+1); scanf("%f",&stu[j].score[0]); printf("请输入第%d 个学生的高等数学成绩:\n",j-n+1); scanf("%f",&stu[j].score[1]); printf("请输入第%d 个学生的大学英语成绩:\n",j-n+1); scanf("%f",&stu[j].score[2]); j++; }while(j<n+m); n+=m; printf("信息增加完毕!\n\n"); sort(); } void del() /*按学号删除学生信息*/ { int i,j,flag=0; char s1[LEN+1]; printf("请输入要删除学生的学号:\n"); scanf("%s",s1); for(i=0;i<n;i++) if(strcmp(stu[i].code,s1)==0) { flag=1; for(j=i;j<n-1;j++) stu[j].code=stu[j+1].code; stu[j].name=stu[j+1].name; stu[j].age=stu[j+1].age; strcpy(stu[j].sex,stu[j+1].sex); stu[j].score[0]=stu[j+1].score[0]; stu[j].score[1]=stu[j+1].score[1]; stu[j].score[2]=stu[j+1].score[2]; } if(flag==0) printf("该学号不存在!\n"); if(flag==1) { printf("删除成功,显示结果请选择菜单\n"); n--; } } void display() /*显示当前信息*/ { int i; printf("共有%d位学生的信息:\n",n); if(n) { printf("学生学号 学生姓名 年龄 性别 C语言成绩 高等数学 大学英语成绩\n"); printf("--------------------------------------------------------------------\n"); for(i=0;i<n;i++) { printf("%7s %7s m %s %9.1f .1f .1f\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex, stu[i].score[0],stu[i].score[1],stu[i].score[2]); } } system("pause"); /* 防止程序“闪现”*/ } void save(){/*保存*/ int i; FILE *fp; fp=fopen("学生信息.txt","w"); for(i=0;i<n;i++) { fprintf(fp,"%7s %7s m %6s %9.1f .1f .1f\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex, stu[i].score[0],stu[i].score[1],stu[i].score[2]); } fclose(fp); } void updata(){ //刷新 return; } void menu()/* 界面*/ { char num; printf(" \n\n \n\n"); printf(" ******************************************************\n\n"); printf(" * 学生信息管理系统 *\n \n"); printf(" ******************************************************\n\n"); printf("*********************系统功能菜单************************* \n"); printf(" ---------------------- ---------------------- \n"); printf(" ********************************************* \n"); printf(" * 0.系统帮助及说明 * * 1.刷新学生信息 * \n"); printf(" ********************************************* \n"); printf(" * 2.查询学生信息 * * 3.修改学生信息 * \n"); printf(" ********************************************* \n"); printf(" * 4.增加学生信息 * * 5.按学号删除信息 * \n"); printf(" ********************************************* \n"); printf(" * 6.显示当前信息 * * 7.保存当前学生信息* \n"); printf(" ********************** ********************** \n"); printf(" * 8.退出系统 * \n"); printf(" ********************** \n"); printf(" ---------------------- ---------------------- \n"); printf("请选择菜单编号:"); scanf("%s",&num); switch(num) { case '0':help();break; case '1':updata();break; case '2':seek();break; case '3':modify();break; case '4':insert();break; case '5':del();break; case '6':display();break; case '7':save();break; case '8':k=0;break; default:printf("请在0-8之间选择\n"); printf("3秒后自动跳转主页面,请等待\n"); _sleep(3000); } }半年来的学习第一次发表专业博客,还有很多问题,希望以后的程序可以臻至完美。