C语言学分管理系统需求文档附源代码_第1页
C语言学分管理系统需求文档附源代码_第2页
C语言学分管理系统需求文档附源代码_第3页
C语言学分管理系统需求文档附源代码_第4页
C语言学分管理系统需求文档附源代码_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

-.z.学分管理程序的设计目录1.需求分析〔本局部是此程序的需求分析,包括以下四个方面〕31.1总体分析:31.2功能需求:3录入*位学生的学分;3给定**,显示*位学生的学分完成情况;3给定*个班级的班号,显示该班所有学生的学分完成情况;3给定*位学生的**,修改该学生的学分信息;3按照*类课程的学分上下进展排序;3提供一些统计各类信息的功能。31.3具体需求:3总体3录入3查询3修改3删除31.4开发运行环境3开发环境3运行环境32详细设计32.1整体功能架构32.2数据构造3全局变量3构造体变量3宏定义32.3函数接口32.3.1Menu()函数32.3.2MainMnue()函数32.3.5Read()函数32.3.6Type()函数32.3.7FindClass()函数32.3.8StudentNumber()函数32.3.9Alter()函数32.3.10Delete()函数32.3.11Stat()函数32.3.12Ordering()函数32.4函数模块划分3主函数3录入函数32.4.3查询函数3修改函数3删除函数32.5操作流程图33用户使用手册33.1点击进入学分管理系统,显示主菜单,提示用户选择:33.2输入学生信息33.3输入**查询33.4输入班级查询33.5修改学生信息33.6排序33.7删除学生信息33.8统计*班学生学分完成情况34源代码35心得体会31.需求分析〔本局部是此程序的需求分析,包括以下四个方面〕1.1总体分析:此系统为学分管理系统,它可以录入、查询、修改以及统计学生所得学分情况。1.2功能需求:录入*位学生的学分;给定**,显示*位学生的学分完成情况;给定*个班级的班号,显示该班所有学生的学分完成情况;给定*位学生的**,修改该学生的学分信息;按照*类课程的学分上下进展排序;提供一些统计各类信息的功能。1.3具体需求:总体录入模块录入模块学分管理系统统查询模块学分管理系统统查询模块修改模块修改模块退出模块退出模块录入显示信息返回录入显示信息返回录入班级实验性课程学分班级实验性课程学分人文类课程学分**人文类课程学分******选修课学分选修课学分专业课学分根底课学分专业课学分根底课学分显示所有人学分信息按班级查询输入班级查询显示所有人学分信息按班级查询输入班级查询查询按**查询输入**显示此学生学分信息按**查询输入**显示此学生学分信息界面显示班级**根底课专业课选修课人文类课程实验性课程修改确定修改输入**按**修改确定修改输入**按**修改取消(返回取消(返回)修改返回返回删除删除输入**查询删除删除输入**查询删除1.4开发运行环境开发环境基于windows系统的开发工具Code::Blocks中C语言开发环境。运行环境硬件平台:内存:128MB以上硬盘空间:100MB以上软件平台:操作系统:Window系统效劳器一样软件平台,硬件平台一样或更高端皆可。2详细设计2.1整体功能架构主菜单主菜单录入子系统查询子系统修改子系统退出2.2数据构造全局变量charID[10];//**charname[50];//charclass[5];//班级intscore[5];//学分构造体变量structstudent{charID[10];//**charname[50];//charclass[5];//班级intscore[5];//学分};structdata{intcount;//当前学生数组中学生的个数structstudentstu[MA*NUM];//学生数组}dd;structstudentst;宏定义#defineMA*NUM81(数组)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.t*t功能概要保存学生的**信息记述形式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函数模块划分主函数TType()函数〔录入函数:录入信息,为函数内部接口〕FFind()函数〔查询函数:查询信息,为函数内部接口〕main()main()函数AAlter()函数〔修改函数:修改信息,为函数内部接口〕DeleteDelete()函数〔删除函数:删除信息,为函数内部接口〕录入函数type()type()函数输入班级,记录班级输入班级,记录班级输入名字,记录名字输入名字,记录名字输入**,记录**输入**,记录**输入根底课成绩,记录根底课成绩输入根底课成绩,记录根底课成绩输入专业课成绩,记录专业课成绩输入专业课成绩,记录专业课成绩输入选修课成绩,记录选修课成绩输入选修课成绩,记录选修课成绩输入人文类课程成绩,记录人文类课程成绩输入人文类课程成绩,记录人文类课程成绩输入实验性课程成绩,记录实验性课程成绩输入实验性课程成绩,记录实验性课程成绩调用SaveFile()调用SaveFile()函数,保存学生信息显示学生信息显示学生信息返回返回显示全班学分信息调用FindClass()函数〔班级函数:按班级查找〕输入班级查找2.4.3显示全班学分信息调用FindClass()函数〔班级函数:按班级查找〕输入班级查找Find()Find()函数显示此人学分信息调用StudentNum显示此人学分信息调用StudentNumber()函数〔**函数:按**查找〕输入**查找Alter()函数修改函数Alter()函数输入**,查找此人信息输入**,查找此人信息修改根底课成绩修改根底课成绩修改专业课成绩修改专业课成绩修改选修课成绩修改选修课成绩修改人文类课程成绩修改人文类课程成绩修改实验性课程成绩修改实验性课程成绩调用SaveFile()调用SaveFile()函数,保存学生信息显示学生信息显示学生信息返回返回Delete()函数删除函数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>#defineMA*NUM60structstudent{charID[10];//**charname[50];//charclass[5];//班级intscore[5];//学分};structdata{intcount;//当前学生数组中学生的个数structstudentstu[MA*NUM];//学生数组}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.t*t","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[MA*NUM];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.t*t",0)==-1)//如果文件不存在{fp=fopen("file.t*t","w");fwrite(&k,sizeof(int),1,fp);fclose(fp);}fp=fopen("file.t*t","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]=

温馨提示

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

评论

0/150

提交评论