




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
./学分管理程序的设计目录1.需求分析〔本部分是此程序的需求分析,包括以下四个方面41.1总体分析:41.2功能需求:5录入某位学生的学分;5给定学号,显示某位学生的学分完成情况;5给定某个班级的班号,显示该班所有学生的学分完成情况;5给定某位学生的学号,修改该学生的学分信息;5按照某类课程的学分高低进行排序;5提供一些统计各类信息的功能。51.3具体需求:5总体5录入6查询6修改6删除71.4开发运行环境7开发环境7运行环境72详细设计82.1整体功能架构82.2数据结构8全局变量8结构体变量8宏定义92.3函数接口92.3.1Menu<>函数92.3.2MainMnue<>函数102.3.5Read<>函数102.3.6Type<>函数112.3.7FindClass<>函数122.3.8StudentNumber<>函数132.3.9Alter<>函数132.3.10Delete<>函数142.3.11Stat<>函数152.3.12Ordering<>函数162.4函数模块划分18主函数18录入函数192.4.3查询函数20修改函数20删除函数212.5操作流程图223用户使用手册233.1点击进入学分管理系统,显示主菜单,提示用户选择:233.2输入学生信息233.3输入学号查询233.4输入班级查询233.5修改学生信息233.6排序243.7删除学生信息243.8统计某班学生学分完成情况244源代码245心得体会331.需求分析〔本部分是此程序的需求分析,包括以下四个方面1.1总体分析:此系统为学分管理系统,它可以录入、查询、修改以及统计学生所得学分情况。1.2功能需求:1.2.1录入某位学生的学分;1.2.2给定学号,显示某位学生的学分完成情况;1.2.3给定某个班级的班号,显示该班所有学生的学分完成情况;1.2.4给定某位学生的学号,修改该学生的学分信息;1.2.5按照某类课程的学分高低进行排序;1.2.6提供一些统计各类信息的功能。1.3具体需求:1.3.1总体录入模块录入模块学分管理系统统查询模块学分管理系统统查询模块修改模块修改模块退出模块退出模块1.3.2录入显示信息返回录入显示信息返回录入班级实验性课程学分班级实验性课程学分人文类课程学分姓名人文类课程学分姓名学号学号选修课学分选修课学分专业课学分基础课学分专业课学分基础课学分显示所有人学分信息按班级查询输入班级1.3.3查询显示所有人学分信息按班级查询输入班级查询查询按学号查询输入学号显示此学生学分信息按学号查询输入学号显示此学生学分信息界面显示班级学号基础课专业课选修课人文类课程实验性课程1.3.4修改确定修改输入学号按学号修改确定修改输入学号按学号修改取消<返回>修改取消<返回>修改返回返回1.3.5删除删除输入学号查询删除删除输入学号查询删除1.4开发运行环境1.4.1开发环境基于windows系统的开发工具Code::Blocks中C语言开发环境。1.4.2运行环境硬件平台:存:128MB以上硬盘空间:100MB以上软件平台:操作系统:Window系统服务器相同软件平台,硬件平台相同或更高端皆可。2详细设计2.1整体功能架构主菜单主菜单录入子系统查询子系统修改子系统退出2.2数据结构2.2.1全局变量charID[10];//学号charname[50];//charclass[5];//班级intscore[5];//学分2.2.2结构体变量structstudent{charID[10];//学号charname[50];//charclass[5];//班级intscore[5];//学分};structdata{intcount;//当前学生数组中学生的个数structstudentstu[MAXNUM];//学生数组}dd;structstudentst;宏定义#defineMAXNUM81<数组>2.3函数接口2.3.1Menu<>函数函数名Menu文件名无功能概要显示开始时的菜单记述形式voidMenu<>参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明程序运行时显示菜单,供用户选择。可被MainMnue<>、Stat<>函数调用使用注意事项无2.3.2MainMnue<>函数函数名MainMnue文件名无功能概要返回菜单记述形式voidMainMnue<>参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明提示用户按下Enter键,返回主菜单。2,3.4SaveFile<>函数函数名SaveFile文件名file.txt功能概要保存学生的学号信息记述形式voidSaveFile<>参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明用以保存学生的信息,可以被Type<>、Alter<>、Delete<>、Ordering<>函数调用使用注意事项无2.3.5Read<>函数函数名Read文件名无功能概要接收学生的专业课学分记述形式voidRead<>参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明读取存取学生信息的文件,如果没有文件。则文件会被创建;可被主函数调用。2.3.6Type<>函数函数名Type文件名无功能概要录入学生的基本信息和学分信息记述形式voidType<>参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明接收学生的基本信息和学分信息,并且调用SaveFile<>函数进行保存。使用注意事项无2.3.7FindClass<>函数函数名FindClass文件名无功能概要根据学生的班级信息进行查找,显示此班所有信息。记述形式VoidFind<>参数类型变量名I/O说明void无无无返回值类型Void说明值无无详细说明根据学生的学号信息,查找学生的学分信息。2.3.8StudentNumber<>函数函数名StudentNumber文件名无功能概要接收学生的信息记述形式voidStudentNumber<>参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明运用顺序查找方法,根据学号查找学生信息,显示学生信息。2.3.9Alter<>函数函数名Alter文件名无功能概要修改学生的信息记述形式voidalter<>参数类型变量名I/O说明void无无无返回值类型Void说明值无无详细说明修改学生学分信息的总函数。2.3.10Delete<>函数函数名Delete文件名无功能概要删除学生的信息记述形式voidDelete<>参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明根据学号查找学生的信息,并且删除。2.3.11Stat<>函数函数名Stat文件名无功能概要统计某班的学分完成情况。记述形式voidStat<>参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明统计某班的学分完成情况。使用注意事项无2.3.12Ordering<>函数函数名Ordering文件名无功能概要根据学生的基础课成绩进行排序。记述形式voidOrdering<>参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明根据基础课成绩排序,成绩最高的放在首位,成绩最低的放在末尾。排序前排序中排序后2.4函数模块划分2.4.1主函数TType<>函数〔录入函数:录入信息,为函数内部接口FFind<>函数〔查询函数:查询信息,为函数内部接口mmain<>函数AAlter<>函数〔修改函数:修改信息,为函数内部接口DeleteDelete<>函数〔删除函数:删除信息,为函数内部接口录入函数type<>函数type<>函数输入班级,记录班级输入班级,记录班级输入名字,记录名字输入名字,记录名字输入学号,记录学号输入学号,记录学号输入基础课成绩,记录基础课成绩输入基础课成绩,记录基础课成绩输入专业课成绩,记录专业课成绩输入专业课成绩,记录专业课成绩输入选修课成绩,记录选修课成绩输入选修课成绩,记录选修课成绩输入人文类课程成绩,记录人文类课程成绩输入人文类课程成绩,记录人文类课程成绩输入实验性课程成绩,记录实验性课程成绩输入实验性课程成绩,记录实验性课程成绩调用SaveFile<>函数,保存学生信息调用SaveFile<>函数,保存学生信息显示学生信息显示学生信息返回返回显示全班学分信息调用FindClass<>函数〔班级函数:按班级查找输入班级查找2.4.3查询函数显示全班学分信息调用FindClass<>函数〔班级函数:按班级查找输入班级查找Find<>函数Find<>函数显示此人学分信息调用StudentNumber显示此人学分信息调用StudentNumber<>函数〔学号函数:按学号查找输入学号查找Alter<>函数2.4.4修改函数Alter<>函数输入学号,查找此人信息输入学号,查找此人信息修改基础课成绩修改基础课成绩修改专业课成绩修改专业课成绩修改选修课成绩修改选修课成绩修改人文类课程成绩修改人文类课程成绩修改实验性课程成绩修改实验性课程成绩调用SaveFile<>函数,保存学生信息调用SaveFile<>函数,保存学生信息显示学生信息显示学生信息返回返回Delete<>函数2.4.5删除函数Delete<>函数输入学号,查找此人信息输入学号,查找此人信息删除此学生信息删除此学生信息返回返回2.5操作流程图开始开始提示用户选择提示用户选择判断用户的选择判断用户的选择修改学分信息输入班级修改学分信息输入班级查询学分信息修改基础课学分输入姓名查询学分信息修改基础课学分输入姓名判断用户的选择修改专业课学分判断用户的选择修改专业课学分输入学号输入学号修改选修课学分输入班级查找输入学号查找输入基础课学分修改选修课学分输入班级查找输入学号查找输入基础课学分修改人文类课程学分输入专业课学分修改人文类课程学分输入专业课学分修改实验性课程学分显示查询结果显示查询结果输入选修课学分修改实验性课程学分显示查询结果显示查询结果输入选修课学分确定修改输入人文类课程学分确定修改输入人文类课程学分输入实验性课程学分Y输入实验性课程学分显示修改后的学分信息显示修改后的学分信息确定录入N确定录入Y显示学分信息显示学分信息结束结束3用户使用手册3.1点击进入学分管理系统,显示主菜单,提示用户选择:[1]输入学生信息[2]输入学号查询[3]输入班级查询[4]修改学生信息[5]排序〔总学分[6]删除学生信息[7]统计某班学生学分完成情况3.2输入学生信息输入班级输入输入学号输入基础课成绩输入专业课成绩输入选修课成绩输入人文类课程成绩输入实验性课程成绩显示信息返回3.3输入学号查询输入学号查找信息显示信息返回3.4输入班级查询输入班级查找信息显示信息返回3.5修改学生信息输入学号重新输入基础课成绩重新输入专业课成绩重新输入选修课成绩重新输入人文类课程成绩重新输入实验性课程成绩显示信息返回3.6排序显示排序成功返回3.7删除学生信息输入学号删除信息返回3.8统计某班学生学分完成情况显示某班学分完成情况4源代码#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAXNUM60structstudent{charID[10];//学号charname[50];//charclass[5];//班级intscore[5];//学分};structdata{intcount;//当前学生数组中学生的个数structstudentstu[MAXNUM];//学生数组}dd;//子函数声明voidMenu<>;//菜单函数voidMainMenu<>;//返回菜单函数voidSaveFile<>;//保存数据voidType<>;//输入学生信息voidRead<>;//读取数据voidAlter<>;//修改数据voidDelete<>;//删除信息voidStudentNumber<>;//输入学号查询voidFindClass<>;//输入班级查询voidOrdering<>;//排序〔总学分voidStat<>;//统计某班学生学分完成情况//主函数main<>{intnumber;Read<>;Menu<>;while<1>{printf<"请输入功能号[0-7]:",&number>;scanf<"%d",&number>;switch<number>{case0:break;//退出case1:Type<>;break;//输入学生信息case2:StudentNumber<>;break;//输入学号查询case3:FindClass<>;break;//输入班级查询case4:Alter<>;break;//修改学生信息case5:Ordering<>;break;//排序〔总学分case6:Delete<>;break;//删除学生信息case7:Stat<>;break;//统计某班学生学分完成情况default:printf<"\n输入错误!">;break;}if<number==0>break;MainMenu<>;}}voidMenu<>/*显示主菜单*/{system<"cls">;//清屏printf<"\n">;printf<"\t\t★☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆★\n">;printf<"\t\t☆☆\n">;printf<"\t\t☆★☆学分管理系统☆★[0]退出☆\n">;printf<"\t\t☆☆\n">;printf<"\t\t☆[1]输入学生信息[2]输入学号查询☆\n">;printf<"\t\t☆☆\n">;printf<"\t\t☆[3]输入班级查询[4]修改学生信息☆\n">;printf<"\t\t☆☆\n">;printf<"\t\t☆[5]排序〔总学分[6]删除学生信息☆\n">;printf<"\t\t☆☆\n">;printf<"\t\t☆[7]统计某班学生学分完成情况☆\n">;printf<"\t\t☆☆\n">;printf<"\t\t★☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆★\n\n">;}voidMainMenu<>//等待用户按回车后回到主菜单{charc1,c2;printf<"\n\n按回车键返回主菜单...">;scanf<"%c%c",&c1,&c2>;//第一个字符吸收上次的确认回车键Menu<>;}voidSaveFile<>//将数据从结构体数组保存到文件中{FILE*fp;//文件指针inti,k;k=dd.count;fp=fopen<"file.txt","w">;//文件存储位置:当前文件夹fwrite<&k,sizeof<int>,1,fp>;for<i=0;i<k;i++>fwrite<&dd.stu[i],sizeof<structstudent>,1,fp>;fclose<fp>;}voidType<>//输入学生信息{structstudentst;inta,b,k,i;charID[MAXNUM];printf<"\n请输入学生信息:\n">;printf<"\n班级:">;scanf<"%s",st.class>;printf<"\n:">;scanf<"%s",>;printf<"\n学号:">;scanf<"%s",st.ID>;k=dd.count;strcpy<dd.stu[k].ID,st.ID>;strcpy<dd.stu[k].name,>;strcpy<dd.stu[k].class,st.class>;printf<"\n请输入基础课学分<0-50>:">;scanf<"%d",&a>;if<a>50>dd.stu[k].score[0]=50;elsedd.stu[k].score[0]=a;printf<"\n请输入专业课学分<0-50>:">;scanf<"%d",&a>;if<a>50>dd.stu[k].score[1]=50;elsedd.stu[k].score[1]=a;printf<"\n请输入选修课学分<0-24>:">;scanf<"%d",&a>;if<a>24>dd.stu[k].score[2]=24;elsedd.stu[k].score[2]=a;printf<"\n请输入人文类课程学分学分<0-8>:">;scanf<"%d",&a>;if<a>8>dd.stu[k].score[3]=8;elsedd.stu[k].score[3]=a;;printf<"\n请输入实验性课程学分<0-20>:">;scanf<"%d",&a>;if<a>20>dd.stu[k].score[4]=20;elsedd.stu[k].score[4]=a;dd.count++;SaveFile<>;printf<"\n录入信息成功!具体信息如下:">;printf<"\n\n班级\t\t学号\t基础课专业课选修课人文类课程实验性课程">;printf<"\n\n">;printf<"%s\t%s\t%s%5d\t%5d\t%5d\t%7d\t%11d\n",dd.stu[k].class,dd.stu[k].name,dd.stu[k].ID,dd.stu[k].score[0],dd.stu[k].score[1],dd.stu[k].score[2],dd.stu[k].score[3],dd.stu[k].score[4]>;}voidRead<>//将数据从文件读到结构体数组中{FILE*fp;inti,k;structstudentst;k=0;if<access<"file.txt",0>==-1>//如果文件不存在{fp=fopen<"file.txt","w">;fwrite<&k,sizeof<int>,1,fp>;fclose<fp>;}fp=fopen<"file.txt","r">;fread<&k,sizeof<int>,1,fp>;dd.count=k;for<i=0;i<k;i++>{fread<&st,sizeof<structstudent>,1,fp>;strcpy<dd.stu[i].ID,st.ID>;strcpy<dd.stu[i].name,>;strcpy<dd.stu[i].class,st.class>;dd.stu[i].score[4]=st.score[4];dd.stu[i].score[3]=st.score[3];dd.stu[i].score[2]=st.score[2];dd.stu[i].score[1]=st.score[1];dd.stu[i].score[0]=st.score[0];}fclose<fp>;}voidStudentNumber<>//输入学号查询{inti,k;charID[10];printf<"\n请输入您要查询学生的学号:">;scanf<"%s",ID>;k=-1;//运用顺序查找for<i=0;i<dd.count;i++>{if<strcmp<dd.stu[i].ID,ID>==0>{if<k==-1>{printf<"\n\n班级\t\t学号\t基础课专业课选修课人文类课程实验性课程">;printf<"\n\n">;}k=i;printf<"%s\t%s\t%s%5d\t%5d\t%5d\t%7d\t%11d\n",dd.stu[i].class,dd.stu[i].name,dd.stu[i].ID,dd.stu[i].score[0],dd.stu[i].score[1],dd.stu[i].score[2],dd.stu[i].score[3],dd.stu[i].score[4]>;}}if<k==-1>{printf<"\n\n对不起,没有找到该学号%s学生!",ID>;}}voidFindClass<>//输入班级查询{inti,k;charclass[10];printf<"\n请输入您要查询的班级:">;scanf<"%s",class>;k=-1;for<i=0;i<dd.count;i++>{if<strcmp<dd.stu[i].class,class>==0>{if<k==-1>{printf<"\n\n班级\t\t学号\t基础课专业课选修课人文类课程实验性课程">;printf<"\n\n">;}k=i;printf<"%s\t%s\t%s%5d\t%5d\t%5d\t%7d\t%11d\n",dd.stu[i].class,dd.stu[i].name,dd.stu[i].ID,dd.stu[i].score[0],dd.stu[i].score[1],dd.stu[i].score[2],dd.stu[i].score[3],dd.stu[i].score[4]>;}}if<k==-1>{printf<"\n\n没有找到%s班!",class>;}}voidAlter<>//修改学生信息{structstudentst;inti,k,a,b;charID[10];printf<"\n请输入您要修改的学生的学号:">;scanf<"%s",ID>;k=-1;for<i=0;i<dd.count;i++>{if<strcmp<dd.stu[i].ID,ID>==0>{k=i;break;}}if<k==-1>{printf<"\n\n对不起,没有找到该学号%s学生!",ID>;}else{printf<"\n请输入基础课学分<0-50>:">;scanf<"%d",&a>;if<a>50>dd.stu[k].score[0]=50;elsedd.stu[k].score[0]=a;printf<"\n请输入专业课学分<0-50>:">;scanf<"%d",&a>;if<a>50>dd.stu[k].score[1]=50;elsedd.stu[k].score[1]=a;printf<"\n请输入选修课学分<0-24>:">;scanf<"%d",&a>;if<a>24>dd.stu[k].score[2]=24;elsedd.stu[k].score[2]=a;printf<"\n请输入人文课程学分<0-8>:">;scanf<"%d",&a>;if<a>8>dd.stu[k].score[3]=8;elsedd.stu[k].score[3]=a;printf<"\n请输入实验性课程学分<0-20>:">;scanf<"%d",&a>;if<a>20>dd.stu[k].score[4]=20;elsedd.stu[k].score[4]=a;printf<"\n\n修改此学生信息成功!修改后具体信息如下:",ID>;printf<"\n\n班级\t\t学号\t基础课专业课选修课人文类课程实验性课程">;printf<"\n\n">;printf<"%s\t%s\t%s%5d\t%5d\t%5d\t%7d\t%11d\n",dd.stu[k].class,dd.stu[k].name,dd.stu[k].ID,dd.stu[k].score[0],dd.stu[k].score[1],dd.stu[k].score[2],dd.stu[k].score[3],dd.stu[k].score[4]>; }SaveFile<>;}voidDelete<>//删除学生信息{inti,k,j;charID[10];printf<"\n请输入您要删除的学生学号:">;scanf<"%s",ID>;k=-1;for<i=0;i<dd.count;i++>{if<strcmp<dd.stu[i].ID,ID>==0>{k=i;break;}}if<k==-1>{printf<"\n\n没有该学号%s学生!",ID>;}else{for<j=k;j<dd.count-1;j++> { dd.stu[j]=dd.stu[j+1]; }SaveFile<>;printf<"\n\n删除学号%s学生信息成功!",ID>; dd.count--;}}voidOrdering<>//排序〔总学分{inti,k;structstudenttemp;k=dd.count-1;while<k>0>{for<i=0;i<k;i++>{if<dd.stu[i].score[0]<dd.stu[i+1].score[0]>//根据基础课成绩排序,成绩最高的放在首位,成绩最低的放在末尾{strcpy<temp.ID,dd.stu[i].ID>;strcpy<,dd.stu[i].name>; strcpy<temp.class,dd.stu[i].class>;temp.score[4]=dd.stu[i].score[4]; temp.score[3]=dd.stu[i].score[3]; temp.score[2]=dd.stu[i].score[2]; temp.score[1]=dd.stu[i].score[1]; temp.score[0]=dd.stu[i].score[0];strcpy<dd.stu[i].ID,dd.stu[i+1].ID>;strcpy<dd.stu[i].name,dd.stu[i+1].name>;strcpy<dd.stu[i].class,dd.stu[i+1].class>;dd.stu[i].score[4]=dd.stu[i+1].score[4]; dd.stu[i].score[3]=dd.st
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 先装修付款合同样本
- 军训合同样本
- 产品加工框架合同标准文本
- 70个公司合同标准文本
- 政工干部培训课件
- 护理文献综述
- 护理教学组长个人简介
- 2025年枣庄道路货运输从业资格证模拟考试题库
- 护理电子文书书写规范
- 护理责任组长诉职报告
- 平煤集团劳务工合同范本
- 《火针疗法》课件
- 银行柜面岗位资格操作技能等级考试题(附答案)
- JT-T-891-2014道路车辆清障救援操作规范
- 上海沪教牛津版小学五年级英语下册Unit 1 Tidy up!习题及答案
- 养殖水质硫化氢的检测
- 【公文基础】公文写作培训公文写作格式以及要点
- 第24届世界奥林匹克数学竞赛WMO省级测评三年级试卷【含答案】
- 一年级数学100以内加减法计算题
- Q-GDW 1202-2015国家电网公司应急指挥中心建设规范
- 装配式建筑预制构件施工现场吊装 预制柱的吊装
评论
0/150
提交评论