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

下载本文档

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

文档简介

1、学分管理程序的设计目录1 .需求分析(本部分是此程序的需求分析,包括以下四个方面) 31.1 总体分析: 31.2 功能需求: 31.2.1 录入某位学生的学分; 31.2.2 给定学号,显示某位学生的学分完成情况; 31.2.3 给定某个班级的班号,显示该班所有学生的学分完成情况; 31.2.4 给定某位学生的学号,修改该学生的学分信息; 31.2.5 按照某类课程的学分高低进行排序; 31.2.6 提供一些统计各类信息的功能。 31.3 具体需求: 31.3.1 总体 41.3.2 录入 41.3.3 查询 41.3.4 修改 51.3.5 删除 51.4 开发运行环境 51.4.1 开发

2、环境 51.4.2 运行环境 52 详细设计 62.1 整体功能架构 62.2 数据结构 62.2.1 全局变量 62.2.2 结构体变量 62.2.3 宏定义 72.3 函数接口 72.3.1 Menu() 函数 72.3.2 MainMnue() 函数 82.3.5 Read()函数92.3.6 Type()函数 92.3.7 FindClass()函数102.3.8 StudentNumber() 函数 112.3.9 Alter() 函数 122.3.10 Delete()函数 132.3.11 Stat() 函数 142.3.12 Ordering() 函数 152.4 函数模块划分

3、 172.4.1 主函数 172.4.2 录入函数 182.4.3 4.3 查询函数 192.4.4 修改函数 192.4.5 删除函数 202.5 操作流程图 213 用户使用手册 223.4 点击进入学分管理系统,显示主菜单,提示用户选择: 223.5 输入学生信息 223.6 输入学号查询 223.7 输入班级查询 223.8 修改学生信息 223.9 排序 233.10 删除学生信息 233.11 统计某班学生学分完成情况 234 源代码 235 心得体会 321. 需求分析(本部分是此程序的需求分析,包括以下四个方面)1.1 总体分析:此系统为学分管理系统,它可以录入、查询、修改以及

4、统计学生所得学分情况。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.1 修改按学号修改:输入学号' '确定修改/取消(返回)

5、返回 、J1.3.2 删除输入学号查询1删除'1.4 开发运行环境1.4.1 开发环境基于windows系统的开发工具 Code:Blocks中C语言开发环境。1.4.2 运行环境硬件平台:内存:128MBz上硬盘空间:100MBz上软件平台:操作系统:Window系统服务器相同软件平台,硬件平台相同或更高端皆可2详细设计2.1 整体功能架构录入子系统查询子系统修改子系统2.2 数据结构2.2.1 全局变量char ID10; /学号char name50; 姓名char class5; /班级int score5; /学分2.2.2 结构体变量struct studentchar I

6、D10; /学号char name50; /姓名char class5; /班级int score5; /学分;struct dataint 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说明值无无详细说明使用注意事项无程序运行时显示菜单,供用户选择。可被 MainMnu

7、e()、Stat()函数调用2.3.2 MainMnue()函数函数名MainMnue文件名无功能概要返回菜单记述形式voi d MainMnue()参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明提不用户按卜Enter键,返回注菜单。2,3.4 SaveFile()函数函数名SaveFile文件名file.txt功能概要保存学生的学号信息记述形式void SaveFile ()参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明用以保存学生的信息,可以被 Type()、Alter() 、Delete() 、Ordering。函数调用使用注意事项

8、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文件名无功

9、能概要根据学生的班级信息进行查找,显示此班所有信息。记述形式Void Find()参数类型变量名I/O说明void无无无返回值类型Void说明值无无详细说明根据学生的学号信息,查找学生的学分信息。2.3.8 StudentNumber()函数2.3.9 Alter()函数函数名Alter文件名无功能概要修改学生的信息记述形式void alter()参数类型变量名I/O说明void无无无返回值类型Void说明值无无详细说明修改学生学分信息的总函数。2.3.10 Delete()函数函数名Delete文件名无功能概要删除学生的信息记述形式void Delete()参数类型变量名I/O说明void无

