程序设计学生选修课程系统设计与实现_第1页
程序设计学生选修课程系统设计与实现_第2页
程序设计学生选修课程系统设计与实现_第3页
程序设计学生选修课程系统设计与实现_第4页
程序设计学生选修课程系统设计与实现_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通达学院程序设计(2017/2018学年第1学期)题目:学生选修课程系统设计与实现专业计算机科学于技术(嵌入式)学生姓名班级学号指导教师徐小龙指导单位计算机学院·计算机科学与技术系日期2017年10月27日南京邮电大学通达学院程序设计指导教师成绩评定表题目学生姓名班级学号专业评分内容评分标准优秀良好中等差平时成绩认真对待课程设计,遵守实验室规定,上机不迟到早退,不做与设计无关得事。设计成果设计得科学、合理性功能丰富、符合设题目要求界面友好、外观漂亮、大方设计得原创性设计报告设计报告正确合理、反映系统设计流程文档内容详实程度文档格式规范、排版美观答辩简练、准确阐述设计内容,能准确有条理回答各种问题,系统演示顺利。评分等级指导教师签名日期2017-10—27备注评分等级有五种:优秀、良好、中等、及格、不及格课题内容与要求学生选修课程系统设计与实现假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供以下功能:系统以菜单方式工作课程信息录入功能(课程信息用文件保存)—-输入课程信息浏览功能--输出查询功能:按学分查询、按课程性质查询学生可以选修课程需求分析开始本系统得功能模块如图所示开始主函数主函数进入选课操进入选课操作统计选课情况浏览课程信息录入课程信息查询课程信息从选课文件中统计信息输入学号姓名进行选开课课浏览文件中得课程信息将课程信息输入文件中从选课文件中统计信息输入学号姓名进行选开课课浏览文件中得课程信息将课程信息输入文件中按照课程性质查询课程按照课程性质查询课程按照学分查询课程信息使系统以菜单方式工作:输出个菜单,用于显示以从文件中加载得课程信息与若干个可选得功能选项。根据客户输入得选项来运行不同得功能,运行不同得函数。录入课程信息:使用户可以将课程信息输入文件浏览课程信息:使用户可以按照学分或者课程性质浏览文件中得课程信息进入选课操作:输入学号,姓名进行选课统计选课情况:从选课文件中统计信息概要设计(1)主函数得设计在主函数中按照提示输入相对应数字进入相应得操作,同时,在输入序号数字错误时,会自动提示“输入错误,请重新输入”,然后,重新输入一个数字,继续进行相应得操作。(注:输入得数字要在0~5之内)算法设计如下:S1:从键盘上输入一个0~5得数字,进入相应得操作S2:如果选择序号1,则进入课程信息录入操作S3:如果选择序号2,则进入浏览课程信息操作S4:如果选择序号3,则进入查询课程信息操作S5:如果选择序号4,则进入学生选择课程操作S6:如果选择序号5,则进入统计选课情况操作S7:如果选择序号0,则退出学生选课管理系统S8:如果选择除0~5得其她操作,则提示“输入错误,请重新输入”然后返回S1具体流程图如下:开开始主函数主函数输入0~5相应得操作对应得数字输入0~5相应得操作对应得数字进行相应得操作进行相应得操作就是否继续就是否继续就是就是否否结束结束录入函数得设计对于录入函数,就就是在D盘建立一个“course、txt”文件,然后通过scanf从键盘上输入课程信息,再通过fprintf将输入得信息保存在文件中,关闭文件。算法设计如下:S1:在D盘建立“course、txt”文件S2:提示让学生输入选课门数S3:从键盘上输入课程信息并保存S4:当指针指向文件尾部,返回S3具体流程图如下:开始创建文件开始创建文件输入课程门数输入课程门数结束输入课程信息结束输入课程信息保存课程信息保存课程信息就是否指向尾部就是否指向尾部就是就是结束结束浏览函数得设计对于浏览函数,通过fscanf读取文件中得课程信息,然后再通过printf将信息输出算法设计如下:S1:打开“course、txt”文件S2:读取文件中得信息S3:输出信息S4:当指针未指向文件尾部,返回S2具体流程图如下:开始开始打开文件打开文件输出课程信息读取课程信息输出课程信息读取课程信息否就是否指向尾部否就是否指向尾部就是就是结束结束查询函数得设计对于查询函数,输入1或2选择查询方式,如果不就是,则重新输入。对于不同方式得查询,如果输入得方式与文件中有相符得,则输出查询结果算法设计如下:S1:选择查询方式S2:如果方式就是学分查询,输入想查询得学分,打开文件,未指向文件尾部,如果文件中存在,则输出查询结果S3:如果方式就是课程性质查询,输入想查询得课程性质,打开文件,未指向文件尾部,读取文件信息,如果文件中存在,则输出查询结果S4:如果方式数字不存在,则退出查询具体流程图如下:开始开始选择查询方式选择查询方式数字不正确按课程性质数字不正确按课程性质按学分查询打开文件读取打开文件读取打开文件读取打开文件读取只显示课程编号、课程名称信息,不显示结果只显示课程编号、课程名称信息,不显示结果就是否存在信息就是否存在信息就是否存在信息就是否存在信息就是就是否就是就是否否就是否指向尾部就是否指向尾部否就是否指向尾部就是否指向尾部就是就是就是就是就是就是就是就是退出课程查询系统输出课程信息输出课程信息退出课程查询系统输出课程信息输出课程信息结束结束结束结束选课函数得设计对于选课函数,先从键盘上输入学号,姓名,课程编号,课程名称,打开“course、txt"文件,如果,课程存在,则进入下一步,建立“student、txt”文件,将选课信息保存在文件中,退出.算法设计如下:S1:输入选课信息,包括学号,姓名,课程编号,课程名称S2:打开文件“course、txt”S3:如果课程存在,则进行下一步S4:建立“student、txt”文件S5:保存选课信息具体流程图如下开始:开始输入选课信息输入选课信息打开课程文件打开课程文件就是否存在课程就是否存在课程建立选课文件建立选课文件读取选课信息保存读取选课信息保存读取选课信息保存读取选课信息保存否就是否指向尾部否就是否指向尾部结束结束统计函数得设计对于统计函数,打开“student、txt"文件,读取文件中得选课信息,输出文件中得选课信息,计数,关闭文件算法设计如下:S1:打开“student、txt”文件S2:当未指向文件尾部,读取文件中得选课信息S3:输出选课信息同时计数S4:输出人数S5:结束具体流程图如下:开始开始打开选课文件打开选课文件读取选课信息读取选课信息输出选课信息计数输出选课信息计数否就是否指向尾部否就是否指向尾部结束结束四、详细设计1、主函数:构造voidmain(),实现调用各个功能模块:学生选课系统执行主流程如图所示,先执行主函数中显示菜单函数,通过循环与按键操作来执行相应得操作。按键得有效键值为0~5之间得任意数值,其她按键为无效输入,会提示“输入错误,请重新输入”,同时,再次用scanf创造再次输入得机会。各个按键得执行功能为:“1":录入选修课课程信,调用函数luru();“2”:浏览录入得课程信息,调用函数liulan();“3":查询课程信息,调用函数chaxun();“4":进入选课操作,调用函数chaxun();“5":统计选课信息,调用函数tongji();“0”:退出系统;intmain(){ intn;ﻩintmenu();ﻩintf1();ﻩintluru(); intliulan();ﻩintchaxun(); intxuanke(); inttongji();ﻩprintf(”\n*********************************************");ﻩprintf(”\n\n**********欢迎进入学生选课系统!**********");ﻩmenu();ﻩprintf("\n");ﻩprintf(”*******************theend*********************\n”);ﻩprintf(”\n*********************************************"); printf("\n\n请先选择1进行课程信息录入:”);ﻩscanf(”%d",&n); for(;n>5||n〈0;) {ﻩ printf("\n输入错误!请重新输入!\n");ﻩﻩﻩscanf(”%d",&n); }ﻩwhile(n>0&&n〈6) {ﻩ switch(n)ﻩ {ﻩ case1:luru();break; ﻩcase2:liulan();break; case3:chaxun();break;ﻩ case4:xuanke();break; case5:tongji();break; ﻩ} scanf("%d”,&n);ﻩ for(;n〉5||n〈0;) { ﻩ printf(”\n\n”);ﻩ ﻩprintf("\n输入错误!请重新输入!\n”); ﻩﻩscanf(”%d",&n);ﻩ }ﻩﻩsystem(”cls”);ﻩ}ﻩif(n==0) { printf("\n\n\n\n\n\n\n"); printf(”**********谢谢使用!**********\n");ﻩ printf("\n\n\n\n\n");ﻩ} exit(0);ﻩreturn0;}定义menu函数,f1函数方便调用函数函数功能及实现:此函数为输出菜单,进入系统后提示可根据供选择得项目进行后续操作.intmenu(){ intn;ﻩprintf(”\n\n\n\n");ﻩprintf("1、录入课程信息\n\n");printf("2、浏览课程信息\n\n");printf(”3、查询课程信息\n\n”);printf(”4、进入选课操作\n\n”);ﻩprintf("5、统计选课情况\n\n");ﻩprintf("0、退出选课系统\n\n”);return0;}定义课程、选课结构体变量structcourse{ intnum;ﻩcharname[20]; charkind[20];ﻩintttime,mark,term;}c;structstudent{intsnum;ﻩum; charcnam[20]; charsnam[20];}s[500];定义录入函数,课程信息函数功能及实现:此函数录入课程信息,在查询、浏览、进入选课,查瞧选课信息等函数之前。定义指向文件得指针变量*fp,课程信息结构体c通过fopen函数建立文件"course、txt",后输入录入课程得门数,打印表头,通过for循环,用scanf函数从屏幕读取课程信息,并通过fprintf函数将课程信息录入到文件“course、txt”中,最后输出主菜单,返回主程序.intluru(){ﻩFILE*fp;ﻩstructcoursec; intcount;ﻩinti; if((fp=fopen(”D://course、txt",”w"))==NULL) { ﻩprintf("cannotopenfile\n");ﻩﻩexit(0);ﻩ}ﻩprintf(”\n请输入选择得课程门数:");ﻩscanf("%d”,&count);ﻩprintf("\n\n\n");ﻩf1();ﻩfor(i=0;i<count;i++) {ﻩ scanf("%d%s%s%d%d%d",&c、num,c、name,c、kind,&c、ttime,&c、mark,&c、term); fprintf(fp,”%d\t%s\t%s\t%d\t%d\t%d\t",c、num,c、name,c、kind,c、ttime,c、mark,c、term); } fclose(fp);ﻩprintf("\n录入成功!\n\n");ﻩmenu(); return0;}定义浏览函数,浏览录入得课程信息函数功能及实现:此函数先定义指向文件得指针*fp,课程结构体变量c,通过if语句判断文件就是否存在,在调用函数f1(),输出表头信息,通过for循环并使用fscanf函数将文件中得课程信息读出并通过printf打印到屏幕上,再通过fclose函数关闭文件.intliulan()//浏览函数{ﻩinti=0; FILE*fp;ﻩstructcoursec;ﻩif((fp=fopen(”D://course、txt”,”r”))==NULL)ﻩ{ printf("\ncannotopencourse!\n");ﻩﻩexit(0);ﻩ} f1();ﻩwhile(!feof(fp)&&i<count)ﻩ{ﻩfscanf(fp,"%d%s%s%d%d%d",&c、num,c、name,c、kind,&c、ttime,&c、mark,&c、term);ﻩ printf(”%7d%11s%10s%9d%9d%8d\n",c、num,c、name,c、kind,c、ttime,c、mark,c、term); ﻩi++; } fclose(fp); menu();ﻩreturn0;}定义查询函数,按照学分与课程性质查询函数功能及实现:先定义学生结构体变量s,打印相关可供选择得选项,通过scanf函数读取输入字符,打印表头,再使用if语句进行相关选择。如果数“1",则就是按学分查询课程,符合第一个if语句,输入想要查询得学分,程序通过for循环从文件中读取课程信息,并通过printf函数输出满足要求得课程信息;如选择“2”,符合第二个if语句,则按照课程性质查询,输入课程性质,程序通过for循环从文件中读取课程信息,并通过printf函数输出满足要求得课程信息;如输入“3”,符合第二个if语句,则按照课程名称查询,输入要课程名称,程序通过for循环从文件中读取课程信息,并通过printf函数输出满足要求得课程信息;查询完成后通过fclose函数关闭文件,打印主菜单,返回主函数。intchaxun(){ﻩFILE*fp;ﻩstructcoursec;ﻩintscore;ﻩintb,i=0;ﻩcharkind[20];ﻩprintf("\n1、按学分查询\n"); printf(”\n2、按课程性质查询"); printf(”请选择查询方式\n\n输入选项数字:”);ﻩscanf("%d",&b);ﻩfor(;b〈1||b〉2;) { printf("\n输入错误!请重新输入!\n");ﻩﻩscanf(”%d",&b);ﻩ} if(b==1) { ﻩprintf("\n输入您要查询得学分:”);ﻩ scanf("%d”,&score);ﻩﻩif((fp=fopen(”D://course、txt","r"))==NULL) {ﻩﻩ printf("\ncannotopencourse!\n”); ﻩ exit(0);ﻩ } f1(); ﻩwhile(!feof(fp)&&i<count)ﻩ { ﻩfscanf(fp,"%d%s%s%d%d%d”,&c、num,c、name,c、kind,&c、ttime,&c、mark,&c、term); if(c、mark==score) printf("%7d%11s%10s%9d%9d%8d\n”,c、num,c、name,c、kind,c、ttime,c、mark,c、term);ﻩ i++;ﻩﻩ}ﻩ} elseif(b==2)ﻩ{ printf("\n\n输入您要查询得课程性质:”); scanf(”%s”,kind); if((fp=fopen("D://course、txt","r"))==NULL)//打开文件"course、txt"ﻩﻩ{ printf("\ncannotopencourse!\n"); }ﻩﻩf1(); ﻩwhile(!feof(fp)&&i〈count) { ﻩ fscanf(fp,"%d%s%s%d%d%d”,&c、num,c、name,c、kind,&c、ttime,&c、mark,&c、term); if(strcmp(c、kind,kind)==0) ﻩﻩ printf("%7d%11s%10s%9d%9d%8d\n",c、num,c、name,c、kind,c、ttime,c、mark,c、term); ﻩ i++;ﻩﻩ} }ﻩelseﻩ{ﻩ printf("输入错误!"); ﻩexit(1);ﻩ}ﻩfclose(fp); menu();ﻩreturn0;}定义选课函数,进入选课操作函数功能及实现:进入此函数可进行自由选课,首先定义了学生结构体变量s,与课程结构体变量c。选课学生输入自己得学号与要选得课程,通过for循环打开文件并找到所要选择得课程,通过break跳出循环,关闭课程文件“course、txt”并将学生选课信息存入文件“student、txt”中。打印菜单信息,返回主函数。intxuanke(){ﻩintt=0,flag;ﻩinti;ﻩ/*structcoursec;ﻩFILE*fp; do {ﻩprintf(”\n请输入学号姓名课程编号及课程名称:");scanf("%d%s%d%s”,&s[t]、snum,s[t]、snam,&s[t]um,s[t]am);ﻩif((fp=fopen(”D://course、txt",”r”))==NULL)//打开文件”course、txt"ﻩ{ printf("\ncannotopencourse!\n");ﻩ exit(0); }ﻩwhile(!feof(fp))ﻩ{ﻩﻩfscanf(fp,"%d%s%s%d%d%d",&c、num,c、name,c、kind,&c、ttime,&c、mark,&c、term);ﻩif((s[t]um==c、num)&&(s[t]am==c、name)) ﻩ ﻩt++; ﻩbreak;ﻩ}ﻩfclose(fp); printf("\n就是否继续,就是1,否0\n");ﻩ scanf("%d”,&flag); ﻩif((fp=fopen("D://student、txt","a+”))==NULL)ﻩﻩ{ printf(”\ncannotopenstudent!\n"); exit(0);ﻩﻩ} ﻩfor(i=0;i<t;i++); ﻩfprintf(fp,"%d\t%s\t%d\t%s\t\n",s[t]、snum,s[t]、snam,s[t]um,s[t]am);ﻩfclose(fp); }while(flag); printf("\n*********恭喜选课成功!*********\n”);ﻩmenu();ﻩreturn0;}8。定义统计函数,统计学生选课信息函数功能及实现:此函数为查瞧选修课被选择得情况。定义了变量total为了统计选课人数,通过if语句判断就是否存在文件“student、txt”,通过for循环打印出所有已选课学生得学号、选课课程编号与所选课程得名称,通过计数变量total输出已选课得人数信息。然后打印菜单,返回主函数。inttongji()//统计函数{ﻩinttotal=0; intt,i=0; FILE*fp; if((fp=fopen("D://student、txt”,"r”))==NULL) { ﻩprintf(”\ncannotopenstudent!\n”); exit(0);ﻩ}ﻩprintf("\n学号姓名课程编号及课程名称\n”); while(!feof(fp))ﻩ{ ﻩfscanf(fp,”%d%s%d%s\n",&s[i]、snum,s[i]、snam,&s[i]um,s[i]am); ﻩtotal++;ﻩﻩi++; }ﻩt=i; for(i=0;i〈t;i++) ﻩprintf(”%5d%6s%7d%10s\n”,s[i]、snum,s[i]、snam,s[i]um,s[i]am);ﻩprintf("\n选课学生总人数为:%d人",total);ﻩfclose(fp);ﻩmenu();ﻩreturn0;}源程序代码:#include〈stdio、h>#include〈string、h>#include<stdlib、h>structcourse{ﻩintnum;ﻩcharname[20]; charkind[20];ﻩintttime,mark,term;}c;structstudent{ intsnum; intcnum; charcnam[20];ﻩcharsnam[20];}s[500];intcount;//全局变量intmain()//主函数{ﻩintn; intmenu();ﻩintf1(); intluru(); intliulan(); intchaxun();ﻩintxuanke(); inttongji(); printf(”\n*********************************************”); printf("\n\n**********欢迎进入学生选课系统!**********"); menu(); printf("\n"); printf(”*******************theend*********************\n”); printf("\n*********************************************”);ﻩprintf("\n\n请先选择1进行课程信息录入:”); scanf("%d",&n);//防止错误,请重新输入 for(;n>5||n〈0;)ﻩ{ﻩ printf("\n输入错误!请重新输入!\n”); scanf("%d",&n); } while(n〉0&&n<6) {ﻩ switch(n) ﻩ{ ﻩcase1:luru();break;//录入课程信息ﻩﻩcase2:liulan();break;//浏览课程信息 ﻩcase3:chaxun();break;//查询课程信息ﻩ case4:xuanke();break;//进入选课操作ﻩ case5:tongji();break;//统计选课情况ﻩﻩ} scanf(”%d",&n);//选择所需操作ﻩ for(;n>5||n<0;) ﻩ{ ﻩ printf("\n\n");ﻩﻩﻩprintf(”\n输入错误!请重新输入!\n”);ﻩﻩ scanf("%d",&n);//防止错误,提示重新输入 } system(”cls");//清屏 }ﻩif(n==0)ﻩ{ printf(”\n\n\n\n\n\n\n"); printf("**********谢谢使用!**********\n"); printf("\n\n\n\n\n");ﻩ} exit(0);//退出选课系统 return0;}intmenu()//菜单函数{ intn;ﻩprintf("\n\n\n\n"); printf("1、录入课程信息\n\n");printf(”2、浏览课程信息\n\n");printf("3、查询课程信息\n\n”);printf(”4、进入选课操作\n\n”);printf("5、统计选课情况\n\n");printf("0、退出选课系统\n\n”);return0;}intf1(){ﻩprintf("\n课程编号课程名称课程性质总学时学分开课学期:\n");ﻩreturn0;}intluru()//录入函数{ﻩFILE*fp;//定义指向文件得指针ﻩstructcoursec;ﻩinti; if((fp=fopen("D://course、txt”,"w”))==NULL)//建立文件"course、txt”ﻩ{ printf(”cannotopenfile\n");ﻩﻩexit(0);ﻩ}ﻩprintf(”\n请输入选择得课程门数:");ﻩscanf(”%d",&count);ﻩprintf(”\n\n"); f1(); for(i=0;i<count;i++) {ﻩﻩscanf(”%d%s%s%d%d%d”,&c、num,c、name,c、kind,&c、ttime,&c、mark,&c、term); fprintf(fp,"%d\t%s\t%s\t%d\t%d\t%d\t",c、num,c、name,c、kind,c、ttime,c、mark,c、term); } fclose(fp);//关闭文件 printf(”\n*********录入成功!*********\n"); menu(); return0;}intliulan()//浏览函数{ inti=0;ﻩFILE*fp;//定义指向文件得指针 structcoursec;//定义课程结构体变量ﻩif((fp=fopen("D://course、txt”,"r"))==NULL)//打开文件”course、txt” {ﻩﻩprintf("\ncannotopencourse!\n"); exit(0); }ﻩf1();ﻩwhile(!feof(fp)&&i<count) {ﻩfscanf(fp,"%d%s%s%d%d%d”,&c、num,c、name,c、kind,&c、ttime,&c、mark,&c、term);ﻩ printf("%7d%11s%10s%9d%9d%8d\n",c、num,c、name,c、kind,c、ttime,c、mark,c、term); i++; } fclose(fp);//关闭文件ﻩmenu();ﻩreturn0;}intchaxun()//查询函数{ FILE*fp;//定义指向文件得指针 structcoursec;//定义课程结构体变量 intscore;ﻩintb,i=0; charkind[20];ﻩprintf("\n1、按学分查询\n”); printf(”\n2、按课程性质查询"); printf("请选择查询方式\n\n输入选项数字:"); scanf(”%d",&b);//防止错误,提示重新输入 for(;b<1||b>2;) {ﻩﻩprintf("\n输入错误!请重新输入!\n"); scanf(”%d",&b); }//按学分查询ﻩif(b==1)ﻩ{ ﻩprintf("\n输入您要查询得学分:");ﻩﻩscanf("%d”,&score);ﻩ if((fp=fopen("D://course、txt",”r"))==NULL) ﻩ{ printf("\ncannotopencourse!\n"); ﻩﻩexit(0);ﻩﻩ}ﻩ f1();ﻩ while(!feof(fp)&&i〈count)//当没有指向文件尾部,读取文件“course、txt”中得数据ﻩﻩ{ ﻩﻩfscanf(fp,"%d%s%s%d%d%d”,&c、num,c、name,c、kind,&c、ttime,&c、mark,&c、term);ﻩ ﻩif(c、mark==score)//比较输入得分数与结构体中得分数,如果相同,输出那组数据ﻩﻩ printf(”%7d%11s%10s%9d%9d%8d\n",c、num,c、name,c、kind,c、ttime,c、mark,c、term); ﻩﻩi++; ﻩ}ﻩ}ﻩelseif(b==2)//按课程性质查询 { ﻩprintf(”\n\n输入您要查询得课程性质:");ﻩ scanf("%s”,kind); ﻩif((fp=fopen(”D://course、txt","r"))==NULL)//打开文件"course、txt” ﻩ{ﻩﻩ printf("\ncannotopencourse!\n");ﻩﻩ}ﻩﻩf1();ﻩ while(!feof(fp)&&i〈count)//当没有到达文件尾部,读取“course、txt"中得数据 ﻩ{ﻩ ﻩfscanf(fp,"%d%s%s%d%d%d",&c、num,c、name,c、kind,&c、ttime,&c、mark,&c、term);ﻩﻩﻩif(strcmp(c、kind,kind)==0)//比较输入得字符串与原文件中得课程性质,如果相同,输出那组数据 ﻩﻩ printf("%7d%11s%10s%9d%9d%8d\n",c、num,c、name,c、kind,c、ttime,c、mark,c、term); ﻩi++;ﻩﻩ} }ﻩelseﻩ{ printf(”输入错误!");//选择错误,就退出 ﻩexit(1); }ﻩfclose(fp);ﻩmenu(); return0;}intxuanke()//选课函数{ﻩintt=0,flag;ﻩinti;ﻩFILE*fp;//定义指向文件得指针ﻩdo {ﻩprintf("\n请输入学号姓名课程编号及课程名称:”);scanf(”%d%s%d%s",&s[t]、snum,s[t]、snam,&s[t]um,s[t]am); if((fp=fopen("D://course、txt”,”r"))==NULL)//打开文件”course、txt" { printf(”\ncannotopencourse!\n");ﻩﻩexit(0); } while(!feof(fp))//如果课程编号与课程名称与学生所选一致,就跳出,执行下一步 {ﻩ fscanf(fp,"%d%s%s%d%d%d”,&c、num,c、name,c、kind,&c、ttime,&c、mark,&c、term); if((s[t]um==c、num)&&(s[t]am==c、name)) ﻩﻩt++; ﻩbreak;ﻩ}ﻩfclose(fp); printf("\n就是否继续,就是1,否0\n"); ﻩscanf("%d",&flag); if((fp=fopen(”D://student、txt","a+"))==NULL)//建立文件“student、txt”ﻩ {ﻩ printf(”\ncannotopenstudent!\n");ﻩ exit(0);ﻩﻩ}//建立,并将学生选课信息输入"student、txt" ﻩfor(i=0;i<t;i++);ﻩﻩfprintf(fp,”%d\t%s\t%d\t%s\t\n”,s[t]、snum,s[t]、snam,s[t]um,s[t]am); fclose(fp);//关闭选课文件”course、txt" }while(flag); printf("\n*********恭喜选课成功!*********\n");ﻩmenu();ﻩreturn0;}inttongji()//统计函数{ inttotal=0; intt,i=0; FILE*fp;ﻩif((fp=fopen(”D://student、txt”,”r"))==NULL)//打开文件“student、txt”ﻩ{ ﻩprintf("\ncannotopenstudent!\n");ﻩﻩexit(0);ﻩ} printf("\n学号姓名课程编号及课程名称\n”); while(!feof(fp))//计数ﻩ{ fscanf(fp,"%d%s%d%s\n",&s[i]、snum,s[i]、snam,&s[i]um,s[i]am);//读取文件“student、txt” total++; ﻩi++; } t=i; for(i=0;i<t;i++)ﻩﻩprintf("%5d%6s%7d%10s\n”,s[i]、snum,s[i]、snam,s[i]um,s[i]am);ﻩprintf(”\n选课学生总人数为:%d人",total);ﻩfclose(fp);//关闭文件 menu();ﻩreturn0;}测试数据及其结果分析(1)、主菜单界面(2)、录入课程信息:(3)、浏览课程信息:(4)、查询课程信息a、按照学分查询:b、按照课程性质查询:(5)、进入选课操作:(可以多次选择)(6)、统计选课信息(7)退出选课系统(按0退出操作系统)调试过程中得问题调试步骤先进入菜单函数,选择数字进行相应得操作,然后,先进入录入函数阶段,通过键盘输入相应得课程信息,同时,创建一个“course、txt”文件,将输入得课程信息保存在文件中.然后,进入浏览函数阶段,先读取课程文件中得课程信息,然后将信息显示到屏幕上。接着,进入查询函数阶段,通过学分或者课程性质,查询相应得课程信息。随后,进入选课函数阶段,通过输入学号与姓名,进行选课操作,并创建一个“student、txt”文件,将选课信息保存其中。最后,进入统计函数阶段,读取选课文件中得信息,统计选课人数,并将选课信息显示在屏幕上.选择序号0退出选课系统.(2)发现得问题1、在用scanf函数给普通变量输入数据时,在变量名前漏写地址运算符&.如:scanf(“%d",count);同时,不能少掉上引号与分号。2、输入数据时得数据形式与要求不符.用scanf函数输入数据时,必须注意要与scanf语句中得对应形式匹配。如:scanf(“%d,%d”,&x,&y);输入数据时,不能输23,而就是应该用2,33、可以用scanf输入一个字符串,如果要用它输入多个字符串,输入时,中间要用空格分开。如:scanf(“%s%s%s”,str1,str2,str3);输入数据howareyou4、混淆“=”与“==”在C语言中,“=”就是赋值运算符,“==”就是关系运算符。如:if(i==1)不能写成if(i=1)5、在不该出现分号得地方加了分号如:if(x>y);在if后面就是不用加分号得6、不能超过数组得最大值使用,在引用数组元素时,下标从0开始,即下标得下限就是0,而下标得上限值就是数组定义时元素个数减1.7、在switch语句得各分支中未使用break语句。如:switch(n){case1:luru();break;//录入课程信息ﻩﻩcase2:liulan();break;//浏览课程信息 case3:chaxun();break;//查询课程信息ﻩ case4:xuanke();break;//进入选课操作 case5:tongji();break;//统计选课情况 }8、统计时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论