高级语言课程设计教务管理程序.doc

上传人:文库蛋蛋多 文档编号:2386178 上传时间:2023-02-17 格式:DOC 页数:80 大小:560KB
返回 下载 相关 举报
高级语言课程设计教务管理程序.doc_第1页
第1页 / 共80页
高级语言课程设计教务管理程序.doc_第2页
第2页 / 共80页
高级语言课程设计教务管理程序.doc_第3页
第3页 / 共80页
高级语言课程设计教务管理程序.doc_第4页
第4页 / 共80页
高级语言课程设计教务管理程序.doc_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《高级语言课程设计教务管理程序.doc》由会员分享,可在线阅读,更多相关《高级语言课程设计教务管理程序.doc(80页珍藏版)》请在三一办公上搜索。

1、高级语言课程设计课程设计 教务管理程序题 目: 班 级: 学生学号: 学生姓名: 指导老师: 提交时间:华南农业大学 信息(软件)学院教务信息管理系统课程设计报告1 系统分析1.1 问题描述1.1.1 教务管理系统作为一个管理软件,应充分联系实际考虑它的实用性,同时还要考虑它应用的范围,解决问题的功能。它是一款管理软件,主要的功能是实现管理员对全校教务的管理(包括学生的基本信息管理和学生的成绩管理),还有实现学生对教务信息的查询功能。1.2 系统功能分析1.2.1 设计一个教务信息管理系统,该程序具有以下功能:1.2.2 (1)录入如下信息:学生基本信息:如学号、姓名、性别、年龄电、宿舍号码、

2、话号码等。 课程基本信息:课程编号、课程名称、考试成绩、平时成绩、综合成绩、学分、重修否等。如果重修,需要考虑重修学期、重修成绩,并且要考虑多次重修的情况。1.2.3 (2)录入选课信息1.2.4 (3)录入学生成绩1.2.5 (3)按班统计学生选课情况及考试成绩。1.2.6 (4)按课程统计学生名单及考试成绩。1.2.7 (5)统计并输出每个同学已修学分及不及三格课程。1.3 开发平台及工具介绍1.3.1 硬件环境1.3.1.1.1.1 处 理 器:Intel Pentium 166或更高1.3.1.1.1.2 内 存:32MB以上1.3.1.1.1.3 硬盘空间:2G以上1.3.1.1.1

3、.4 显 卡:SVGA显示适配器1.3.2 软件环境1.3.2.1.1.1 操作系统:Windows98/Me/2000/XP/win72 系统设计2.1 系统总体结构设计教务管理系统是一个简易的管理系统,它需要实现管理员对全校教务的管理和不同学生对教务的查询,所以需要设置不同的账户给不同的身份,解决这一问题可以设计结构体对不同身份的账户信息进行保存,用户需要用各自的密码才能登陆。同时结构体里面保存了不用用户(学生)的基本信息和成绩信息,通过从文件里读取相应的结构体,可以对它进行信息的查询,修改,替换,删除和保存。不同的学校有不同的学院和专业,所以需要对不同的学院和专业进行编码,然后用结构体进

4、行保存,在学生信息录入时可以录入编码,通过不同的编号来标记学生的学院和专业,这样方便了管理员的操作,同时也提高了操作的效率。实现的方法是管理员先对学院和专业进行编码然后保存在文件的结构体里,编写一函数,输入编号就返回该编号对应的学院和专业。对于班级的选课管理,由于同一班的学生选课是相同的,所以可以用一个结构体来保存一个班的选课信息,这样子就大大方便了选课信息的管理。2.2 系统各个功能模块详细设计2.2.1 系统的模块结构图教务信息管理系统身份选择身份验证管理员界面学生账户界面学生信息管理统计管理编排学院和专业图1 系统模块功能图2.3 模块设计(1) 身份选择模块设计 该模块为系统用户提供功

5、能选择界面,管理员或学生登录系统后都会看到对应自己权限的功能选择界面,在界面中的系统提示符处输入自己的功能选项即可跳转到相应的功能执行函数。功能选择模块功能图如下所示。管理员界面身份选择学生界面(2) 身份验证模块 身份验证模块的作用是为了保障系统的安全性和系统使用人员角色的区分。该模块需要从输入设备获取用户输入的用户名和密码,判断是否为合法身份,其次要判断用户权限,从而决定其能使用的系统功能,其模块功能图如图3所示身份验证获取用户账号和密码验证账号和密码判断用户权限调用不用权限函数界面(3) 管理员模块该模为管理员提供学校教务管理的功能,在该模块,管理员可以根据界面提供不同的功能进行基本的操

