C语言学生成绩信息管理系统课程设计报告 您所在的位置:网站首页 c语言学生信息管理系统课程设计 C语言学生成绩信息管理系统课程设计报告

C语言学生成绩信息管理系统课程设计报告

2024-07-12 21:11| 来源: 网络整理| 查看: 265

C语言课程设计报告

 

一 .设计目的

  学生成绩管理系统

 主要功能:

 

(1)能按学期、按班级完成对学生成绩的录入、

 

修改,删除

 

(2)能按班级统计学生的成绩,求学生的总分及

 

平均分,并能根据学生的平均成绩进行排序

 

 

(3)能查询学生成绩,不及格科目及学生名单

 

 

(4)能按班级输出学生的成绩单

 

 

 

 

 

二 .总体设计

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

此流程图是整体上对程序需要哪些函数而设计的,这些都是核心函数,先将这些函数实现以后再通过main()主函数对每一个核心函数进行调用,主函数里面可以用到while循环和switch语句

三.详细设计

void Pass_File(); //创建密码文件

int Name_Password(); //登陆密码验证

void User_Amadeus();/* 密码修改 */

/***********************************************/

 

void in();/*录入学生成绩信息*/

void show();/*显示学生信息*/

void order();/*按总分排序*/

void del();/*删除学生成绩信息*/

void modify();/*修改学生成绩信息*/

void menu();/*主菜单*/

void insert();/*插入学生信息*/

void total();/*计算总人数*/

void search();/*查找学生信息*/

void ShowClassS();      // 显示某班学生信息

void ShowFailS();       // 显示不及格学生信息

void main()/*主函数,实现对每个函数的调用,main函数里面,通过对输入序号的值对应的调用函数,这需要用到switch()语句*/

每个函数都相对是独立的,入口参数就是输入学生的成绩信息

 

 

四.调试与测试