10、无无返回值类型void说明值无无详细说明根据学号查找学生的信息,并且删除。2.3.11 Stat()函数 C:LI s ers'j uni ongD-es ktnpiC 语言作业Em:si mz>j u nma in.exe六7?六我无 心会公共六 会力心 六会会大学分管理系统血】退出L3£输入学生信息 输入班纸查询 (总学分)LG1输入学号查询修改学生信息删除学生信息门统计某班学生学分W成情况0-71:7FRLLh 7FT7F 而2.3.12 Ordering。函数函数名Ordering文件名无功能概要根据学生的基础课成绩进行排序。记述形式void Ordering(

11、)参数类型变量名I/O说明void无无无返回值类型void说明值无无详细说明根据基础课成绩排序,成绩最高的放在首位,成绩最低的放在末尾排序前L L i.e - s|u nlorfcgL>ts k.to fACSSr-fTilJtXiiTTiai a ojUniTiamri11输入学生信息LJ1输入班拔杳询5 1排序总学分)输入学号查询111修改学生信息t6J删除学生信月众e4充计某班学生学分铸成情况公会总会出占白会虫心心依心总心心 白 人出祗请输入如要虐询的珊级"芹而人力能年0一丁】专业课 设修课 人宜非课程 实验性课科44W0MI01111 2 * ZUJ.UT 工艺W按叵4

12、憾说叵工菜单一.排序中L:UsefejunlorgDesktopCl®言作业.rrm)c aojunmwm.exe山会食表笈去抬代表人学分管理系统IM 1退出"J输入翱信息rai输入班级查询121输入学号查询UJ修改学生俏息rsi排序(息学分)Ir删除学生信息打统计某班学生学分完族情况点六点六六ilnHf 去请输入功能弓3f 5眸成珈回车键:应回主菜单.一排序后C:UerEjunlongDeskt£3p匚倡言 三止rnwjci工司unmair.e«e学分管理系统。丁退出11输入学生信息12】输入学号直角输入班级直向Ml修改学生信息rsi排序(总学分)3删

13、除学生信息I?统计某班学生学分完成情况自会士谢俞久功能号通,心 请输入您要查询的班级:学号 基叱课专业课选修课人文类裸程实睑性课程11111111535024B20111111024?舒2462011111101454524E202 1 口王口王七 二六二户一一户安回车键返回三英里.2.4函数模块划分2.4.1 主函数Delete()函数 (删除函数:删除信 息,为函数内部接口)2.4.2录入函数type()函数1输入班级,记录班级输入名字,、记录名子广输入学号,记录学号f输入基础课成绩,记录基础课成绩输入专业课成绩,记录专业课成绩1Fh输入选修课成绩,记录选修课成绩/1Ffk._输入人文类课

14、程成绩,记录人文类课程成绩1Z1Ff 输入实验性课程成绩,记录实验性课程成绩调用SaveFile()函数,保存学生信息显示学生信息显不全班 学分信息显示此人 学分信息2.4.4修改函数2.4.5删除函数2.5操作流程图3 用户使用手册3.1 点击进入学分管理系统,显示主菜单,提示用户选择:1输入学生信息2输入学号查询3输入班级查询4修改学生信息5 排序(总学分) 6 删除学生信息7 统计某班学生学分完成情况3.2 输入学生信息输入班级输入姓名输入学号输入基础课成绩输入专业课成绩输入选修课成绩输入人文类课程成绩输入实验性课程成绩显示信息返回3.3 输入学号查询输入学号查找信息显示信息返回3.4

15、输入班级查询输入班级查找信息显示信息返回3.5 修改学生信息输入学号重新输入基础课成绩重新输入专业课成绩重新输入选修课成绩重新输入人文类课程成绩重新输入实验性课程成绩显示信息返回3.6 排序显示排序成功返回3.7 删除学生信息输入学号删除信息返回3.8 统计某班学生学分完成情况显示某班学分完成情况4 源代码#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAXNUM 60struct studentchar ID10; /学号char name50; /姓名char class5

16、; /班级int score5; /学分;struct dataint 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

17、();/排序(总学分)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