6、作,在界面中的系统提示符处输入自己的功能选项即可跳转到相应的功能执行函数。功能选择模块功能图如下所示。修改身份 学生管理统计管理管理员课程管理修改密码编排管理(4) 学生账户界面模块 该模为学生账户提供学校教务信息查看的功能,在该模块,学生可以根据界面提供不同的功能进行基本的操作,在界面中的系统提示符处输入自己的功能选项即可跳转到相应的功能执行函数。功能选择模块功能图如下所示。修改身份选课信息学生界面考试成绩修改密码返回上层(5) 学生信息管理模块 该模块主要实现管理员对学生信息的管理,包括学生信息查询,学生身份修改,学生成绩修改,学生信息录入,学生信息删除。其功能如图:学生信息管理学生信息查

7、询学生身份修改学生成绩修改学生信息录入学生信息删除(6) 统计管理模块该模块主要实现管理员对学生成绩的统计与管理,包括按班统计学生选课情况及考试成绩,按课程统计学生名单及考试成绩, 统计并输出每个同学已修学分及不及格课程。其功能如图:统计管理统计学生选课情况及考试成绩学生名单及考试成绩每个同学已修学分及不及格课程(7) 编排管理模块 该模块主要实现对学校不同学院,专业和课程的编码,这样就可以更方便地进行管理和运用。编排管理编排学院编排专业编排课程2.4 系统流程描述系统的主体处理流程如图开始身份选择身份验证学生用户界面管理员界面修改身份退出返回上层编排管理修改密码课程管理统计管理学生管理退出返

8、回上层修改身份选课信息考试成绩修改密码结束程序2.5 界面设计2.5.1 开始界面设计开始界面是告诉用户系统的名称,界面上有当前的日期和时间,以简洁为主,整个系统的颜色为淡蓝背景与淡黄字体,给用户清爽的感觉。2.5.2 身份选择界面设计 身份选择界面为用户不同的身份而设计,根据不同的身份只需要输入12,则可以选择不同的身份登陆,同时,为了系统的安全,和管理的特权,系统要求在选择身份后还要输入密码,输入的提示很明确,画面很简洁,操作很简单,这是该系统设计的理念。2.5.3 管理员界面设计管理员的界面,功能强大,只需要输入对应的编号就可以实现对应的功能,这是主要的界面,该系统的大部分功能都是通过该

9、界面操作的。2.5.4 管理员修改身份界面管理员界面功能之一,该界面先是对自己当前身份的查看,如果有错误的地方,可以进行修改,如果没有,则可以返回上一界面。该界面的功能是实现管理员对自己身份的管理。2.5.5 管理员-学生管理界面这是管理员界面中的第2个功能进入后的界面,通过该界面,可以对全校的学生进行信息的管理,是该系统中管理员的主要功能实现的界面。2.5.6 管理员-学生信息查询界面该界面是管理员对学生信息查询的界面,通过该界面,管理员可以清楚地了解到学生的信息,包括基本信息和课程信息。该界面对学生的信息进行了合理的划分,使人一眼就能获取到学生的信息,既简洁又实用。2.5.7 学生账户界面

10、该界面是学生账户登陆后看到的界面,该界面详细地介绍了学生可以对该系统进行的操作。2.5.8 学生选课信息界面 该界面是学生对自己选课信息的查询,通过该界面,学生可以很清楚地了解到自己已选的课程,和每一个课程修完后可以获得的学分,同时也显示了已经修了的学分。2.5.9 学生考试成绩查询该界面是学生对自己考试成绩的查询界面,该界面显示了该学生的学校,学院和专业,还有考试的科目和每一科的考试成绩,平时成绩,综合成绩,同时根据每一科的综合成绩是否低于60分,系统会自动输出该学生重修的科目。2.5.10 课程管理界面 该界面是管理员对课程的管理,能过该界面可以对全校的课程进行编排,查看。2.5.11 学

