首页 c语言学生成绩管理论文

c语言学生成绩管理论文

举报
开通vip

c语言学生成绩管理论文c语言学生成绩管理论文 武汉工商学院 信息工程学院 项目名称: 学生成绩管理系统 学生姓名: 黄继文 学 号: 14401033 班 级: 实验班 指导教师: 肖丹丹 2015年3月23日 目录 前言................................................................................................................................. 1 1.系统设计 .................

c语言学生成绩管理论文
c语言学生成绩管理论文 武汉工商学院 信息工程学院 项目名称: 学生成绩管理系统 学生姓名: 黄继文 学 号: 14401033 班 级: 实验班 指导教师: 肖丹丹 2015年3月23日 目录 前言................................................................................................................................. 1 1.系统设计 ...................................................................................................................... 2 1.1系统设计目标 ..................................................................................................... 2 1.2系统功能分析 ..................................................................................................... 2 1.3系统功能模块设计 .............................................................................................. 2 2.系统功能 ...................................................................................................................... 3 2.1学生登陆系统 ..................................................................................................... 3 2.2主菜单 ................................................................................................................ 5 2.3学生信息的录入 .................................................................................................. 7 2.4学生信息浏览 ..................................................................................................... 9 2.5学生信息查询 ....................................................................................................11 2.6学生成绩统计 ................................................................................................... 14 2.7学生信息修改 ................................................................................................... 22 2.8学生信息删除 ................................................................................................... 25 2.9学生信息插入 ................................................................................................... 28 3.上机操作 .................................................................................................................... 30 3.1登陆管理 .......................................................................................................... 30 3.2主菜单 .............................................................................................................. 31 3.3录入学生信息 ................................................................................................... 32 3.4学生信息浏览 ................................................................................................... 33 3.5学生信息查询 ................................................................................................... 34 3.6学生成绩统计 ................................................................................................... 35 3.6学生信息修改 ................................................................................................... 37 3.7学生信息删除 ................................................................................................... 38 3.8学生信息插入 ................................................................................................... 39 结论............................................................................................................................... 40 参考文献........................................................................................................................ 41 附录............................................................................................................................... 42 C语言程序设计课程设计报告 前言 本系统主要用于学校学生信息管理,总体任务是实现学生信息的系统化、规范化和自动化,其主要任务还是用计算机对学生信息进行日常管理,如录入、查询、统计、修改、删除学生信息,另外还考虑到用户登录的权限,针对学生信息和权限登录的学生成绩管系统.本系统主要包括登录管理、界面管理、学生信息录入、查询、统计、修改、删除、添加等部分. 其功能主要有: 1.学生信息录入,包括输入学生基本信息和成绩. 2.学生信息浏览,包括浏览学生的所有信息. 3.学生信息查询,包括查询学生基本信息和成绩. 4.学生成绩统计,包括各科成绩的最高分、最低分、平均分、及格率和1-100各段分数比. 5.学生信息修改,包括修改学生基本信息和成绩. 6.学生信息删除,包括删除学生基本信息和成绩. 7.学生信息插入,包括在指定地方插入信息. 8.退出系统. 本系统是用c语言编写的,采用的编写工具是vc++6.0. 1 C语言程序设计课程设计报告 1.系统设计 1.1系统设计目标 能对实现对学生信息进行录入、保存、查询、修改、删除、插入和统计学生成绩等功能. 1.2系统功能分析 本系统使用于对学生的基本信息进行处理,其主要功能如下: 用户登陆:使用密码的暗文处理,防止密码的泄露,学生信息被外泄. 学生信息管理:添加、删除、修改等操作. 学生信息查询:可以使用姓名或学号查询两种方式. 学生成绩管理:输出各科最高分、最低分、平均分、及格率和分数段人数比. 1.3系统功能模块设计 本系统的整体框架如图1-1所示. 主 模 块 登录界面 主菜单 学学学成学学学退 生生生绩生生生出 信信信排信信信系 统 息息息列息息息 录浏查统修删插 入 览 询 计 改 除 入 图 1-1 2 C语言程序设计课程设计报告 2.系统功能 2.1学生登陆系统 设计思路: 首先定义系统密码,而且本系统的密码系统经过暗文处理.具体方法是设计一个for循环,然后在里面设计一个while循环,首先判断人输入的是否为回车键,若是跳出while循环,并把人输入的密码和预先定义的密码进行匹配,若匹配成功,进入主菜单,若失败,重新输入,并且系统提示输入错误次数..当输入的不是回车键,接着次判断是否为退格键,若是,系统退格,再次进行while循环;若不是,输出*号,再次进行while循环.当密码3次不能匹配正确,退出系统. 函数图像如图2-1所示 登录菜单 int i=0 是 i<3 否 输入密码 i++ 是 否 进行码匹对验证 退出系统 进入主菜单界面 图 2-1 3 C语言程序设计课程设计报告 代码如下: void menu1(); for( ;j<4;j++) { if(j==3) { printf("\n"); printf("\n"); printf("\n"); printf("密码错误三次,系统锁定\n"); return 0; } while(p[i]=getch()) { if(p[i]=='\r') break; if(p[i]!='\b') { printf("*"); i++; } else { printf("\b \b"); i--; } } p[i]='\0'; if(strcmp(p,PASSWORD)==0) { break; } else { printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("您已错误了%d次(共三次)",j+1); getchar(); system("cls"); menu1(); } } 4 C语言程序设计课程设计报告 2.2主菜单 设计思路: 这里就是一个选择菜单,用了do-while循环结构,选择相应的数字进入功能子函数,执 行功能. 函数图像如图2-2所示 学生登陆菜单 按1-6数字键进入各选项 1.输入学生的信息 2.学生信息浏览 3.学生信息查询 4.成绩排序统计 5.学生信息修改 6.学生信息删除 7.学生信息插入 8.退出系统 进入所选目标 图 2-2 5 C语言程序设计课程设计报告 代码如下: int menu2() { system("cls"); int f; printf("\n"); 理 菜 单 \n"); printf(" 管 printf("\n"); printf(" *********************************************\n"); printf(" * *\n"); printf(" * ---------------------- *\n"); printf(" * *\n"); printf(" * 1.输入学生的信息 *\n"); printf(" * 2.学生信息浏览 *\n"); printf(" * 3.学生信息查询 *\n"); printf(" * 4.成绩排序统计 *\n"); printf(" * 5.学生信息修改 *\n"); printf(" * 6.学生信息删除 *\n"); printf(" * 7.插入学生信息 *\n"); printf(" * 8.退出系统 *\n"); \n"); printf(" * * printf(" * ---------------------- *\n"); printf(" * *\n"); printf(" *********************************************\n"); printf("\n"); printf("\n"); printf("\n"); printf("请输入您要执行的操作:"); scanf("%d",&f); return f; } 6 C语言程序设计课程设计报告 2.3学生信息的录入 设计思路: 首先定义一个存放学生信息的结构体数组,把输入的学生信息存到数组中,当进入学生 信息录入函数,一个学生信息输入完成,提示是否继续输入,如果继续输入,继续循环输入,并 且指向输入具体输入人数的指针加1,然后继续输入学生信息.否则返回主函数,并把学生信 息保存在文件中. 代码如下: int InputInformation(int *p,int *p1)此函数用于录入学生信息 { int k,i; char ch; i=*p; for(;;) { srand(time(NULL));//此语句作用使每次产生的随机数不同 k=rand()%1000+2014000; printf("请输入学生的名字:"); scanf("%s",&a[i].name); printf("学生的学号为:%d\n",k); a[i].id=k; printf("请输入学生的性别:"); scanf("%s",&a[i].sex); printf("请输入计算机分数:"); scanf("%f",&a[i].computer); printf("请输入数学分数:"); scanf("%f",&a[i].math); printf("请输入英语分数:"); scanf("%f",&a[i].english); printf("\n"); printf("是否继续输入学生信息,(y/n)"); scanf("%s",&ch); if('y'==ch) { system("cls"); i++; *p=*p+1;*p1=*p1+1; } if('n'==ch) { *p=*p+1; return 0; } } } 7 C语言程序设计课程设计报告 函数图像如图2-3所示 输入学生信息 struct student { char name[10]; int id; char sex[5]; float computer; float math; float english; };//定义一个结构体存放学 生信息 Int i srand(time(NULL)); k=rand()%1000+2014000; printf("请输入学生的名字:"); scanf("%s",&a[i].name); printf("学生的学号为:%d\n",k); i++,*p++ a[i].id=k; printf("请输入学生的性别:"); scanf("%s",&a[i].sex); printf("请输入计算机分数:"); scanf("%f",&a[i].computer); printf("请输入数学分数:"); scanf("%f",&a[i].math); printf("请输入英语分数:"); scanf("%f",&a[i].english); 否 是 Ch==’y’ return 0 图 2-3 8 C语言程序设计课程设计报告 2.4学生信息浏览 设计思路: 学生信息录入函数已经把学生的信息保存在了文件中,浏览学生信息就需要把保存学生 信息的文件打开,如果打开失败就返回主函数,如果打开成功就进入输出信息函数,把保存在 文件中的学生信息打印到计算机屏幕. 函数图像如图2-4所示 浏览学生信息 FILE *fp; read() output(); fp=fopen("stubook","rb "))==NULL printf(文件打开失败); return 0; 输出学生信息 图 2-4 9 C语言程序设计课程设计报告 代码如下: void output(int n)//此函数用于输出学生信息 { int i; printf("%-10s%-12s%-8s%-14s%-12s%-12s\n","姓名","学号","性别","计算机成绩 ","数学成绩","英语成绩"); for(i=0;ia[i].computer) min=a[i].computer else i++ return min 3.sum=sum+a[i].computer ave=sum/n 4.if(a[i].computer>=60) count++ return compass=count/n*100.0 5.if(a[i].computer>100||a[i].computer<0) break; else if(a[i].computer<=59) c1++ return rate=c1/n else if(a[i].computer<=69) c2++ return rate=c2/n else if(a[i].computer<=79) c3++ return rate=c3/n else if(a[i].computer<=89) c4++ return rate=c4/n else c5++ return rate=c5/n 输出统计整理结果 图 2-6 14 C语言程序设计课程设计报告 数学统计整理 int n 1.If(maxa[i].math) min=a[i].math else i++ return min 3.sum=sum+a[i].math ave=sum/n 4.if(a[i].math>=60) count++ return matpass=count/n*100.0 5.if(a[i]. math >100||a[i]. math <0) break; else if(a[i]. math <=59) m1++ rate=m1/n else if(a[i]. math <=69) m2++ rate=m2/n else if(a[i]. math <=79) m3++ rate=m3/n else if(a[i]. math <=89) m4++ rate=m4/n else m5++ rate=m5/n 输出统计整理结果 图 2-7 15 C语言程序设计课程设计报告 英语成绩统计整理 int n 1.If(maxa[i]. english) min=a[i].english else i++ return min 3.sum=sum+a[i]. english ave=sum/n 4.if(a[i]. english>=60) count++ return engpass=count/n*100.0 5.if(a[i]. english>100||a[i]. english<0) break; else if(a[i].english<=59) e1++ return rate=e1/n else if(a[i].english<=69) e2++ return rate=e2/n else if(a[i].english<=79) e3++ return rate=e3/n else if(a[i].english<=89) e4++ return rate=e4/n else e5++ return rate=e5/n 输出统计整理结果 图 2-8 16 C语言程序设计课程设计报告 代码如下: float Sortcom1(int n)//此函数用于求学生计算机成绩最高分 { int i; float max; max=a[0].computer; for(i=0;ia[i].computer) min=a[i].computer; } return min; } float Sortcom3(int n)//此函数用于求学生计算机成绩平均分 { int i; float ave,sum=0; for(i=0;i=60) count++; 17 C语言程序设计课程设计报告 } pass=(float)count/(float)n*100.0; return pass; } void Sortcom5(int *p1,int *p2,int *p3,int *p4,int *p5,int n)//此函数用于求学生计 算机成绩各个分数段比率 { int i; for(i=0;i100||a[i].computer<0) break; else if(a[i].computer<=59) *p1=*p1+1; else if(a[i].computer<=69) *p2=*p2+1; else if(a[i].computer<=79) *p3=*p3+1; else if(a[i].computer<=89) *p4=*p4+1; else *p5=*p5+1; } } float Sortmat1(int n)//此函数用于求学生数学成绩最高分 { int i; float max; max=a[0].math; for(i=0;ia[i].math) min=a[i].math; } return min; } float Sortmat3(int n)//此函数用于求学生数学成绩平均分 { 18 C语言程序设计课程设计报告 int i; float ave,sum=0; for(i=0;i=60) count++; } pass=(float)count/(float)n*100.0; return pass; } void Sortmat5(int *p1,int *p2,int *p3,int *p4,int *p5,int n)//此函数用于求学生数 学成绩各个分数段比率 { int i; for(i=0;i100||a[i].math<0) break; else if(a[i].math<=59) *p1=*p1+1; else if(a[i].math<=69) *p2=*p2+1; else if(a[i].math<=79) *p3=*p3+1; else if(a[i].math<=89) *p4=*p4+1; else *p5=*p5+1; } } float Sorteng1(int n)//此函数用于求学生英语成绩最高分 { int i; float max; max=a[0].english; for(i=0;ia[i].english) min=a[i].english; } return min; } float Sorteng3(int n)//此函数用于求学生英语成绩平均分 { int i; float ave,sum=0; for(i=0;i=60) count++; } pass=(float)count/(float)n*100.0; return pass; } void Sorteng5(int *p1,int *p2,int *p3,int *p4,int *p5,int n)//此函数用于求学生英 语成绩各个分数段比率 { int i; for(i=0;i100||a[i].english<0) break; else if(a[i].english<=59) *p1=*p1+1; else if(a[i].english<=69) *p2=*p2+1; else if(a[i].english<=79) *p3=*p3+1; else if(a[i].english<=89) *p4=*p4+1; else *p5=*p5+1; } } 21 C语言程序设计课程设计报告 2.7学生信息修改 设计思路: 本系统修改学生信息首先要确定要修改学生的名字,当操作员把要修改学生的姓名输入 到计算机后,计算机会再次调用姓名查找函数,把输入的姓名和保存在文件中的信息进行匹 配,当匹配成功,返回i的值(学生在结构体数组中的具体位置),并再继续选择要修改的内容, 根据选择修改的内容,并把操作员修改后的信息覆盖然来学生的信息,直到退出修改函数.若 计算机匹配不到操作员输入的学生姓名,返回-1,并提示,查找不到次学生的信息. 代码如下: int h; char xiuna[10]; output(t); printf("请输入要修改学生的姓名:"); scanf("%s",&xiuna); system("cls"); h=QueryInformation1(xiuna,t); if(h==-1) { printf("对不起,找不到此学生的信息\n"); system("pause"); } else { ChangeInformation(h); write(); printf("修改学生信息成功\n"); system("pause"); } void ChangeInformation(int i)//此函数用于修改学生信息 { int c; do{ system("cls"); output1(i); printf("\n"); printf("1.修改姓名\n"); printf("2.修改学号\n"); printf("3.修改性别\n"); printf("4.修改计算机成绩\n"); printf("5.修改数学成绩\n"); printf("6.修改英语成绩\n"); printf("0.取消修改\n"); printf("\n"); 22 C语言程序设计课程设计报告 printf("请输入您要执行的操作:"); scanf("%d",&c); system("cls"); switch(c) { case 0: break; case 1: printf("请输入新姓名:"); scanf("%s",&a[i].name); break; case 2: printf("请输入新的学号:"); scanf("%d",&a[i].id); break; case 3: printf("请输入新的性别:"); scanf("%s",&a[i].sex); break; case 4: printf("请输入新的计算机成绩:"); scanf("%f",&a[i].computer); break; case 5: printf("请输入新的数学成绩:"); scanf("%f",&a[i].math); break; case 6: printf("请输入新的英语成绩:"); scanf("%f",&a[i].english); break; default: printf("无效选项"); break; } }while(c!=0); } 23 C语言程序设计课程设计报告 函数图像如图2-9所示. 修改学生信息 输入要修改学生的姓名 int i,n 否 ix-1(x为要插入位置上一个学生的序号),让第i个学生信息覆盖i+1个学生信息,一个学生信息覆盖完成后i--,以此类推,直到所有学生信息覆盖完成,然后在要插入地方输入插入学生的信息,并返回主函数. 函数图像如图2-11所示. 插入学生信息 int i,k 输入要插入学生信息的位置 总人数加1 for(i=t2-1;i>x-1;i--) { strcpy(a[i+1].name,a[i].name); a[i+1].id=a[i].id; strcpy(a[i+1].sex,a[i].sex); a[i+1].computer=a[i].computer; a[i+1].math=a[i].math; a[i+1].english=a[i].english; } 输入插入学生的信息 return 0 图 2-11 28 C语言程序设计课程设计报告 代码如下: void ChaInformation(int t2,int *p2)//此函数用于插入学生信息 { int x,i,k; output2(t2); *p2=*p2+1; printf("请选择要插入信息位置上面一位学生的序号:"); scanf("%d",&x); for(i=t2-1;i>x-1;i--) { strcpy(a[i+1].name,a[i].name); a[i+1].id=a[i].id; strcpy(a[i+1].sex,a[i].sex); a[i+1].computer=a[i].computer; a[i+1].math=a[i].math; a[i+1].english=a[i].english; } system("cls"); srand(time(NULL));//此语句作用使每次产生的随机数不同 k=rand()%1000+2014000; printf("请输入学生的名字:"); scanf("%s",&a[x].name); printf("学生的学号为:%d\n",k); a[x].id=k; printf("请输入学生的性别:"); scanf("%s",&a[x].sex); printf("请输入计算机分数:"); scanf("%f",&a[x].computer); printf("请输入数学分数:"); scanf("%f",&a[x].math); printf("请输入英语分数:"); scanf("%f",&a[x].english); } 29 C语言程序设计课程设计报告 3.上机操作 3.1登陆管理 30 C语言程序设计课程设计报告 3.2主菜单 31 C语言程序设计课程设计报告 3.3录入学生信息 32 C语言程序设计课程设计报告 3.4学生信息浏览 33 C语言程序设计课程设计报告 3.5学生信息查询 34 C语言程序设计课程设计报告 3.6学生成绩统计 35 C语言程序设计课程设计报告 36 C语言程序设计课程设计报告 3.6学生信息修改 37 C语言程序设计课程设计报告 3.7学生信息删除 38 C语言程序设计课程设计报告 3.8学生信息插入 39 C语言程序设计课程设计报告 结论 从刚开始拿到要课程设计的题目时的茫然无措,到确定了整体的框架,到最后敲完所有的代码,达到题目的要求,实现所有功能,一共花了10左右时间.通过这的次课程设计,让我受益匪浅,比如说更加熟悉了C语言的语法,更加熟悉了函数的调用和函数形参和实参之间的传递.更加熟悉一些算法的运用.在程序的规范性方面,也写得清晰易懂.特别是写函数时首先考虑到函数返回值的类型,而在以前我是没有这个习惯的.而且通过本次的课程设计,我还懂得了密码的暗文处理,使用颜色函数改变程序背景颜色和字体颜色,学会了使用清屏和暂停语句......同时通过本次的课程设计也认识到了我在某些地方的不足,比如在程序优化和算法方面显示出我的不足.而在这次的课程设计中我也遇到许多麻烦,得到了老师和同学的帮助和指导,在此对老师和同学表示感谢.同时希望通过今后的学习,不断提升自己的能力,达到新一个新高度. 40 C语言程序设计课程设计报告 参考文献 [1] 杨路明.c语言程序设计 教程 人力资源管理pdf成真迷上我教程下载西门子数控教程protel99se入门教程fi6130z安装使用教程 .北京:北京邮电大学出版社,2005. [2] 杨路明.c语言程序设计上机指导与习题选解(第二版).北京:北京邮电大学出版 ,2005. 社 [3] 李莎.Visual C++数据库通用模块与系统移植.北京:清华大学出版社,2007. [4] 林瑞仲.C语言实例解析精粹.北京:人民邮电出版社,2005. [5] 谭浩强.C程序设计(第三版).北京:清华大学出版社,2005. [6] 徐士良.C语言程序设计教程.北京:人民邮电出版社,2009. [7] 陈宝贤.C语言程序设计教程.北京:人民邮电出版社,2005. [8] 周启海.C语言程序设计报告.北京:中国水利工程出版社,2005. [9] 刁成嘉.C语言程序设计论文.北京:清华大学出版社,2004. [10] 张欣.C语言程序设计(VC++6.0环境).北京:中国水利水电出版社,2005. 41 C语言程序设计课程设计报告 附录: #include #include #include #include #include struct student { char name[10]; int id; char sex[5]; float computer; float math; float english; };//定义一个结构体 struct student a[100]; write()//将数据写入文件 { FILE *fp; if((fp=fopen("stubook.txt","wb+"))==NULL) { printf("fail"); exit(0); } for(int i=0;i<100;i++) { if(fwrite(&a[i],sizeof(struct student),1,fp)!=1) printf("OK"); } fclose(fp); } read() { FILE *fp; if((fp=fopen("stubook.txt","rb+"))==NULL) { printf("fail"); exit(0); } for(int i=0;i<100;i++) { if(fread(&a[i],sizeof(struct student),1,fp)!=1) printf("OK"); 42 C语言程序设计课程设计报告 } fclose(fp); } output(int n)//输出存储在文件中的内容 { int i; printf("%-10s%-12s%-8s%-14s%-12s%-12s\n","姓名","学号","性别","计算机成绩","数学成绩","英语成绩"); for(i=0;ia[i].computer) min=a[i].computer; } return min; } Sortcom3(int n)//此函数用于求学生计算机成绩平均分 { int i; float ave,sum=0; for(i=0;i=60) count++; } pass=(float)count/(float)n*100.0; return pass; } Sortcom5(int *p1,int *p2,int *p3,int *p4,int *p5,int n)//此函数用于求学生计 算机成绩各个分数段比率 { int i; 48 C语言程序设计课程设计报告 for(i=0;i100||a[i].computer<0) break; else if(a[i].computer<=59) *p1=*p1+1; else if(a[i].computer<=69) *p2=*p2+1; else if(a[i].computer<=79) *p3=*p3+1; else if(a[i].computer<=89) *p4=*p4+1; else *p5=*p5+1; } } Sortmat1(int n)//此函数用于求学生数学成绩最高分 { int i; float max; max=a[0].math; for(i=0;ia[i].math) min=a[i].math; } return min; } Sortmat3(int n)//此函数用于求学生数学成绩平均分 { int i; float ave,sum=0; for(i=0;i=60) count++; } pass=(float)count/(float)n*100.0; return pass; } Sortmat5(int *p1,int *p2,int *p3,int *p4,int *p5,int n)//此函数用于求学生数 学成绩各个分数段比率 { int i; for(i=0;i100||a[i].math<0) break; else if(a[i].math<=59) *p1=*p1+1; else if(a[i].math<=69) *p2=*p2+1; else if(a[i].math<=79) *p3=*p3+1; else if(a[i].math<=89) *p4=*p4+1; else *p5=*p5+1; } } Sorteng1(int n)//此函数用于求学生英语成绩最高分 { int i; float max; max=a[0].english; for(i=0;ia[i].english) min=a[i].english; } return min; } Sorteng3(int n)//此函数用于求学生英语成绩平均分 { int i; float ave,sum=0; for(i=0;i=60) count++; } pass=(float)count/(float)n*100.0; return pass; } Sorteng5(int *p1,int *p2,int *p3,int *p4,int *p5,int n)//此函数用于求学生英 语成绩各个分数段比率 { int i; for(i=0;i100||a[i].english<0) break; else if(a[i].english<=59) *p1=*p1+1; else if(a[i].english<=69) *p2=*p2+1; else if(a[i].english<=79) *p3=*p3+1; else if(a[i].english<=89) *p4=*p4+1; else *p5=*p5+1; } } 51 C语言程序设计课程设计报告 ChangeInformation(int i)//此函数用于修改学生信息 { int c; do{ system("cls"); output1(i); printf("\n"); printf("1.修改姓名\n"); printf("2.修改学号\n"); printf("3.修改性别\n"); printf("4.修改计算机成绩\n"); printf("5.修改数学成绩\n"); printf("6.修改英语成绩\n"); printf("0.取消修改\n"); printf("\n"); printf("请输入您要执行的操作:"); scanf("%d",&c); system("cls"); switch(c) { case 0: break; case 1: printf("请输入新姓名:"); scanf("%s",&a[i].name); break; case 2: printf("请输入新的学号:"); scanf("%d",&a[i].id); break; case 3: printf("请输入新的性别:"); scanf("%s",&a[i].sex); break; case 4: printf("请输入新的计算机成绩:"); scanf("%f",&a[i].computer); break; case 5: printf("请输入新的数学成绩:"); scanf("%f",&a[i].math); break; case 6: printf("请输入新的英语成绩:"); scanf("%f",&a[i].english); 52 C语言程序设计课程设计报告 break; default: printf("无效选项"); break; } }while(c!=0); } DeleteInformation(int m,int n,int *p)//此函数用来删除学生的信息 { int i; for(i=m;ix-1;i--) { strcpy(a[i+1].name,a[i].name); a[i+1].id=a[i].id; strcpy(a[i+1].sex,a[i].sex); a[i+1].computer=a[i].computer; a[i+1].math=a[i].math; a[i+1].english=a[i].english; } system("cls"); srand(time(NULL));//此语句作用使每次产生的随机数不同 k=rand()%1000+2014000; printf("请输入学生的名字:"); scanf("%s",&a[x].name); printf("学生的学号为:%d\n",k); a[x].id=k; 53 C语言程序设计课程设计报告 printf("请输入学生的性别:"); scanf("%s",&a[x].sex); printf("请输入计算机分数:"); scanf("%f",&a[x].computer); printf("请输入数学分数:"); scanf("%f",&a[x].math); printf("请输入英语分数:"); scanf("%f",&a[x].english); } main()//主函数 { char p[20],PASSWORD[]="0000"; int j,i,t,t1,a,m,h,d,C1,C2,C3,C4,C5,M1,M2,M3,M4,M5,E1,E2,E3,E4,E5; float commax,commin,comave,compass,matmax,matmin,matave,matpass,engmax,engmin,eng ave,engpass; C1=0;C2=0;C3=0;C4=0;C5=0;M1=0;M2=0;M3=0;M4=0;M5=0;E1=0;E2=0;E3=0;E4=0;E 5=0;i=0;j=0;t=0;t1=1; menu1(); //for循环中的语句块为密码的暗文处理 for( ;j<4;j++) { if(j==3) { printf("\n"); printf("\n"); printf("\n"); printf("密码错误三次,系统锁定\n"); return 0; } while(p[i]=getch()) { if(p[i]=='\r') break; if(p[i]!='\b') { printf("*"); i++; } else { printf("\b \b"); i--; } } p[i]='\0'; 54 C语言程序设计课程设计报告 if(strcmp(p,PASSWORD)==0) { break; } else { printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("您已错误了%d次(共三次)",j+1); getchar(); system("cls"); menu1(); } } system("cls"); do { a=menu2(); system("cls"); switch(a) { case 1: InputInformation(&t,&t1) ; write(); break; case 2: read(); output(t); system("pause"); break; case 3: QueryInformation(t); break; case 4: int d; do{ system("cls"); d=menu3(); if(d==1) { commax=Sortcom1(t); commin=Sortcom2(t); 55 C语言程序设计课程设计报告 comave=Sortcom3(t); compass=Sortcom4(t); Sortcom5(&C1,&C2,&C3,&C4,&C5,t); system("cls"); printf("\t\t\t 计算机成绩统计结果\n"); printf("\n"); printf("最高分:%5.1f\n最低分:%5.1f\n平均分:%5.1f\n及格 率:%5.1f%%\n",commax,commin,comave,compass); printf("[0,59]段的人数比:%5.1f%%\n[60,69]段的人数比:%5.1f%%\n[70,79]段的人数比:%5.1f%%\n[80,89]段的人数比:%5.1f%%\n[90,100]段数比:%5.1f%%\n",((float)C1)/(float)t1*100.0,((float)C2)/(float)t1*100.0,((float)C 3)/(float)t1*100,((float)C4)/(float)t1*100.0,((float)C5)/(float)t1*100.0); system("pause"); } if(d==2) { matmax=Sortmat1(t); matmin=Sortmat2(t); matave=Sortmat3(t); matpass=Sortmat4(t); Sortmat5(&M1,&M2,&M3,&M4,&M5,t); system("cls"); printf("\t\t\t 数学成绩统计结果\n"); printf("\n"); printf("最高分:%5.1f\n最低分:%5.1f\n平均分:%5.1f\n及格率:%5.1f%%\n",matmax,matmin,matave,matpass); printf("[0,59]段的人数比:%5.1f%%\n[60,69]段的人数比:%5.1f%%\n[70,79]段的人数比:%5.1f%%\n[80,89]段的人数比:%5.1f%%\n[90,100]段数比:%5.1f%%\n",((float)M1)/(float)t1*100.0,((float)M2)/(float)t1*100.0,((float)M 3)/(float)t1*100,((float)M4)/(float)t1*100.0,((float)M5)/(float)t1*100.0); system("pause"); } if(d==3) { engmax=Sortmat1(t); engmin=Sortmat2(t); engave=Sortmat3(t); engpass=Sortmat4(t); Sorteng5(&E1,&E2,&E3,&E4,&E5,t); system("cls"); printf("\t\t\t 英语成绩统计结果\n"); printf("\n"); printf("最高分:%5.1f\n最低分:%5.1f\n平均分:%5.1f\n及格率:%5.1f%%\n",engmax,engmin,engave,engpass); 56 C语言程序设计课程设计报告 printf("[0,59]段的人数比:%5.1f%%\n[60,69]段的人数 比:%5.1f%%\n[70,79]段的人数比:%5.1f%%\n[80,89]段的人数比:%5.1f%%\n[90,100]段的 比:%5.1f%%\n",((float)E1)/(float)t1*100.0,((float)E2)/(float)t1*100.0,((float)E 3)/(float)t1*100,((float)E4)/(float)t1*100.0,((float)E5)/(float)t1*100.0); system("pause"); } if(d==4) break; }while(d!=0); break; case 5: char xiuna[10]; output(t); printf("请输入要修改学生的姓名:"); scanf("%s",&xiuna); system("cls"); h=QueryInformation1(xiuna,t); if(h==-1) { printf("对不起,找不到此学生的信息\n"); system("pause"); } else { ChangeInformation(h); write(); printf("修改学生信息成功\n"); system("pause"); } break; case 6: do{ char deletena[10],ch,de; output(t); printf("请输入要删除学生的姓名:"); scanf("%s",&deletena); printf("您确认要删除此学生信息吗(y/n),"); scanf("%s",&ch); if('y'==ch) { system("cls"); h=QueryInformation1(deletena,t); if(h==-1) { printf("对不起,找不到此学生的信息\n"); 57 C语言程序设计课程设计报告 system("pause"); } else { int T; T=t; DeleteInformation(h,T,&t); write(); printf("删除学生信息成功\n"); system("cls"); printf("要继续删除吗?(y/n)"); scanf("%s",&de); if('n'==de) break; //else goto hq; //system("pause"); } } }while(1); break; case 7: ChaInformation(t,&t); write(); system("pause"); break; case 8: char c; printf("确认退出系统吗,(y/n)"); scanf("%s",&c); if('y'==c) goto end; else break; } }while(a!=0); end:return 0; } 58 程序设计基础课程设计成绩评定 成绩评定: (百分制) 指导教师签字: 检查时间: 年 月 日 59
本文档为【c语言学生成绩管理论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_624976
暂无简介~
格式:doc
大小:233KB
软件:Word
页数:79
分类:企业经营
上传时间:2018-10-29
浏览量:6