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

下载本文档

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

文档简介

北京交通大学 软件学院 学分管理程序的设计学分管理程序的设计目录1.需求分析(本部分是此程序的需求分析,包括以下四个方面)41.1总体分析:41.2功能需求:51.2.1录入某位学生的学分;51.2.2给定学号,显示某位学生的学分完成情况;51.2.3给定某个班级的班号,显示该班所有学生的学分完成情况;51.2.4给定某位学生的学号,修改该学生的学分信息;51.2.5按照某类课程的学分高低进行排序;51.2.6提供一些统计各类信息的功能。51.3具体需求:51.3.1总体51.3.2录入61.3.3查询61.3.4修改61.3.5删除71.4开发运行环境71.4.1开发环境71.4.2运行环境72详细设计82.1整体功能架构82.2数据结构82.2.1全局变量82.2.2结构体变量82.2.3宏定义92.3函数接口92.3.1 Menu()函数92.3.2 MainMnue()函数102.3.5 Read()函数102.3.6 Type()函数112.3.7 FindClass()函数122.3.8 StudentNumber()函数132.3.9 Alter()函数132.3.10 Delete()函数142.3.11 Stat()函数152.3.12 Ordering()函数162.4函数模块划分182.4.1主函数182.4.2录入函数1924.3查询函数202.4.4修改函数202.4.5删除函数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全局变量char ID10; / 学号char name50; / 姓名 char class5; / 班级 int score5; / 学分2.2.2结构体变量struct student char ID10; / 学号 char name50; / 姓名 char class5; / 班级 int score5; / 学分;struct data int count; / 当前学生数组中学生的个数 struct student stuMAXNUM; / 学生数组 dd;struct student st;2.2.3宏定义#define MAXNUM 81(数组)2.3函数接口2.3.1 Menu()函数函数名Menu文件名无功能概要显示开始时的菜单记述形式void Menu()参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明程序运行时显示菜单,供用户选择。可被MainMnue()、Stat()函数调用使用注意事项无2.3.2 MainMnue()函数函数名MainMnue文件名无功能概要返回菜单记述形式void MainMnue ()参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明提示用户按下Enter键,返回主菜单。2,3.4 SaveFile()函数函数名SaveFile文件名file.txt功能概要保存学生的学号信息记述形式void SaveFile ()参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明用以保存学生的信息,可以被Type()、Alter()、Delete()、Ordering()函数调用使用注意事项无2.3.5 Read()函数函数名Read文件名无功能概要接收学生的专业课学分记述形式void Read()参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明读取存取学生信息的文件,如果没有文件。则文件会被创建;可被主函数调用。2.3.6 Type()函数函数名Type文件名无功能概要录入学生的基本信息和学分信息记述形式void Type()参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明接收学生的基本信息和学分信息,并且调用SaveFile()函数进行保存。使用注意事项无2.3.7 FindClass()函数函数名FindClass文件名无功能概要根据学生的班级信息进行查找,显示此班所有信息。记述形式Void Find()参数类型变量名I/O说明void无无无返回值类型Void说明值无无详细说明根据学生的学号信息,查找学生的学分信息。2.3.8 StudentNumber()函数函数名StudentNumber文件名无功能概要接收学生的姓名信息记述形式void StudentNumber()参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明运用顺序查找方法,根据学号查找学生信息,显示学生信息。2.3.9 Alter()函数函数名Alter文件名无功能概要修改学生的信息记述形式void alter()参数类型变量名I/O说明void无无无返回值类型Void说明值无无详细说明修改学生学分信息的总函数。2.3.10 Delete()函数函数名Delete文件名无功能概要删除学生的信息记述形式void Delete()参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明根据学号查找学生的信息,并且删除。2.3.11 Stat()函数函数名Stat文件名无功能概要统计某班的学分完成情况。记述形式void Stat()参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明统计某班的学分完成情况。使用注意事项无2.3.12 Ordering()函数函数名Ordering文件名无功能概要根据学生的基础课成绩进行排序。记述形式void Ordering()参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明根据基础课成绩排序,成绩最高的放在首位,成绩最低的放在末尾。排序前排序中排序后2.4函数模块划分2.4.1主函数Type()函数(录入函数:录入信息,为函数内部接口)Find()函数 (查询函数:查询信息,为函数内部接口)main()函数Alter()函数 (修改函数:修改信息,为函数内部接口)Delete()函数 (删除函数:删除信息,为函数内部接口)2.4.2录入函数type()函数输入班级,记录班级输入名字,记录名字输入学号,记录学号输入基础课成绩,记录基础课成绩输入专业课成绩,记录专业课成绩输入选修课成绩,记录选修课成绩输入人文类课程成绩,记录人文类课程成绩输入实验性课程成绩,记录实验性课程成绩调用SaveFile()函数,保存学生信息显示学生信息返回显示全班学分信息调用FindClass()函数(班级函数:按班级查找)输入班级查找24.3查询函数Find()函数显示此人学分信息调用StudentNumber()函数(学号函数:按学号查找)输入学号查找Alter()函数2.4.4修改函数输入学号,查找此人信息修改基础课成绩修改专业课成绩修改选修课成绩修改人文类课程成绩修改实验性课程成绩调用SaveFile()函数,保存学生信息显示学生信息返回Delete()函数2.4.5删除函数输入学号,查找此人信息删除此学生信息返回2.5操作流程图开始提示用户选择判断用户的选择修改学分信息输入班级查询学分信息修改基础课学分输入姓名判断用户的选择修改专业课学分输入学号修改选修课学分输入班级查找输入学号查找输入基础课学分修改人文类课程学分输入专业课学分修改实验性课程学分显示查询结果显示查询结果输入选修课学分确定修改输入人文类课程学分输入实验性课程学分Y显示修改后的学分信息确定录入NY显示学分信息结束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 #include #include #define MAXNUM 60struct student char ID10; / 学号 char name50; / 姓名 char class5; / 班级 int score5; / 学分;struct data int count; / 当前学生数组中学生的个数 struct student stuMAXNUM; / 学生数组 dd;/子函数声明void Menu(); /菜单函数void MainMenu(); /返回菜单函数void SaveFile(); /保存数据void Type(); /输入学生信息void Read(); /读取数据void Alter(); /修改数据void Delete(); /删除信息void StudentNumber(); /输入学号查询void FindClass(); /输入班级查询void Ordering(); /排序(总学分)void Stat(); /统计某班学生学分完成情况/ 主函数main() int number; Read(); Menu(); while(1) printf(请输入功能号0-7:,&number); scanf(%d,&number); switch(number) case 0: break; / 退出 case 1: Type(); break; / 输入学生信息 case 2: StudentNumber();break; / 输入学号查询 case 3: FindClass();break; / 输入班级查询 case 4: Alter();break; / 修改学生信息 case 5: Ordering(); break; / 排序(总学分) case 6: Delete();break; / 删除学生信息 case 7: Stat();break; /统计某班学生学分完成情况 default:printf(n输入错误!);break; if(number = 0) break; MainMenu(); void Menu()/*显示主菜单*/ system(cls);/清屏 printf(n); printf(ttn); printf(tt n); printf(tt 学分管理系统 0退出 n); printf(tt n); printf(tt 1 输入学生信息 2 输入学号查询 n); printf(tt n); printf(tt 3 输入班级查询 4 修改学生信息 n); printf(tt n); printf(tt 5 排序(总学分) 6 删除学生信息 n); printf(tt n); printf(tt 7统计某班学生学分完成情况 n); printf(tt n); printf(ttnn);void MainMenu() / 等待用户按回车后回到主菜单 char c1,c2; printf(nn按回车键返回主菜单.); scanf(%c%c,&c1,&c2); /第一个字符吸收上次的确认回车键 Menu();void SaveFile()/ 将数据从结构体数组保存到文件中 FILE *fp;/文件指针 int i,k; k = dd.count; fp = fopen(file.txt,w);/文件存储位置:当前文件夹 fwrite(&k,sizeof(int),1,fp); for(i = 0;i 50) dd.stuk.score0=50; else dd.stuk.score0=a; printf(n请输入专业课学分(0-50) : );scanf(%d,&a); if(a 50) dd.stuk.score1=50; else dd.stuk.score1=a; printf(n请输入选修课学分(0-24) : );scanf(%d,&a); if(a 24) dd.stuk.score2=24; else dd.stuk.score2=a; printf(n请输入人文类课程学分学分(0-8) : );scanf(%d,&a); if(a 8) dd.stuk.score3=8; else dd.stuk.score3=a; printf(n请输入实验性课程学分(0-20) : );scanf(%d,&a); if(a 20) dd.stuk.score4=20; else dd.stuk.score4=a; dd.count+; SaveFile(); printf(n录入信息成功!具体信息如下:); printf(nn班级t姓名t 学号t 基础课 专业课 选修课 人文类课程 实验性课程); printf(n-n); printf(%st%st%s%5dt%5dt%5dt%7dt%11dn,dd.stuk.class,,dd.stuk.ID,dd.stuk.score0,dd.stuk.score1,dd.stuk.score2,dd.stuk.score3,dd.stuk.score4);void Read() /将数据从文件读到结构体数组中 FILE *fp; int i,k; struct student st; 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(struct student),1,fp); strcpy(dd.stui.ID,st.ID); strcpy(,); strcpy(dd.stui.class,st.class); dd.stui.score4=st.score4; dd.stui.score3=st.score3; dd.stui.score2=st.score2; dd.stui.score1=st.score1; dd.stui.score0=st.score0; fclose(fp);void StudentNumber()/ 输入学号查询 int i,k; char ID10; printf(n请输入您要查询学生的学号:); scanf(%s,ID); k = -1;/运用顺序查找 for(i = 0;i dd.count;i+) if(strcmp(dd.stui.ID,ID) = 0) if(k = -1) printf(nn班级t姓名t 学号t 基础课 专业课 选修课 人文类课程 实验性课程); printf(n-n); k = i; printf(%st%st%s%5dt%5dt%5dt%7dt%11dn,dd.stui.class,,dd.stui.ID,dd.stui.score0,dd.stui.score1,dd.stui.score2,dd.stui.score3,dd.stui.score4); if(k = -1) printf(nn对不起,没有找到该学号%s学生!,ID); void FindClass() /输入班级查询 int i,k; char class10; printf(n请输入您要查询的班级:); scanf(%s,class); k = -1; for(i = 0;i dd.count;i+) if(strcmp(dd.stui.class,class) = 0) if(k = -1) printf(nn班级t姓名t 学号t 基础课 专业课 选修课 人文类课程 实验性课程); printf(n-n); k = i; printf(%st%st%s%5dt%5dt%5dt%7dt%11dn,dd.stui.class,,dd.stui.ID,dd.stui.score0,dd.stui.score1,dd.stui.score2,dd.stui.score3,dd.stui.score4); if(k = -1) printf(nn没有找到%s班!,class); void Alter() /修改学生信息 struct student st; int i,k,a,b; char ID10; printf(n请输入您要修改的学生的学号:); scanf(%s,ID); k = -1; for(i = 0;i 50)dd.stuk.score0=50; else dd.stuk.score0=a; printf(n请输入专业课学分(0-50) : );scanf(%d,&a); if(a 50)dd.stuk.score1=50; else dd.stuk.score1=a; printf(n请输入选修课学分(0-24) : );scanf(%d,&a); if(a 24)dd.stuk.score2=24; else dd.stuk.score2=a; printf(n请输入人文课程学分(0-8) : );scanf(%d,&a); if(a 8) dd.stuk.score3=8; else dd.stuk.score3=a; printf(n请输入实验性课程学分(0-20) : );scanf(%d,&a); if(a 20)dd.stuk.score4=20; else dd.stuk.score4=a; printf(nn修改此学生信息成功!修改后具体信息如下:,ID); printf(nn班级t姓名t 学号t 基础课 专业课 选修课 人文类课程 实验性课程); printf(n-n); printf(%st%st%s%5dt%5dt%5dt%7dt%11dn,dd.stuk.class,,dd.stuk.ID,dd.stuk.score0,dd.stuk.score1,dd.stuk.score2,dd.stuk.score3,dd.stuk.score4); SaveFile();void Delete() /删除学生信息 int i,k,j; char ID10; printf(n请输入您要删除的学生学号:); scanf(%s,ID); k = -1; for(i = 0;i dd.count;i+) if(strcmp(dd.stui.ID,ID)=0) k = i; break; if(k = -1) printf(nn没有该学号%s学生!,ID); else for(j = k;j 0) for(i = 0;i k;i+) if(dd.stui.score0 dd.stui+1.score0) /根据基础课成绩排序,成绩最高的放在首位,成绩最低的放在末尾 strcpy(temp.ID,dd.stui.ID); strcpy(,);strcpy(temp.class,dd.stui.class); temp.score4 = dd.stui.score4;temp.score3 = dd.stui.score3;temp.score2 = dd.stui.score2;temp.score1 = dd.stui.score1;temp.score0 = dd.stui.score0; strcpy(dd.stui.ID,dd.stui+1.ID); strcpy(,dd.stui+1.name); strcpy(dd.stui.class,dd.stui+1.class); dd.stui.score4 = dd.stui+1.score4;dd.stui.score3 = dd.stui+1.score3;dd.stu

温馨提示

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

评论

0/150

提交评论