11、院和专业编码管理界面该界面是管理员对课程的管理,能过该界面可以对全校的课程进行编排,查看。2.5.12 学院和专业编码查看界面该界面显示了管理员已经编排的不同学院和专业的情况,以学院为单位,每一个学院下面是该学院的专业,方便管理员查询和管理。2.5.132.6 结构设计2.6.1 定义常量 #define LEN sizeof(struct people) /#define SCH sizeof(struct school)#define CLA sizeof(struct classes)2.6.2 系统用户数据结构Struct people /学生的结构体 char st_num20; /

12、学号char name20; /姓名char sex20; /性别int age; /年龄char dor_num20; /宿舍号码char ph_num20; /电话号码int sub_20;int kao20; /考试科目double sub120; /各科考试成绩double sub220; /各科平时成绩double sub320; /各科综合成绩char code20; /用户密码int sc_ta50; /个人课表int sc_ro50; /课室char _sc20; /就读学校int _sub1; /学院,int _sub2; /专业int _cla; /班级int _ji; /

13、级数float xuefen; /已修学分struct people *next;2.6.3 系统学院和专业管理数据结构struct school /编码学院和专业 int one; / 学院编号char two20; /学院名称int three20; /专业编号char four20100;/专业名称struct school *next;2.6.4 课程数据结构struct classes /课程结构体 int one; /编号char ch50; /课程名称double sum;/该科目学分;2.6.5 班级管理数据结构struct ban /班级int one;/学院int two;

14、/专业int three;/;班级 int four30;/课表double five30;/各科平均分struct ban *next;3 系统实现3.1 身份的选择模块3.1.1 流程图1获得身份2获得密码3.身份和密码验证2获得学号和密码管理员学生输入错误重新输入3.1.2实现该功能的代码:void getcode() /获得身份和密码 char ch1100;int i,flag=0,num=0;ma_st=0;while(1) /进入“管理员”i=0;while(ch1i=getch()!=r) putchar(ch1i);i+;if(i1) ch10=9;if(ch10=1) fl

15、ag=0;/printf(1);printf(.管理员您好!nt请您输入您的密码,按回车结束:);while(1) i=0;while(codei=getch()!=r&i=16)system(cls);iden();printf(1.管理员您好!n);printf(t对不起,您输入的密码有误,请重新输入:n);else if(check(1,0,code)=1)flag=1;ma_st=1;break;elsesystem(cls);iden();printf(1.管理员您好!n);printf(t对不起,您输入的密码有误,请重新输入:);else if(ch10=2) /进入“学生”fla

16、g=0;printf(nnt请您输入你的学号,按回车结束:);while(1)i=0;while(namei=getchar()!=n) i+;namei=0;if(i=13)system(cls);iden();printf(2nn);printf(t对不起,您输入的学号有误,学号为12位的正数,请重新输入:);else break;printf(t请输入您的密码,按回车结束:);while(1)i=0;while(codei=getch()!=r) printf(*);i+; codei=0;if(i=16)system(cls);iden();printf(2nnt请您输入你的学号,按回

17、车结束:n%sn,name);else if(check(2,name,code)=2)flag=1;ma_st=2;break;else system(cls);iden();printf(2nnt请您输入你的学号,按回车结束:%sn,name);printf(t对不起,您输入的密码有误,请重新输入:);else /重新选择身份system(cls);iden();printf(nt对不起,您的输入有误,输入应为12的数字,请重新选择您的身份:);if(flag=1) break; /若身份和密码都已验证,退出循环,进入下一个函数 3.1.3 身份和密码的验证模块 获得的身份和密码验证身份和

18、密码返回0,提示密码错误返回2,进入学生账户界面返回1,进入管理员界面实现该模块功能的代码:int check(int n,char num,char _code) /密码的验证 FILE *fp;int i=0;struct people s;if(fp=fopen(D:filea.txt,r)=NULL) exit(0);if(n=1)fread(&s,LEN,1,fp);if(strcmp(_code,s.code)=0) i=1;else i=0;fclose(fp);else if(n=2)while(fread(&s,LEN,1,fp)!=0)if(strcmp(num,s.st_

19、num )=0) break;if(strcmp(_code,s.code)=0) i=2;else i=0;fclose(fp);return(i); /若返回1则是管理员,2则是学生 4 系统测试4.1 身份的选择测试4.1.14.1.2 输入测试数据:1,2,3,10和字符a ,b ,回车键,删除键, 预期结果:当输入1 时进入管理员界面,当输入2 时进入学生账户界面,当输入为其它时,打印提示“输入错误,请重新输入” 测试结果:和分析结果一致。4.2 身份和密码的验证测试4.2.1 输入测试数据:当选择为管理员时,输入默认密码123,和其它随意字符;当为学生账户时,输入已经保存的学号20