五.源程序清单和执行结果 1 . 定义结构体及宏定义 #include #include #include #include #include #define LEN sizeof(struct student) #define FORMAT "  %2s   %2s   %s   %s     %4.1lf     %4.1lf     %4.1lf  %4.1lf   %4.2lf  \n" #define DATA stu[i].Term,stu[i].Class,stu[i].name,stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].ave char Name[15]; //用户名存储 char Pass[15]; //用户密码存储 #define R 3 struct student/*定义学生成绩结构体*/ { char Class[15];        //专业班级     char Term[5];          // 学期 char num[15];              /*学号*/ char name[15];         /*姓名*/ double score[3];        //学科成绩 double sum;          /*总分*/ double ave;          /*平均分*/ }; struct student stu[100];/*定义结构体数组*/ /******用户输入用户名与登陆密码*******/ struct NamePass { char name[15]; char pass[15]; }; 2.函数声明 /**********密码登陆模块************************/ void Pass_File(); //创建密码文件 int Name_Password(); //登陆密码验证 void User_Amadeus();/* 密码修改 */ /***********************************************/ void in();/*录入学生成绩信息*/ void show();/*显示学生信息*/ void order();/*按总分排序*/ void del();/*删除学生成绩信息*/ void modify();/*修改学生成绩信息*/ void menu();/*主菜单*/ void insert();/*插入学生信息*/ void total();/*计算总人数*/ void search();/*查找学生信息*/ void ShowClassS();      // 显示某班学生信息 void ShowFailS();       // 显示不及格学生信息 3.主函数 main() 利用while循环和swithch()语句进行菜单选择来实现各函数的调用,系统根据输入的数字选项来调用相应的函数,输入0时,结束退出。等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现! /*******************************************************************************************************************                                                  程序的开始部分 ********************************************************************************************************************/ void main()/*主函数*/ { int n;     Pass_File();     Name_Password(); system("pause"); system("cls"); printf("\t\t******************************************************************\n"); printf("\t\t*                                                                *\n"); printf("\t\t*      欢迎使用由计算机1505班设计的学生成绩管理系统              *\n"); printf("\t\t*                   祝您使用愉快!!!!                         *\n"); printf("\t\t*                                                                *\n"); printf("\t\t*      心灵鸡汤:                                                *\n"); printf("\t\t*                                                                *\n");     printf("\t\t*      相信自己,依靠自己,要尽自己的能力,把每件事情都做得更好,*\n"); printf("\t\t*      让自己活的每一天都有意义。                                *\n"); printf("\t\t*      努力成为你最喜欢的那种人,就算不成功,                    *\n"); printf("\t\t*      至少你会喜欢这样努力的自己。                              *\n"); printf("\t\t*                                                                *\n"); printf("\t\t*      指导老师  :毋小省                                        *\n"); printf("\t\t*      课程设计  :C语言                                         *\n"); printf("\t\t*      姓    名  :张诚华、马莹莹                                *\n"); printf("\t\t*      学    校  :河南理工大学                                  *\n"); printf("\t\t*      学    号  :311509010516,311509010507                    *\n"); printf("\t\t*      专业班级  :计算机1505                                    *\n"); printf("\t\t*                                                                *\n"); printf("\t\t******************************************************************\n");     system("pause");//暂停     system("cls"); menu(); scanf("%d",&n);/*输入选择功能的编号*/ while(n) { switch(n) { case 1: in(); break; case 2: search(); break; case 3: del(); break; case 4: modify(); break; case 5: insert(); break; case 6: order(); break; case 7: total(); break; case 8:             User_Amadeus();             break; case 9: ShowClassS();             break; case 10: show();             break; case 11:             ShowFailS();             break; default:break; } getch(); menu();/*执行完功能再次显示菜单界面*/ scanf("%d",&n); } } 4.创建密码文件函数 /****************创建密码文件*************/ void Pass_File() { FILE *  PassFile; PassFile = fopen("c:\\CLP\\password.bat", "ab+"); if(NULL == PassFile) { printf("创建密码文件失败!\n"); exit(0); } fprintf(PassFile ,"amadeus\n"); fwrite("amadeus" , sizeof("amadeus"), 1, PassFile); fclose(PassFile); } 5.登录密码验证函数  /******************登 陆 密 码 验 证 ***********************/ int Name_Password() { struct NamePass PassW1; int num = 0; FILE * PassFile; PassFile = fopen("c:\\CLP\\password.bat", "rb");//以只读的方式打开二进制文件password.bat if(NULL == PassFile) { Pass_File(); } fscanf(PassFile, "%s", Name );//设置初始用户名 fscanf(PassFile, "%s", Pass);//设置初始密码 while(1) { system("cls"); printf("\n\n\t\t\t  欢迎使用学生成绩管理系统\n\n"); printf("\t\t\t\t密码和学号一样\n\n\n"); printf("  请输入学号: "); scanf("%s", &PassW1.name); printf("\n"); printf("  请输入密码: "); scanf("%s", &PassW1.pass); if(0 == strcmp(Name,PassW1.name) && 0 == strcmp(Pass,PassW1.pass)) { printf("\n\n\n\t\t\t密 码 核 对 正 确 ! \1 \n"); printf("\n\n\n\t\t 欢 迎 您 使 用 学 生 管 理 系 统 ! \2\n"); break; } else { printf("\n\n\t\t\t对不起,您输入的用户名或密码有误!\n\n"); printf("\n\n\t\t      请  按  任  意  键  重  新  输  入 !\n\n\n\n\n\n\n\n\n"); getch(); num++; if(3 == num) {    system("cls"); printf("\n\n\t\t\t  欢迎使用学生成绩管理系统\n\n\n"); printf("\n\n\n\t\t 对 不 起\n\n\n"); printf("\n\t\t\t  你 已 经 三 次 输 入 错 误\n\n"); printf("\n\t\t\t\t\t\t\t再 见 ! \n\n\n\n\n\n"); getch(); fclose(PassFile); return 0; } } } printf("\n\n\n"); fclose(PassFile); return 1; } 6.密码修改函数  /*******************密码修改****************/ void User_Amadeus() { FILE * PassFile; int a = 1; char name1[15]; char passw1[15]; char passw2[15]; char passw3[15]; system("cls"); PassFile = fopen("c:\\CLP\\password.bat", "wb"); if(NULL == PassFile) { printf("修改密码文件失败!\n"); exit(0); } printf("\t\t\t\t  用 户 修 改 \n"); while(1) { printf("请输入原密码:");                scanf("%s", passw1); if(0 == strcmp(Pass, passw1)) { printf("\n请输入新用户名:"); scanf("%s", name1); while(1) { while(1) { printf("\n请输入新密码:"); scanf("%s", passw2); if(0 == strcmp(Pass, passw2)) { printf("\n新密码不能与旧密码相同!\n"); } else break; } printf("\n请确认新密码:"); scanf("%s", passw3); if(0 == strcmp(passw2, passw3)) { strcpy(Pass , passw2); printf("\n\n\t\t\t密 码 修 改 成 功 \1 请 重 新 登 陆 !\n\n"); fprintf(PassFile, "%s\r\n", name1); fprintf(PassFile, "%s\r\n", passw2); break; } else printf("\n您输入的密码不一致, 请重新输入!\n"); } break; } else { if(a != 3) { printf("\n密码错误,请重新输入!\n\n"); a++; } else { printf("你已三次输入密码错误 !\n\n"); printf("再见!\n"); exit(0); } } } fclose(PassFile); system("pause"); } 7.按学期、按班级录入学生成绩函数 /*********************录入学生信息********************/ void in() { int i,m=0;/*m是记录的条数*/ char ch[2]; FILE *fp;/*定义文件指针*/ if((fp=fopen("data","ab+"))==NULL)/*打开指定文件*/ { printf("can not open the file\n"); return; } while(!feof(fp)) { if(fread(&stu[m] ,LEN,1,fp)==1) m++;/*统计当前记录条数*/ } fclose(fp); if(m==0) printf("No record!\n"); else { system("cls"); show();/*调用show函数,显示原有信息*/ } if((fp=fopen("data","wb"))==NULL) { printf("can not open the file\n"); return; } printf("please input(Y/N):"); scanf("%s",ch); while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要录入新信息*/ { printf("输入学期:"); scanf("%s",stu[m].Term); printf("输入专业班级:"); scanf("%s",stu[m].Class); printf("输入学生姓名:"); scanf("%s",stu[m].name);/*输入学生姓名*/ printf("学号:"); scanf("%s",stu[m].num);/*输入学生学号*/ printf("输入工科数学成绩:"); scanf("%lf",&stu[m].score[0]);/*输入工科数学成绩*/ printf("输入大学英语成绩:"); scanf("%lf",&stu[m].score[1]);/*输入大学英语成绩*/ printf("输入C语言成绩:"); scanf("%lf",&stu[m].score[2]);/*输入C语言成绩*/ stu[m].sum=stu[m].score[0]+stu[m].score[1]+stu[m].score[2];/*计算出总成绩*/ stu[m].ave=stu[m].sum/3.0;/*计算出平均分*/ if(fwrite(&stu[m],LEN,1,fp)!=1)/*将新录入的信息写入指定的磁盘文件*/ { printf("不能保存!"); getch(); } else { printf("%s 保存成功!\n",stu[m].name); m++; } printf("是否继续?(Y/N):");/*询问是否继续*/ scanf("%s",ch); } fclose(fp); printf("OK!\n"); } 8.显示学生成绩函数 /**************************显示学生成绩*************************/ void show() { FILE *fp; int i,m=0; fp=fopen("data","ab+"); while(!feof(fp)) { if(fread(&stu[m] ,LEN,1,fp)==1) m++; }   fclose(fp); printf(" 学期   专业班级      姓名       学号      工科数学  大学英语  C语言  总分  平均分 \n"); for(i=0;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有