18、; /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("tt printf

19、("tt printf("tt printf("tt printf("tt printf("tt printf("tt printf("tt printf("tt printf("tt printf("tt printf("tt1357学分管理系统0退出输入学生信息2输入学号查询输入班级查询4修改学生信息排序(总学分) 6 删除学生信息统计某班学生学分完成情况printf("tt n"); n"); n"); n"); n")

20、; n"); n"); n"); n"); n"); n"); n");nn"); void MainMenu() /等待用户按回车后回到主菜单char c1,c2;printf("nn 按回车键返回主菜单.");scanf("%c%c",&c1,&c2); / 第一个字符吸收上次的确认回车键Menu(); void SaveFile()/ 将数据从结构体数组保存到文件中FILE *fp;/ 文件指针int i,k;k = dd.count;fp = fope

21、n("file.txt","w");/文件存储位置:当前文件夹fwrite(&k,sizeof(int),1,fp);for(i = 0;i < k;i+)fwrite(&dd.stui,sizeof(struct student),1,fp);fclose(fp); void Type() / 输入学生信息struct student st;int a,b,k,i;char IDMAXNUM;printf("n 请输入学生信息 :n");printf("n 班级 : ");scanf(&qu

22、ot;%s",st.class);printf("n姓名: ");scanf("%s",);printf("n学号: ");scanf("%s",st.ID);k = dd.count;strcpy(dd.stuk.ID,st.ID);strcpy(,);strcpy(dd.stuk.class,st.class);printf("n 请输入基础课学分if(a > 50) dd.stuk.score0=50;else dd.stuk.sc

23、ore0=a;printf("n 请输入专业课学分if(a > 50) dd.stuk.score1=50;else dd.stuk.score1=a;printf("n 请输入选修课学分if(a > 24) dd.stuk.score2=24;else dd.stuk.score2=a;printf("n请输入人文类课程学分学分(0-50):");scanf("%d",&a);(0-50):");scanf("%d",&a);(0-24):");scanf(&quo

24、t;%d",&a);(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 录入信息成功 ! 具体信息如下:")

25、;printf("nn 班级 t 姓名 t 学号 t 基础课 专业课 选修课 人文类课程 实验性课程");printf("nn");printf("%st%st%s%5dt%5dt%5dt%7dt%11dn",dd.stuk.class,dd.stu ,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;struc

26、t 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 st

27、udent),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 请输入您要

28、查询学生的学号:");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("nn");k = i;printf("%st%st%s%5dt%5dt%5dt%7dt%11dn",dd.stui.class,,dd.stui.ID

29、,dd.stui.score0,dd.stui.score1,dd.stui.score2,dd.stui.score3,dd.stui.score4);if(k = -1)printf("nn 对不起,没有找到该学号$学生!”,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) =

30、 0)if(k = -1)printf("nn 班级 t 姓名 t 学号 t 基础课 专业课 选修课 人文类 课程 实验性课程");printf("nn");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班

31、匚class);void Alter() / 修改学生信息struct student st;int i,k,a,b;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对不起,没有找到该学号$学生!”,ID);else printf("n 请输入基础课学分(0-50): ");sc

32、anf("%d",&a);if(a > 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;

33、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 修改此学生信息成功 ! 修改后具体

34、信息如下: ",ID);printf("nn 班级 t 姓名 t 学号 t 基础课 专业课 选修课 人文类课程 实验性课程");printf("nn");printf("%st%st%s%5dt%5dt%5dt%7dt%11dn",dd.stuk.class,dd.stu ,dd.stuk.ID,dd.stuk.score0,dd.stuk.score1,dd.stuk.score2,dd.stuk.score3,dd.stuk.score4);SaveFile();void Delete() / 删除学生信息i

35、nt 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);elsefor(j = k;j < dd.count - 1;j+)dd.stuj=dd.stuj+1;SaveFile();printf("nn删除学号s学生信息成功!",

36、ID);dd.count-;void Ordering() / 排序(总学分)int i,k;struct student temp;k = dd.count-1;while(k > 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.stu

37、i.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.

温馨提示

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

评论

0/150

提交评论