20、11和默认密码,以及其它输入。预期结果:当学号和密码都是文件中保存的一致时,进入正确界面,否则提示“输入错误”测试结果:和分析结果一致。4.3 管理员模块的测试4.3.1输入的测试数据:分别输入09的数字,和各种字符。预期结果:当输入正确的数字时,进入对应的界面。测试结果:和分析结果一致。4.4 学生界面模块测试4.4.1 输入的测试数据:分别输入09的数字,和各种字符。预期结果:当输入正确的数字时,进入对应的界面。测试结果:和分析结果一致。 4.5 学生信息管理模块4.5.1 输入的测试数据:分别输入09的数字,和各种字符。预期结果:当输入正确的数字时,进入对应的界面。测试结果:和分析结果一

21、致4.5.2 。5 系统运行界面5.1 进入系统界面5.2 身份选择界面5.3 进入管理员界面5.4 进入学生账户界面5.5 进入学生管理界面5.6 进入统计管理界面5.7 进入编排管理界面5.8 进入学院和专业编码查看界面5.9 进入学生信息查询界面5.10 进入学生选课信息查询界面5.11 退出系统提示界面6 总结 本课程设计进行了教务信息管理系统的分析、设计、实现。主要实现了管理员对学生信息的录入,保存,分析,管理与学生对自己教务信息进行查看的过程。在设计过程中,我们根据实际情况进行了详尽的系统需求分析,并给出了系统需求分析的典型分析步骤。在系统设计部分,介绍了系统开发和设计的总体思想。

22、系统开发与设计的总体思想是系统开发的主线。在总体设计部分还给出了系统模块结构图,并对各个模块的设计过程进行了阐述。根据软件工程的基本流程,还对系统的流程进行了描述,并进行数据结构设计。整个系统设计部分为系统的实现构建了骨架,并在详细设计中由各个功能模块实现各个细节部分。在对本系统的实现过程中,将各个主要功能分别由不同的C语言源程序来实现,从而完成了在开发时对系统功能模块的划分。在对不同账户的管理方面,大都用到了结构体进行管理,使得程序更加结构化。在对数据的保存和读取时用到了文件的读取和保存,使得我对文件的运用更加的娴熟。本系统虽然对教务信息管理系统的基本功能进行了实现,但也有需要完善的地方。例

23、如,学生的功能比较少,大部分的功能都是管理员实现的,对此,可以增加学生账户的功能。同时,学生和管理员之间没有有机的联系,该系统还缺少学生与管理员之间的信息反馈,可以设置学习对管理员的反馈功能和管理员对学生的提醒功能。另外,本系统是单机版的投票系统,还可以考虑将其扩展为网络版的投票系统,采用C/S架构来实现多用户端同时进行投票。最后,为了体现系统的友好交互能力,可以实现图形化操作界面。7. 参考文献1.c/c+/c#程序员实用大全 美Kris Jamsa 著2.c程序设计(第四版) 谭浩强 著8. 代码清单#include#include#include#include #define LEN

24、sizeof(struct people)#define SCH sizeof(struct school)#define CLA sizeof(struct classes)int n_n=0,n_n2=0,tc_=0; /为了读取而用的必要的全局变量int ma_st=0;char name20,code20;/-/* 题目5:教务信息管理系统1、题目描述 设计一个教务信息管理系统,该程序具有以下功能: (1)录入如下信息:学生基本信息:如学号、姓名、性别、年龄电、宿舍号码、话号码等。 课程基本信息:课程编号、课程名称、考试成绩、平时成绩、综合成绩、 学分、重修否等。如果重修,需要考虑重修

