教务信息管理系统源代码2010.05.20
更新时间:2024-05-10 08:09:01 阅读量: 综合文库 文档下载
一、要求
教务信息管理系统
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;//删除学生信息
case 9:shan();break; //删除所有信息 case
10:head=out();head=chuli(head);writeshan(head);head=out();read2(head);break;//复制信息
case 11:head=out2();read2(head);break;//打开复制信息 case 12:exit(0);
defaul: system(\输入错误\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\出错 }
function=0;
printf(\^^^^^^^^^^^^^^\\n\
printf(\此操作已结束,若要继续操作其他功能,请按回车键,回到主菜单***********\\n\是否退出程序
printf(\————————————————————————————————————————\\n\
fflush(stdin);//清除缓存 getchar();
fflush(stdin);//清除缓存
system(\ } }
//#################################### 二
##################################################### //##################################输入信息
###################################################
struct student *creat()//构建学生成绩链表 {
struct student*head=NULL, *stu,*p1;//声明学生结构体指针 int j=0,i=0,con=1,n=0,k; char c[4];
system(\
stu=(struct student*)malloc(sizeof(struct student));//开辟空间 printf(\现在开始输入学生基本信息###########################\\n\\n\开始输入学生信息 while(con==1) {
printf(\真的要输入信息吗?如果不想输入,请输入 0 ,否则输入其它任一数字 \ scanf(\
if(k==0) return(head); system(\
printf(\、请输入你的班级(数字):\
printf(\****************\\n\
printf(\请注意:\\n\\n 第一位代表年级;第二位代表专业 (1、网络工程 2、软件工程 \\n\\n 3、计算机科学与技术 4、地理信息系统 5、教技 6、工业工程 7、信管 \\n\\n 8、测绘 9、软件工程(软件学院));第三位代表班级!\\n\\n\ printf(\如 112表示09网络工程(2)班 \\n\
printf(\************\\n\
scanf(\班级 printf(\
printf(\、请输入你的学号(最多11位符号):\ scanf(\学号 printf(\
printf(\、请输入你的性别, 男 或 女:\ scanf(\性别 printf(\
while((strcmp(\男\女\ {
printf(\输入错误,请重新输入:\ scanf(\性别 printf(\ }
printf(\、请输入你的年龄:\ scanf(\年龄 printf(\
printf(\、请输入你的姓名(最多19位符号):\ scanf(\姓名 printf(\
printf(\、请输入你的宿舍号码(最多19位符号):\ scanf(\宿舍号码 printf(\
printf(\、请输入你的电话号码(最多14位符号):\ scanf(\电话号码 printf(\
printf(\、请输入你所选的课程的门数:\
scanf(\输入学生选修的课程数 printf(\
for(j=0;j
printf(\、输入课程编码(最多10):\ scanf(\课程编号 printf(\
printf(\、输入课程名称(最多20位):\ scanf(\课程名称 printf(\
printf(\、输入学生的考试成绩:\
scanf(\考试成绩 printf(\
printf(\、输入学生的平时成绩:\
scanf(\平时成绩 printf(\
printf(\、输入学生的综合成绩:\ scanf(\总成绩 printf(\
printf(\、输入学生的已修的总学分:\ scanf(\学分 printf(\
if((stu->cou[j].total<60.0)&&(stu->cou[j].total>0)) strcpy(stu->cou[j].re,\
else strcpy(stu->cou[j].re,\是否通过考试 if(strcmp(\ {
printf(\、学生没考过这门课\\n\ printf(\、请输入重修次数:\ scanf(\ printf(\
for(i=0;i
printf(\、输入重修的学期(不超过3个字符,按先后顺序):\ scanf(\重修学期 printf(\
printf(\、输入考试分数:\
scanf(\重修分数 printf(\ } } }
printf(\、如果输入的信息正确,请输入 y ,否则请输入 n :\
printf(\
printf(\ printf(\ scanf(\ printf(\
if(strcmp(c,\ { n++;
if(n==1)
head=stu; else
p1->next=stu; p1=stu;
}//构建学生链
stu=(struct student*)malloc(sizeof(struct student));//开辟空间 printf(\、如果停止输入学生基本信息,请输 0 ;否则请输入 1 :\ printf(\ printf(\ printf(\ printf(\
scanf(\是否结束输入学生信息 printf(\
system(\//ce shi }
p1=NULL; //ceshi stu=NULL;
return(head);//返回头指针 }
//##################################### 三
################################################### //###################################保存信息
#################################################
void write(struct student *head)//写入磁盘文件 {
FILE *fp;
struct student *stu; stu=head;
system(\
fp=fopen(\学生基本信息.txt\打开文本 if(head==NULL); else {
while(stu!=NULL) {
fwrite(stu,sizeof(struct student),1,fp); stu=stu->next;//下一个学生 } }
fclose(fp);//关闭文件 }
//####################################### 四 ################################################ //#################################输出学生基本信息##########################################
void read(struct student *head )//从文件中输出数据 {struct student*stu; int n=0,i,j,k,l,f; system(\stu=head;
if(head==NULL) {
printf(\对不起,还没有学生的信息,请问是否输入新信息,若要请输入‘1’;否则请输入‘0’\\n\\n\ scanf(\ if(k==1) {
head=creat(); write(head); system(\
printf(\信息输入完毕,请问是否马山打开,若是请输入 1 否则输入任一数字\\n\\n\ scanf(\
if(f==1){head=out();read(head);} else {system(\ }
else {system(\}
printf(\以下是所有学生的个人基本信息以及具体选课信息\\n\printf(\**********\while(stu!=NULL) {
if(stu->Class
printf(\---------\\n\
printf(\第%d位学生的信息++++++++++++++++++++++++++++++++++++\\n\
printf(\---------\\n\
printf(\①个人基本信息:\\n\printf(\
printf(\班级:%-5d 学号:%-11s宿舍号码:%-19s性别:%-5s\\n\\n 年龄:%-5d 姓
名:%-11s电话号码:%-19s科
数:%-5d\\n\\n\stu->phone ,stu->subject );
for(j=0,l=1;j
{printf(\----------\\n\
printf(\②选课具体信息:\printf(\第%d科####\\n\printf(\printf(\课程编号:%-19s课程名称:%-19s学
分:%-d\\n\\n\printf(\考试成绩:%-19.1f平时成绩:%-19.1f综
合:%-.1f\\n\\n\printf(\③考试情况(若是fail则需重修):%s\\n\printf(\if(strcmp(\
{printf(\重修次数:%-20d\\n\\n\for(i=0;i
数:%-20.1f\\n\} }
}stu=stu->next; }
printf(\----------\
printf(\共 有 - 位 学 生 的 信 息,已 全 部 输 出\\n\ }
//####################################### 五
######################################################## //####################################统计个人平均###################################################
struct ave *studentave(struct student *head)//构建学生平均成绩链表 {
struct student *p1;
struct ave *s,*heads,*p;
struct ave *pp1; // ceshi
float a=0,sum=0;
int i=0,n=1,l=0,f=0;
int k; //ceshi
system(\ p1=head;
if(head==NULL) {
printf(\对不起,还没有学生的信息,请问是否输入新信息,若要请输入 1 ;否则请输入任一数字 \\n\\n\ scanf(\ if(l==1) {
head=creat();write(head);
printf(\信息输入完毕,请问是否马山统计并输出学生的排名信息,若是请输入 1 否则输入任一数字\\n\\n\ scanf(\
if(f==1){head=out();heads=studentave(head);sequence(heads);} else _exit(0); }
else {system(\ } else {
printf(\==============\\n\ while(p1!=NULL) {
if(p1->Class
s=(struct ave*)malloc(sizeof(struct ave));//开辟空间 sum=0;
for(i=0;i
sum=sum+p1->cou[i].total;//各门课程总成绩相加 s->s[i].final=p1->cou[i].final;
s->s[i].performance=p1->cou[i].performance; s->s[i].total=p1->cou[i].total;
printf(\考试成绩:%-9.1f平时成绩:%-9.1f综合成
绩:%-9.1f\\n\
strcpy(s->s[i].name,p1->cou[i].name);//把课程结构体的考试成绩,平时成绩,总成绩,课程名放到平均分结构体中 }
a=sum/p1->subject;//每个学生的平均分 printf(\平均分:%-9.1f\ s->studentave=a;
s->subjects=p1->subject;
s->Class=p1->Class;
strcpy(s->number,p1->num);
strcpy(s->name,p1->name);//把学生结构体的班级,学号,姓名放到平均分结构体中
if(n==1) heads=s; else p->next=s;
p=s;//构建平均成绩链表 n++; }
p1=p1->next;//下一个学生 }
p->next=NULL; }
return(heads); }
//######################################## 六
########################################################### //####################################按平均分排名次#####################################################
struct ave *sort(struct ave *heads)//排大小顺序函数 {
struct ave *p1,*p2; p1=p2=heads;
if(heads->next==NULL) return(heads); p2=p2->next; p1->next=NULL; p1=p2;
while(p2->next!=NULL) {
p2=p2->next; p1->next=NULL;
heads=insert(heads,p1); p1=p2; }
heads=insert(heads,p1); return(heads); }
//########################################### 七
##################################################### //########################################按顺序插入
##################################################
struct ave *insert(struct ave *heads,struct ave *charu)//按大小顺序插入(为了排序) {
struct ave *p0,*p1,*p2; int i;//ceshi p1=heads; p0=charu;
if(heads==NULL) {
heads=p0;
p0->next=NULL; } else {
while((p0->studentave
p2=p1;
p1=p1->next; }
if(p0->studentave>=p1->studentave) {
if(heads==p1) heads=p0; else
p2->next=p0; p0->next=p1; } else {
p1->next=p0; p0->next=NULL; } }
return(heads); }
//###################################### 八
############################################################# //################################输出大小顺序的信息#####################################################
void sequence(struct ave *heads)//平均成绩从高到低排序输出 {
struct ave *s,*p1; int i=0,n=1,k=0; s=heads;
system(\ if(heads==NULL) {
printf(\没有平均成绩信息\\n\ return; } else
{heads=sort(heads); system(\ p1=heads; while(p1!=NULL)
{ if(n<=9)
printf(\第0%d名:\\n\输出名次 else
printf(\第%d名:\\n\ printf(\
printf(\班级:%-10d学号:%-16s姓名:%-16s平均成绩:%-7.1f科
目:%-4d\\n\
printf(\----------\\n\
for(i=0;i
printf(\课名:%-10s考试:%-15.1f 平时:%-15.1f 综合成
绩:%-9.1f\\n\;
}
printf(\
printf(\**********\\n\
p1=p1->next;//下一个平均成绩 n++; } } }
//######################################### 九
#########################################################
//##################################输出各班各科平均成绩################################################
void classave(struct student *head)//输出各班各门功课的平均成绩和总平均成绩 {
int c[N]={0},i,j;
struct student *s,*p=NULL;
float sum[8]={0},a[8],av=0,b=0; if(head==NULL)
printf(\没有学生信息\\n\\n\\n\\n\\n\\n\ else {
for(i=1;i s=head; while(s!=NULL) { if(s->Class==i)//寻找班级相同的学生 { c[i]++; p=s; for(j=0;j sum[j]=sum[j]+s->cou[j].total;//i班的各门功课总成绩相加 } s=s->next; } if(p!=NULL) { printf(\***************\\n\ printf(\班每科平均成绩与总平均成绩###########################* \ printf(\*************\\n\\n\ printf(\班级 课程名称 平均分\\n\ for(j=0;j a[j]=sum[j]/c[i];//i班各门功课的平均分 sum[j]=0; printf(\ _____________\\n\ if(i<=9) printf(\ else if(i<100) printf(\ else printf(\ av=av+a[j];//i班各门功课的平均分相加 } b=av/p->subject;//i班总平均分 printf(\============\\n\ printf(\该班学生总数为:%-10d班级总分为:%-9.1f总平均成绩是:%-9.1f\\n\ p=NULL; av=0; } } } } //######################################## 十 ######################################################## //##############################统计并输出每位学生的已修学分########################################## void credit(struct student *head)//输出每个同学已修学分 { struct student *p; int credit=0,i; system(\ p=head; if(head==NULL) {printf(\没有学生信息\\n\\n\\n\\n\\n\\n\ else { if(p->Class printf(\________\\n\ printf(\学生已修学分\\n\学生已修学分 printf(\________\\n\ printf(\学号 学生姓名 已修学分\\n\ } else {printf(\还 没 有 学 生 信 息,故 没 有 学 分\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\ return;} while(p!=NULL) { if(p->Class if(strcmp(\ credit=credit+p->cou[i].credit;//及格的课程的学分相加 } printf(\_________\\n\ printf(\%-16s %-20s %d\\n\ credit=0; } p=p->next;//下一个 学生 } printf(\************\\n\ printf(\已 输 出 各 位 学 生 的 总 学 分\\n\ } } //###################################### 十一 ###################################################### //##############################统计并输出不及格学生信息############################################ void failstudent(struct student *head)//列出不及格学生清单 { struct student *stu; int j,n; int k=00;//wei le··· int a=0,b=0,c=0,sum=0;//用来统计不及格学生个数 system(\ stu=head; if(head==NULL){printf(\没有学生信息\\n\\n\\n\\n\\n\\n\没有学生信息 else { if(stu->Class printf(\************\\n\ printf(\以下为不及格的学生信息 *\\n\不及格的学生 printf(\********\\n\ printf(\学号 姓名 课程名称 成绩\\n\ printf(\********\\n\ } else {printf(\还没有学生的信息,所以没有不及格的学生信息!\\n\\n\\n\\n\\n\\n\\n\\n\\n\ while(stu!=NULL) { if(stu->Class for(j=0;(strcmp(\找到第一门不及格的课程或没有不及格的课程 if(j printf(\cou[j].total); printf(\--------\\n\ n=j; if(j for(j=n+1;j if(strcmp(\寻找其他不及格的课程 {b=1;//tong ji yong printf(\j].total); printf(\-------\\n\ } } } } c=(a>b)?a:b;//tong ji yong a=b=0;//tong ji yong sum=c+sum;//tong ji yong stu=stu->next;//下一个学生 } }if(sum==0)printf(\哈哈,放心, 没有不及格的学生\\n\\n\\n\\n\\n\\n\ else printf(\【一共有 [ %d ] 位学生有不及格的科目】\\n\\n\} //##################################### 十二 ######################################################## //################################输出总的学生个数################################################### void conclude(struct student*head)//统计学生个数 { struct student*p1,*p2; int n=0; p2=p1=head; while(p1!=NULL) { p2=p1; p1=p2->next; n++; } n--; printf(\ printf(\ printf(\ printf(\ printf(\ printf(\ printf(\ printf(\ printf(\^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ printf(\到 现 在 为 止 , 有 %d 位 学 生 登 录 注 册\\n\ printf(\^^^^^^^^^^^^^^^^^^^^^^^^^\\n\\n\\n\} //##################################### 十三 ######################################################## //############################从文件中写出但不显示信息############################################### struct student *out() { FILE *fp; struct student *head,*p1,*stu; int n=0,k=0; system(\ p1=head=NULL; if((fp=fopen(\学生基本信息.txt\ return(head); else { while(!feof(fp)) { n++; stu=(struct student*)malloc(sizeof(struct student));//开辟空间 fread(stu,sizeof(struct student),1,fp); if(n==1) head=stu; else p1->next=stu; p1=stu;//构建学生链 } p1->next=NULL; fclose(fp); } return(head); } //########################################### 十四 ##################################################### //#####################################删除学生个人所有信息############################################# struct student*del(struct student*head)//删除信息函数 { struct student*p1,*p2; p1=head; char num[12],b[7]; int n=0; printf(\请输入你要删除的学生的学号:\\n\\n\ scanf(\ system(\ printf(\提醒:信息删除之后无法恢复,是否确定要删除?\\n\\n 若真要删请输入[ delete ],否则输入任一字符!\ scanf(\ fflush(stdin); system(\ if(strcmp(\ { if(head==NULL) { printf(\还 没 有 没 有 学 生 的 信 息\ return(head); } while(strcmp(num,p1->num)!=0&&(p1->next!=NULL)) { p2=p1; p1=p1->next; } if(strcmp(num,p1->num)==0) { if(head==p1) head=p1->next; else p2->next=p1->next; writeshan(head); printf(\学号为[%s]的学生的信息已被删除############################\\n\\n\\n\ printf(\请问是否查看删除后剩余的学生信息,若要请输入 1 ,否则输入任一数字!\ scanf(\ system(\ if(n==1)read3(head); } else { printf(\对 不 起,这 里 没 有 学 号 为[ %s ]的 信 息\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\ } } else printf(\ return(head); } //##################################### 十五 ################################################### //############################保存复制的信息信息########################################## void writeshan(struct student *head)//写入磁盘文件 { FILE *fp; struct student *stu; int n=0; fp=fopen(\学生基本信息.txt\打开文本 stu=head; //system(\//ce shi if(head==NULL) {printf(\文件中还没有学生基本信息\\n\ else { while(stu!=NULL&&stu->Class if(stu->Class fwrite(stu,sizeof(struct student),1,fp); printf(\ ============================================\\n\ printf(\删除后剩余学生的姓名: %-2d、%-12s……\\n\ printf(\…………………………………………………………\\n\ stu=stu->next;//下一个学生 } } printf(\ ============================================\\n\ printf(\提示:若姓名为空号,则是无效的学生信息!\ printf(\============================================\\n\ //printf(\ } fclose(fp);//关闭文件 } //######################################## 十六 ################################################ //#####################################删除所有信息############################################# void shan() { FILE*fp; char ch[5],a[30],b[10]; char c[10]; system(\ printf(\请问是删除原有信息还是已复制的信息?\\n\\n\\n 若是原有信息则请输入[yuan],若是复制信息则输入[fuzhi],否则输入任一字符\ scanf(\ fflush(stdin); system(\ if(strcmp(\ else if(strcmp(\ else return; printf(\年轻人,别冲动,悄悄一按,所有信息将瞬间永远地消失,\\n\\n\\n\\n\\n\\n 若醒悟了,还来得及,记住,不要按【 yes 】,否则全没了哈!\\n\\n\ scanf(\ system(\ if(strcmp(\ { printf(\你还真要全删呀?最好就别那么狠哈,否则,辛辛苦苦的输入就白费了!\\n\\n\ printf(\若 果 你 确 定 真 的 要 全 删,就 输 入 [ wohaizhengyaoshanne ]\\n\\n\ scanf(\ system(\ if(strcmp(\ { printf(\哎呀,那可真没办法了,最后输入[ jiushiyaoshan ]吧\\n\ scanf(\ if(strcmp(b,\ { fp=fopen(\学生基本信息.txt\ printf(\所 有 学 生 信 息 已 成 功 删 除\\n\\n\\n\\n\\n\\n\\n\\n\\n\ fclose(fp); } } } return; } //##################################### 十七 ################################################## //################################复制学生信息函数############################################# struct student*chuli(struct student*head)//处理多余信息函数 { struct student*p1,*p2,*stu,*stu2,*p3; FILE*fp; fp=fopen(\学生基本信息2.txt\删除原有信息 fclose(fp); fp=fopen(\学生基本信息2.txt\int k=0,i,j; int n=0,l; //ce shi p1=head; p2=(struct student*)malloc(sizeof(struct student)); stu2=p3=p2; while(p1!=NULL) { if(p1->Class k++; p2->subject=p1->subject; //printf(\shu:%-10d\\n\ strcpy(p2->num,p1->num); strcpy(p2->name,p1->name); strcpy(p2->phone,p1->phone); p2->Class=p1->Class; strcpy(p2->sex,p1->sex); strcpy(p2->room,p1->room); p2->age=p1->age; for(j=0;j strcpy(p2->cou[j].num,p1->cou[j].num); strcpy(p2->cou[j].name,p1->cou[j].name); p2->cou[j].final=p1->cou[j].final; p2->cou[j].performance=p1->cou[j].performance; p2->cou[j].total=p1->cou[j].total; p2->cou[j].credit=p1->cou[j].credit; strcpy(p2->cou[j].re,p1->cou[j].re); if(strcmp(p1->cou[j].re,\ { for(i=0;i strcpy(p2->cou[j].ag[i].term,p1->cou[j].ag[i].term); p2->cou[j].ag[i].total=p1->cou[j].ag[i].total; } p2->cou[j].times=p1->cou[j].times; } } stu=p2;//ce shi {n++; printf(\---------\\n\ printf(\第%d个学生的信息+++++++++++++++++++++++++++++++++++\\n\ printf(\---------\\n\ printf(\①个人基本信息:\\n\printf(\printf(\班级:%-5d 学号:%-15s宿舍号码:%-11s性别:%-5s\\n 年龄:%-5d 姓名:%-15s电话号码:%-11s科 数:%-5d\\n\\n\stu->phone ,stu->subject ); for(j=0,l=1;j printf(\---------\\n\ printf(\②选课具体信息:\printf(\第%d科####\\n\printf(\ printf(\课程编号:%-20s课程名称:%-20s\\n\printf(\考试成绩:%-20.1f平时成 绩:%-20.1f\\n\printf(\综合成绩:%-20.1f学 分 :%-20d\\n\\n\ printf(\③考试情况(若是fail则需重修):%s\\n\printf(\if(strcmp(\ for(i=0;i 数:%-20.1f\\n\ } }//ce shi if(stu->Class printf(\这是第 [%d] 位学生的全部具体信息,是否要复制,若要请输入 [1] ,否则输入任一数字\ scanf(\ } fwrite(p2,sizeof(struct student),1,fp); p3->next=p2; p3=p2; p2=(struct student*)malloc(sizeof(struct student));//////// } system(\//ce shi p1=p1->next; } fclose(fp); p2=NULL; return(stu2); } //##################################### 十八 ######################################################## //#############################打开处复制的文件信息################################################## struct student *out2() { FILE *fp; struct student *head,*p1,*stu; int n=0,k=0; system(\ p1=head=NULL; if((fp=fopen(\学生基本信息2.txt\ { printf(\没 有 文 件 信 息\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\打开文件 exit(0); } else { while(!feof(fp)) { n++; stu=(struct student*)malloc(sizeof(struct student));//开辟空间 fread(stu,sizeof(struct student),1,fp); if(n==1) head=stu; else p1->next=stu; p1=stu;//构建学生链 } p1=stu=NULL; fclose(fp); } return(head); } //######################################## 十九 ################################################ //###################################删除复制的所有信息######################################### void shan2() { FILE*fp; char ch[11]; system(\ fp=fopen(\学生基本信息2.txt\ printf(\输出值:%d\\n\ printf(\所有复制的的学生信息都已被删除了**************************\\n\\n\\n\\n\\n\\n\\n\\n\\n\ fclose(fp); } //####################################### 二十 ################################################ //###############################输出复制的学生基本信息######################################## void read2(struct student *head )//从文件中输出数据 {struct student*stu; int n=0,i,j,k,l; stu=head; printf(\以下是复制的学生的个人基本信息以及具体选课信息\\n\ printf(\**********\\n\while(stu!=NULL) { if(stu->Class printf(\---------\\n\ printf(\第%d个学生的信息++++++++++++++++++++++++++++++++++++\\n\ printf(\---------\\n\ printf(\①个人基本信息:\\n\printf(\printf(\班级:%-5d 学号:%-15s宿舍号码:%-11s性别:%-5s\\n 年龄:%-5d 姓名:%-15s电话号码:%-11s科 数:%-5d\\n\\n\stu->phone ,stu->subject ); for(j=0,l=1;j {printf(\----------\\n\ printf(\②选课具体信息:\printf(\第%d科####\\n\printf(\ printf(\课程编号:%-20s课程名称:%-20s\\n\printf(\考试成绩:%-20.1f平时成 绩:%-20.1f\\n\printf(\综合成绩:%-20.1f学 分 :%-20d\\n\\n\ printf(\③考试情况(若是fail则需重修):%s\\n\printf(\if(strcmp(\ {printf(\重修次数:%-20d\\n\for(i=0;i 数:%-20.1f\\n\\n\} } }stu=stu->next; } printf(\----------\ printf(\这 是 已 复 制 了 的 [%d] 位 学 生的 信 息\\n\} //##################################### 二十一 ###################################################### //############################从文件中写出但不显示信息############################################### struct student *out3() { FILE *fp; struct student *head,*p1,*stu; int n=0,k=0; system(\ p1=head=NULL; if((fp=fopen(\学生基本信息3.txt\ return(head); else { while(!feof(fp)) { n++; printf(\//ce shi stu=(struct student*)malloc(sizeof(struct student));//开辟空间 fread(stu,sizeof(struct student),1,fp); printf(\//ce shi if(n==1) head=stu; else p1->next=stu; p1=stu;//构建学生链 } p1=stu=NULL; fclose(fp); } return(head); } //####################################### 二十二 ############################################ //#################################输出学生基本信息########################################## void read3(struct student *head )//从文件中输出数据 {struct student*stu; int n=0,i,j,k,l,f; system(\stu=head; if(head==NULL) { printf(\对不起,还没有学生的信息,请问是否输入新信息,若要请输入‘1’;否则请输入‘0’\\n\\n\ scanf(\ if(k==1) { head=creat(); write(head); system(\ printf(\信息输入完毕,请问是否马山打开,若是请输入 1 否则输入任一数字\\n\\n\ scanf(\ if(f==1){head=out();read(head);} else {system(\ } else {system(\} printf(\以下是删除后所剩学生的个人基本信息以及具体选课信息\\n\printf(\**********\while(stu!=NULL) { if(stu->Class printf(\---------\\n\ printf(\第%d位学生的信息++++++++++++++++++++++++++++++++++++\\n\ printf(\---------\\n\ printf(\①个人基本信息:\\n\printf(\printf(\班级:%-5d 学号:%-15s宿舍号码:%-11s性别:%-5s\\n 年龄:%-5d 姓名:%-15s电话号码:%-11s科 数:%-5d\\n\\n\stu->phone ,stu->subject ); for(j=0,l=1;j {printf(\----------\\n\ printf(\②选课具体信息:\printf(\第%d科####\\n\printf(\printf(\课程编号:%-20s课程名称:%-20s\\n\\n\printf(\考试成绩:%-20.1f平时成 绩:%-20.1f\\n\\n\printf(\综合成绩:%-20.1f学 分 :%-20d\\n\\n\ printf(\③考试情况(若是fail则需重修):%s\\n\printf(\if(strcmp(\ {printf(\重修次数:%-20d\\n\\n\for(i=0;i 数:%-20.1f\\n\} } }stu=stu->next; } printf(\----------\ printf(\删 除 信 息 后 还 剩 - 位 学 生 的 信 息\\n\} //################################### 二十三 #################################################### //###############################按学号查找学生信息 ############################################## void chazhao(struct student*head)//按学号查找学生信息 { struct student*stu,*p2; char xuehao[15]; char xiu[15],xiangmu[20],xinxinxi[20];//xiu gai xin xi yong int i=0,j=0,l=0; int kemu;// //char xuan='y';//xiu gai xin xi yong stu=head; printf(\请输入要查找的学生的学号:\\n\\n\ scanf(\ system(\ while(strcmp(stu->num,xuehao)!=0&&stu->next!=NULL) { p2=stu; stu=stu->next; } if( strcmp(stu->num,xuehao)==0) { //printf(\n\ printf(\①个人基本信息:\\n\printf(\ printf(\班级:%-5d 学号:%-11s宿舍号码:%-19s性别:%-5s\\n\\n 年龄:%-5d 姓名:%-11s电话号码:%-19s科 数:%-5d\\n\\n\stu->phone ,stu->subject ); for(j=0,l=1;j {printf(\----------\\n\ printf(\②选课具体信息:\printf(\第%d科####\\n\printf(\printf(\课程编号:%-19s课程名称:%-19s学 分:%-d\\n\printf(\考试成绩:%-19.1f平时成绩:%-19.1f综 合:%-.1f\\n\printf(\③考试情况(若是fail则需重修):%s\\n\printf(\if(strcmp(\ {printf(\重修次数:%-20d\\n\for(i=0;i 数:%-20.1f\\n\} } } else {printf(\对不起,没找到学号为%s的学生的信息 \\n\\n\ printf(\ ****************\\n\ printf(\学 号 为 [ %s] 的 学 生 的 信 息 输 出 完 毕!\\n\ printf(\请问是否修改个人信息,若是,请输入【是】,否则输入任一字符!\\n\ scanf(\ if(strcmp(\是\ {system(\请输入要修改的选项(注意,暂时只能修改学号、姓名\\n\\n 性别、电话号码、课程编号、课程名称):\ scanf(\ printf(\请输入新的信息:\\n\\n\ scanf(\ while(strcmp(\是\ { if(strcmp(xiangmu,\学号\修改信息成功\\n\\n\\n\ else if(strcmp(xiangmu,\姓名 \修改信息成功\\n\\n\\n\ else if(strcmp(xiangmu,\性别\修改信息成功\\n\\n\\n\ else if(strcmp(xiangmu,\电话号码 \修改信息成功\\n\\n\\n\ else if(strcmp(xiangmu,\课程编号\请选择第几课:\\n\\n\ scanf(\ {strcpy(stu->cou[kemu-1].num,xinxinxi);system(\修改信息成功\\n\\n\\n\ printf(\输入错误,修改未成功\\n\\n\ else if(strcmp(xiangmu,\课程名称\请选择第几课:\\n\\n\ scanf(\ {strcpy(stu->cou[kemu-1].name,xinxinxi);system(\修改信息成功\\n\\n\\n\ printf(\输入错误,修改未成功\\n\\n\ //{strcpy(stu->cou[j].name,xinxinxi);printf(\修改信息成功\\n\\n\\n\ else printf(\修改未成功,请检查是否按要求输入!\\n\\n\请问是否继续修改,若是若是,请输入【是】,否则输入任一字符!\\n\ scanf(\ if(strcmp(\是\ {system(\请输入要修改的选项(注意, 暂时只能修改学号、姓名\\n\\n 性别、电话号码、课程编号、课程名称):\ scanf(\ printf(\请输入新的信息:\\n\\n\\n\\n\ scanf(\} }} else return; writeshan(head);//return; head=out(); stu=head; system(\ while(strcmp(stu->num,xuehao)!=0&&stu->next!=NULL) { p2=stu; stu=stu->next; } if( strcmp(stu->num,xuehao)==0) { //printf(\n\ printf(\①个人基本信息:\\n\printf(\ printf(\班级:%-5d 学号:%-11s宿舍号码:%-19s性别:%-5s\\n\\n 年龄:%-5d 姓名:%-11s电话号码:%-19s科 数:%-5d\\n\\n\stu->phone ,stu->subject ); for(j=0,l=1;j {printf(\----------\\n\ printf(\②选课具体信息:\printf(\第%d科####\\n\printf(\printf(\课程编号:%-19s课程名称:%-19s学 分:%-d\\n\printf(\考试成绩:%-19.1f平时成绩:%-19.1f综 合:%-.1f\\n\printf(\③考试情况(若是fail则需重修):%s\\n\printf(\if(strcmp(\ {printf(\重修次数:%-20d\\n\for(i=0;i 数:%-20.1f\\n\} } } else {printf(\对不起,没找到学号为%s的学生的信息 \\n\\n\ printf(\****************\\n\ printf(\学 号 为 [ %s] 的 学 生 的 【修 改 后】 的 信 息 !\\n\ printf(\}
正在阅读:
发展对象、入党积极分子调动时的情况介绍02-23
消防水池及泵房外墙脚手架专项施工方案11-05
2021年《我的1919》观后感文本08-17
控制工程10-23
logo设计基础06-29
《花公鸡》幼教大班美术教案04-12
小学生新年贺卡图片02-15
试析园林绿化树木移栽技术的应用05-18
天津市建筑工程公司名录2724家08-06
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 教务
- 源代码
- 管理系统
- 2010.05
- 信息
- 20
- 江苏省公路小修保养检查考核与经费支付办法
- 第27届全国中学生物理竞赛复赛试题及解答(word版)
- 中国马口铁基板市场专项调研及未来五年发展动向预测报告
- 浙大2013年下半学期面向对象程序设计在线
- 静水称重法
- 厌氧序批式反应器ASBR的基本原理
- 浙教版数学九年级上册第4章 相似三角形
- 潮流计算上机报告 华电
- 中级统计师-统计相关知识打印版(会计基础) - 图文
- 高压线防护脚手架搭设施工方案
- 2014届本科毕业论文模板
- 中国女装牛仔衫市场发展研究及投资前景报告(目录)
- 6502车站电气集中设计说明
- 浅谈如何发挥女性半边天作用 全面推进镇域经济发展
- 小学综合实践活动、校本课程实施计划2017-2018学年第
- 2013福布斯 中国潜力非上市公司100强
- 市委法建办关于印发百千万普法示范工程
- 2013届中考英语书面表达总复习教案
- 2012年科头乡政府工作报告 杨建平
- 西南大学人力资源管理专业(高起专)《劳动关系管理》17级春学生第