|
|
#6
milantgh2013-01-20 18:24
//学生成绩管理系统 //用户名:xdxy 密码:700619 #include<stdio.h> #include<conio.h> #include <stdlib.h> #include<string.h> #define MAX 1000 void menu(); void input(); void sort(); void display(); void display1(); void insert(); void del(); void average(); void find(); void save(); void read(); void del_file(); void modify(); int now_no=0; struct student { int no; char name[20]; char sex[4]; float score1; float score2; float score3; float sort; float ave; float sum; }; void main() { int h,flag1,flag2; char name[20]="xdxy",password[10]="700619"; char person[20],password1[10];
/*清屏*/ /*显示目录*/
/*输入数据函数*/ /*排序数据函数*/ /*显示数据函数*/ /*显示各科成绩函数*/ /*插入数据函数*/ /*删除数据函数*/ /*平均值函数*/ /*查找数据函数*/ /*保存数据函数*/ /*读出数据函数*/ /*删除文件函数*/ /*修改文件函数*/ //定义学生信息 // 学号 //姓名 //性别 //成绩 1 //成绩 2 //成绩 3 //排序成绩 //平均分 //总分
printf ("\t\t ******** 欢迎进入学生成绩管理系统!********\n\n"); printf ("\t\t\t 用 户 登 录\n\n"); for(h=0;h!=5;) {
printf("\t\t\t\t 用户名:"); gets(person); flag1=strcmp(person,name); printf("\t\t\t\t 密码:"); gets(password1); flag2=strcmp(password,password1); if(flag1==0 && flag2==0) { printf("\t\t\t\t 登陆成功!\n\n"); menu(); break; } else { printf ("\t\t\t 用户名或密码错误!\n\n"); printf ("\t\t\t 请注意:您还剩%d 次机会!\n\n",4-h); h++; } } if (h=5) printf ("对不起,您输入的用户名或密码有误,已被强制退出。\n"); }
struct student stu[MAX],*p; void menu() /*主函数*/ { int as; char ch; do{ printf("\n\n\n\n\t\t****&****&****&****&****&****&****&****&****&****"); start: printf("\n\n\n\n\t\t\t 欢迎使用学生成绩管理系统\n"); printf("\n\n\n\n\t\t******************按任意键继续********************"); ch=getch(); } while(!ch); system("cls"); /*以下为功能选择模块*/ do { printf("\n\t\t\t\t1. 录 入学 生信 息 \n\t\t\t\t2. 显 示 学生 总成 绩信息 \n\t\t\t\t3. 对 总 成绩 排序 \n\t\t\t\t4.显示学生单科成绩排序\n\t\t\t\t5.添加学生信息\n\t\t\t\t6.删除学生信息\n\t\t\t\t7.修改 学生信息\n\t\t\t\t8.查询学生信息\n\t\t\t\t9.从文件读入学生信息\n\t\t\t\t10.删除文件中学生信 息\n\t\t\t\t11.保存学生信息\n\t\t\t\t12.退出\n");
printf("\t\t\t\t 选择功能选项(输入所选功能前的数字):"); fflush(stdin); /*可用可不用,用于清除缓 存防止下次用 scanf 输入时出现错误*/ scanf("%d",&as); switch(as) { case 1:system("cls"); input(); break; case 2:system("cls"); display(); break; case 3:system("cls"); sort(); break; case 4:system("cls"); display1(); break; case 5:system("cls"); insert(); break; case 6:system("cls"); del(); break; case 7:system("cls"); modify(); break; case 8:system("cls"); find(); break; case 9:system("cls"); read(); break; case 10:system("cls"); del_file(); break; case 11:system("cls"); save(); break; case 12:system("exit"); exit(0); default:system("cls"); goto start;
} }while(1); while(1)表示永远循环下去*/ }
/*while(1),1 表示真,所以 /*至此功能选择模块结束*/
void input() /*学生信息录入模块*/ { int i=0; char ch; do { printf("\t\t\t\t1.录入学生信息\n 输入第%d 个学生的信息\n",i+1); printf("\n 输入 8 位的学生学号:"); scanf("%u",&stu[i].no); fflush(stdin); printf("\n 输入学生姓名:"); fflush(stdin); gets(stu[i].name); printf("\n 输入学生性别:"); fflush(stdin); gets(stu[i].sex); printf("\n 输入学生成绩 1:"); scanf("%f",&stu[i].score1); printf("\n 输入学生成绩 2:"); fflush(stdin); scanf("%f",&stu[i].score2); printf("\n 输入学生成绩 3:"); fflush(stdin); scanf("%f",&stu[i].score3); printf("\n\n"); i++; now_no=i; printf("是否继续输入?(Y/N)"); fflush(stdin); ch=getch(); system("cls"); } while(ch!='n'&&ch!='N'); system("cls"); } void sort() /*排序数据函数*/ { struct student temp;
int i,j; average(); for(i=1;i<now_no;i++) { for(j=1;j<=now_no-i;j++) { if(stu[j-1].ave<stu[j].ave) { temp=stu[j]; stu[j]=stu[j-1]; stu[j-1]=temp; } } } printf("排序已完成进入功能 2 可进行显示\n"); system("pause"); system("cls"); } void sort1() { struct student temp; int i,j; for(i=1;i<now_no;i++) { for(j=1;j<=now_no-i;j++) { if(stu[j-1].score1<stu[j].score1) { temp=stu[j]; stu[j]=stu[j-1]; stu[j-1]=temp; } } } } void sort2() { struct student temp; int i,j; for(i=1;i<now_no;i++) { for(j=1;j<=now_no-i;j++) { if(stu[j-1].score2<stu[j].score2) /*排序数据函数*/
/*排序数据函数*/
{ temp=stu[j]; stu[j]=stu[j-1]; stu[j-1]=temp; } } } } void sort3() /*排序数据函数*/ { struct student temp; int i,j; for(i=1;i<now_no;i++) { for(j=1;j<=now_no-i;j++) { if(stu[j-1].score3<stu[j].score3) { temp=stu[j]; stu[j]=stu[j-1]; stu[j-1]=temp; } } } } void display() /*显示数据函数*/ { int i; char as; average(); do { printf("\t\t\t 班级学生信息列表\n"); printf("\t 学号\t 姓名\t 性别\t 成绩 1\t 成绩 2\t 成绩 3\t 平均值\n"); for(i=0;i<now_no&&stu[i].name[0];i++) printf("\t%u%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].s core2,stu[i].score3,stu[i].ave); printf("\t\t\t 按任意键返回主菜单"); fflush(stdin); as=getch(); } while(!as); system("cls");
} void display1() /*显示数据函数*/ { int i; char as; do { printf("\t\t\t 班级学生 score1 成绩排序\n"); printf("\t 学号\t 姓名\t 性别\t 成绩 1\n"); sort1(); for(i=0;i<now_no&&stu[i].name[0];i++) printf("\t%u%s\t%s\t%.2f\t\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1); printf("\t\t\t 班级学生 score2 成绩排序\n"); printf("\t 学号\t 姓名\t 性别\t 成绩 2\n"); sort2(); for(i=0;i<now_no&&stu[i].name[0];i++) printf("\t%u%s\t%s\t%.2f\t\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score2); printf("\t\t\t 班级学生 score3 成绩排序\n"); printf("\t 学号\t 姓名\t 性别\t 成绩 3\n"); sort3(); for(i=0;i<now_no&&stu[i].name[0];i++) printf("\t%u%s\t%s\t%.2f\t\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score3); printf("\t\t\t 按任意键返回主菜单"); fflush(stdin); as=getch(); } while(!as); system("cls"); } void insert() { char ch; do { printf("\n\t\t 输入新插入学生信息\n"); printf("\n 输入学生学号:"); scanf("%u",&stu[now_no].no); fflush(stdin); printf("\n 输入学生姓名:"); fflush(stdin); gets(stu[now_no].name); printf("\n 输入学生性别:"); fflush(stdin); /*插入数据函数*/
gets(stu[now_no].sex); printf("\n 输入学生成绩 1:"); fflush(stdin); scanf("%f",&stu[now_no].score1); printf("\n 输入学生成绩 2:"); fflush(stdin); scanf("%f",&stu[now_no].score2); printf("\n 输入学生成绩 3:"); fflush(stdin); scanf("%f",&stu[now_no].score3); printf("\n\n"); now_no=now_no+1; sort(); printf("是否继续输入?(Y/N)"); fflush(stdin); ch=getch(); system("cls"); } while(ch!='n'&&ch!='N'); } void del() {unsigned long inum; int i; printf("输入要删除学生的学号:"); fflush(stdin); scanf("%u",&inum); for(i=0;i<now_no;i++) { if(stu[i].no==inum) { if(i==now_no)now_no-=1; else { stu[i]=stu[now_no-1]; now_no-=1; } sort(); break; } } system("cls"); } void save() { /*删除数据函数*/
/*保存数据函数*/
FILE *fp; int i; char filepath[20]; printf("输入要保存的文件路径:"); fflush(stdin); gets(filepath); if((fp=fopen(filepath,"w"))==NULL) { printf("\n 保存失败!"); exit(0); } for(i=0;i<now_no;i++) { stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3; stu[i].ave=stu[i].sum/3; fprintf(fp,"\t%u%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu [i].score2,stu[i].score3,stu[i].ave); } fclose(fp); printf("学生信息已保存在%s 中!\n",filepath); system("pause"); system("cls"); } void find() /*查询函数*/ { int i; char str[20],as; do { printf("输入要查询的学生姓名:"); fflush(stdin); gets(str); for(i=0;i<now_no;i++) if(!strcmp(stu[i].name,str)) { printf("\t 学号\t\t 姓名\t 性别\t 成绩 1\t 成绩 2\t 成绩 3\t 平均值\n"); printf("\t%u\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i] .score2,stu[i].score3,stu[i].ave); } printf("\t\t\t 按任意键返回主菜单"); fflush(stdin); as=getch();
} while(!as); system("cls"); }
void average() { int i; for(i=0;i<now_no;i++) { stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3; stu[i].ave=stu[i].sum/3; } } void modify() { int i; char str[20]; printf("输入要修改的学生姓名:"); fflush(stdin); gets(str); for(i=0;i<now_no;i++) { if(!strcmp(stu[i].name,str)) { system("cls"); printf("\n\t\t 输入修改后学生信息\n"); printf("\n 输入学生学号:"); fflush(stdin); scanf("%u",&stu[i].no); printf("\n 输入学生性别:"); fflush(stdin); gets(stu[i].sex); printf("\n 输入学生成绩 1:"); fflush(stdin); scanf("%f",&stu[i].score1); printf("\n 输入学生成绩 2:"); fflush(stdin); scanf("%f",&stu[i].score2); printf("\n 输入学生成绩 3:"); fflush(stdin); scanf("%f",&stu[i].score3); printf("\n\n");
/*求平均数*/
/*修改数据函数*/
sort(); break; } } system("cls"); } void read() { FILE *fp; int i; char filepath[20]; printf("输入要读入的文件路径:"); fflush(stdin); gets(filepath); if((fp=fopen(filepath,"r"))==NULL) { printf("找不到%s 文件!\n",filepath); system("pause"); exit(0); } now_no=0; for(i=0;i<MAX&&!feof(fp);i++) { fscanf(fp,"\t%d\t%s\t%s\t%f\t%f\t%f\t%f\n",&stu[i].no,stu[i].name,stu[i].sex,&stu[i].score1,&stu[ i].score2,&stu[i].score3,&stu[i].ave); now_no++; } fclose(fp); printf("保存的在文件%s 中的所有信息已经读入!\n",filepath); system("pause"); /*按任意键继续*/ system("cls"); } void del_file() { FILE *fp; char filepath[20]; printf("输入要删除的文件路径:"); fflush(stdin); gets(filepath); fp=fopen(filepath,"w"); fclose(fp);
printf("保存的在文件%s 中的所有信息已经删除!\n",filepath); system("pause"); system("cls"); }
|