25、学期、重修成绩,并且要考虑多次重修的情况。 (2)录入选课信息 (3)录入学生成绩 (3)按班统计学生选课情况及考试成绩。 (4)按课程统计学生名单及考试成绩。 (5)统计并输出每个同学已修学分及不及三格课程。2、题目要求 (1)按照分析、设计、编码、调试和测试过程完成应用程序; (2)学习并使用流程图等工具,并在撰写报告中使用; (3)程序的各项功能在程序运行时,以菜单方式选择并执行; (4)要求用户输入数据时,要给出清晰、明确的提示,包括:输入数据的内容、格式及结束方式等 (5)所有的信息存储在文件中,并实现文件读写操作。 (6)程序中用链表存放学生信息并实现增删减功能。3、提示 (1)学

26、生基本信息可以设计一个结构体类型 (2)自己构思并增加的除规定功能之外的新功能,酌情加分。*/-int check(int n,char num,char _code);struct people *read_(); /从文件里读出结构体void ban_p(); /将班级课表写入每个学生void xiazai(); int ma_ten(); /退出void last(); /结语 /-void student_meu(); /学生界面void st_one(char name); /学生修改信息void st_one_one(char name); /void st_two(char na

27、me); /选课信息void st_two_three(); /学生信息录入void st_three(char name); /考试成绩、重修void st_four(char name); /修改密码/-void manage_meu(); /管理员界面.void ma_one(); /管理员身份.void ma_one_one(); /修改身份.void ma_change(struct people *p0); /修改文件,存入一个单位.void ma_two(); /学院专业编码.void ma_two_one(); /编排学院和专业.void ma_two_two(); /查看学院

28、和专业.void ma_three(); /课程编码.void ma_three_one(); /增加课程编排void ma_three_two(); /查看课程void ma_three_three(); /重新编排课程void ma_four(); /选课信息.void ma_five(); /学生信息管理.void ma_five_one(); /学生信息查询.void ma_five_two(); /学生身份修改.void ma_five_four(); /学生成绩修改。void ma_five_three(); /学生信息录入.void ma_five_five(); /学生信息删除

29、void ma_six(); /统计管理void ma_six_one(); /按班统计学生选课情况,考试成绩.void ma_six_two(); /按课程统计学生名单及考试成绩.void ma_six_three(); /统计并输出每个同学已修学分及不及三格课程).void ma_six_four(); /录入班级选课. /-struct ban /班级int one;/学院int two;/专业int three;/;班级 int four30;/课表double five30;/各科平均分struct ban *next;/-struct classes /课程结构体int one;c

30、har ch50;double sum;/该科目学分;/-struct school /编码学院和专业int one; / 学院编号char two20; /学院名称int three20; /专业编号char four20100;/专业名称struct school *next;/-struct people /学生的结构体char st_num20; /学号char name20; /姓名char sex20; /性别int age; /年龄char dor_num20; /宿舍号码char ph_num20; /电话号码int sub_20;int kao20; /考试科目double

31、sub120; /各科考试成绩double sub220; /各科平时成绩double sub320; /各科综合成绩char code20; /用户密码int sc_ta50; /个人课表int sc_ro50; /课室char _sc20; /就读学校int _sub1; /学院,int _sub2; /专业int _cla; /班级int _ji; /级数float xuefen; /已修学分struct people *next;/-struct classes* re1(int n) /返回课程的结构体FILE *fp;struct classes *p;fp=fopen(D:fil

32、eclasses.txt,r);p=(struct classes*)malloc(CLA);while(fread(p,CLA,1,fp)!=0)if(n=p-one) break;fclose(fp);return (p);/-struct school* re2(int n) /返回学院编号的结构体 FILE *fp;struct school *p;fp=fopen(D:fileschool.txt,r);p=(struct school*)malloc(SCH);while(fread(p,SCH,1,fp)!=0)if(n=p-one) break;fclose(fp);return (p);/-struct ban*read_2() /返回文件里班的结构体FILE *fp;n_n2=0;fp=fopen(D:fileban.txt,r);struct ban *head,*p1,*p2;p1=(struct ban*)malloc(sizeof(struct ban);while(fread(p1,sizeof(struct ban),1,fp)!=0)if(n_n2=0) head=p1;else p2-next=p1; p2=p1; p1=(struct ban*)malloc(sizeof(struct ban);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号