一、要求
教务信息管理系统
1、题目描述
设计一个教务信息管理系统,该程序具有以下功能: (1)录入如下信息:
学生基本信息:如学号、姓名、性别、年龄、宿舍号码、电话号码等。
学生选修课程的基本信息:课程编号、课程名称、考试成绩、平时成绩、综合成绩、学分、重修否等。如果重修,需要考虑重修学期、重修成绩,并且要考虑多次重修的情况。
(2)统计每个学生各门功课的平均成绩,并按平均成绩从高到低的次序排名输出每个学生各
门功课的综合成绩和平均成绩(名次、学号、姓名、平均成绩、各门功课的考试成绩、平时成绩、综合成绩)。
(3)统计并输出各班各门功课的平均成绩和总平均成绩。 (4)统计并输出每个同学已修学分。
(5)列出不及格学生清单(学号、姓名、不及格的课程和成绩)。 (6)教务信息其它方面的统计(自行确定,加分项)。 2、题目要求
(1)按照分析、设计、编码、调试和测试过程完成应用程序; (2)学习并使用流程图等工具,并在撰写论文中使用;
(3)程序的各项功能在程序运行时,以菜单方式选择并执行;
(4)要求用户输入数据时,要给出清晰、明确的提示,包括:输入数据的内容、格式及结束方式等
(5)所有的信息存储在文件中,并实现文件读写操作。 3、提示
(1)学生基本信息可以设计一个结构体类型
(2)多个学生基本信息可以以数组或链表来存储。
二、代码:
//##########################################################################################
//##########################################################################################
#include
#include
#define N 500//定义班级的个数
//##################################结构体的定义############################################
//##########################################################################################
struct again//重修结构体 {
char term[3];//重修学期 float total;//重修成绩 };
struct course//课程结构体 {
char num[10];//课程编号 char name[20];//课程名称 float final;//考试成绩
float performance;//平时成绩 float total;//综合成绩 int credit;//学分
char re[5];//是否重修pass或faile
struct again ag[5];//重修情况zui do wu ci int times;//重修次数 };
struct student//学生结构体 {
int Class;//班级 char num[12];//学号 char name[20];//姓名 char sex[5];//性别 int age;//年龄
char room[20];//宿舍号码 char phone[15];//电话号码 int subject;//输入几门课程
struct course cou[10];//课程及成绩 struct student *next;//下一个学生 };
struct score//课程成绩结构体 {
char name[20];//课程名 float final; //考试成绩
float performance;//平时成绩
float total;//综合成绩 };
struct ave//学生平均成绩结构体 {
int Class;//班级
char number[12];//学号 char name[20];//姓名
float studentave;//平均成绩 int subjects;//几门课程
struct score s[10];//课程及成绩 struct ave *next;//下一个学生 };
//######################################函数声明
#######################################################
//#####################################################################################################
struct student *creat();//构建学生成绩链表
void write(struct student *head);//写入磁盘文件 void read(struct student*head);//从文本输出内容
struct ave *studentave(struct student *head);//构建学生平均成绩链表 void sequence(struct ave *heads);//平均成绩从高到低排序输出
void classave(struct student *head);//输出各班各门功课的平均成绩和总平均成绩
void credit(struct student *head);//输出每个同学已修学分 void failstudent(struct student *head);//列出不及格学生清单 struct student *out();//把文件信息读入电脑但不显示 void conclude(struct student*head);//输出学生总数
struct ave *insert(struct ave *heads,struct ave *charu);//按大小顺序插入(为了排序)
struct ave *sort(struct ave *head);
void writeshan(struct student *head);//写入磁盘文件 struct student*del(struct student*head);//删除信息函数 void shan();//删除所有信息函数
struct student*chuli(struct student*head);//处理多余信息函数 struct student *out2(); void shan2();
void read2(struct student *head );//从文件中输出数据 struct student *out3();
void read3(struct student *head );//从文件中输出数据 void chazhao(struct student*head);//按学号查找学生信息
//#####################################主函数
##########################################################
//#####################################分界线
##########################################################
void main()//主函数 {
int function,con=1; char function1[4];
struct student *head,*head2; struct ave *heads; head=NULL;
while(con==1)//当con等于1时,执行循环体 {
printf(\
========================================================================\\n\ printf(\欢迎进入教务信息管理系统 ==========================\\n\ printf(\
========================================================================\\n\
printf(\输 入 学 生 基 本 信 息 @@@ ==\\n\
//printf(\
= …………………………………………………………………………………………==\\n\
printf(\输 出 全 部 基 本 信 息 @@@ ==\\n\
printf(\
= …………………………………………………………………………………………==\\n\
printf(\输 出 学 生 排 名 信 息 @@@ ==\\n\
//printf(\
= …………………………………………………………………………………………==\\n\
printf(\输 出 各 班 成 绩 信 息 @@@ ==\\n\
printf(\
= …………………………………………………………………………………………==\\n\
printf(\输 出 学 生 总 的 学 分 @@@ ==\\n\
//printf(\
= …………………………………………………………………………………………==\\n\
printf(\列 出 不 及 格 的 学 生 @@@ ==\\n\
//printf(\
= …………………………………………………………………………………………==\\n\
printf(\按 学号 查找 学生 信息 @@@ ==\\n\
printf(\
= …………………………………………………………………………………………==\\n\
printf(\按 条 件 删 学 生 信 息 @@@ ==\\n\
//printf(\
= …………………………………………………………………………………………==\\n\
printf(\删 除 所 有 学 生 信 息 @@@ ==\\n\
printf(\
= …………………………………………………………………………………………==\\n\
printf(\复 制 现 有 学 生 信 息 @@@ ==\\n\
//printf(\
= …………………………………………………………………………………………==\\n\
printf(\输 出 已 复 制 的 信 息 @@@ ==\\n\
printf(\
= …………………………………………………………………………………………==\\n\
printf(\退 出 @@@ ==\\n\
printf(\
========================================================================\\n\/主界面
printf(\请 输 入 数 字 选 择 相 应 的 操 作 ===============\\n\ printf(\
========================================================================\\n\ function1[0]=getchar(); function1[1]=getchar(); function1[2]=getchar(); fflush(stdin);//清除缓存
if(function1[0]>='0'&&function1[0]<='1'&&function1[1]>='0'&&function1[1]<='9'&&function1[2]=='\\n')
function=(function1[0]-48)*10+(function1[1]-48); switch(function) {
case 1:head=creat();write(head);break;//录入信息,写入磁盘文件 case 2:head=out();read(head);break;//输出文本的内容
case 3:head=out();heads=studentave(head);sequence(heads);break;//按平均成绩从高到输出学生成绩
case 4:head=out();classave(head);break;//输出各班各门功课的平均成绩及总平均成绩
case 5:head=out();credit(head);break;//统计并输出每个同学的已修学分 case 6:head=out();failstudent(head);break;//列出不及格学生清单 case 7:head=out(); chazhao(head);break;//输出学生个数 case 8:head=out();head=del(head);break;//删除学生信息