C语言课程设计典范--学生成绩管理系统(2)

2019-01-12 12:37

if(strcmp(str,str1)==0)/* 密码验证 */ { } else { }

scanf(\ if(i==0) {

printf(\您的原密码为:%s\\n\\n\请输入新密码:\\n\scanf(\

printf(\您输入的新密码为:%s\\n\确认请键入:yes,重新键入请:no\\n\\n\scanf(\if(strcmp(x,\{

strcpy(str,str2);

printf(\密码修改成功。请按回车确认\\n\fp=fopen(\ /* 密码导入文件并保存 */

printf(\密码错误,请重新输入:\\t\ /* 密码错误时,可再输入一次 */ scanf(\

if(strcmp(str,str1)==0) { } else { }

printf(\密码再次错误,程序结束!!\\n\ /* 2次输入都错误,程序将结束 */ exit(0);

system(\密 码 正 确,欢 迎 使 用 \\t^_^\\n\\n\

printf(\修 改 密 码 请 按 0 ;学 生 成 绩 管 理 请 按 1。\\n\

system(\密 码 正 确,欢 迎 使 用 \\t^_^\\n\\n\ printf(\修 改 密 码 请 按 0 ;学 生 成 绩 管 理 请 按 1\\n\

}

Student *cin(void); Student *sort_1(Student *head,int); void sort_2(Student *head); void print(Student *head); Student *sort_all(Student *head); void find(Student *head); Student *add_new(Student *head);

/*函数的声明 */

} if(i==1) return 1; }

fclose(fp); /*文件关闭 */ }

else if(strcmp(x,\{ } else

printf(\不合法输入!!!\\n\

printf(\请重新输入密码(不可再错):\\n\ /* 密码2次修改 */ scanf(\

printf(\您输入的新密码为:%s\\n\请按回车确认。\\n\strcpy(str,str2);

printf(\密码修改成功。请按回车确认\\n\

fputs(str2,fp);

fclose(fp); getch();

return 1; /* 返回值为1,主函数 继续 */

fp=fopen(\

fputs(str2,fp);

fclose(fp); getch();return 1;

Student *cin() /* 成绩输入函数 */ { int flag; /* flag为选择标志 */

Student *head,*p1,*p2; /* 定义指向结构体的指针 */ n=0;

head=(Student *)malloc(LEN); /* 分配内存,强制转换 */ p2=head; /* p2指向表头 */

printf(\请输入第%d名学生的学号(学号为0表示结束输入):\ scanf(\ while(getchar()!='\\n');

for(;flag;) /* 只要flag不为0,循环依旧 */ { n++;

p1=(Student *)malloc(LEN); p1->num=flag;

printf(\请输入第%d名学生的姓名:\ scanf(\

printf(\请输入第%d名学生的语文成绩:\ /*在当前的节点的数据域中中存储成绩 scanf(\

printf(\请输入第%d名学生的数学成绩:\ scanf(\

printf(\请输入第%d名学生的英语成绩:\

scanf(\

printf(\请输入第%d名学生的计算机成绩:\ scanf(\

p1->sum=p1->score[0]+p1->score[1]+p1->score[2]+p1->score[3]; /* 求和 */ p2->next=p1; /* p1指向p2的指针域 */ p2=p1;

printf(\请输入第%d名学生的学号,没有此学生则输入0表示结束:\

*/

}

Student *sort_all(Student *head)/* 排序函数,返回 结构体类型的指针,形参也为 结构体类型的指针 */ { {

printf(\学生成绩统计排序 # # # #\\n\

printf(\按学生学号排序\\t \\n\

int choose;

for(;;) /* for语句死循环 */ }

p2->next=NULL; /* 最后一个节点的指针域置空 */

printf(\scanf(\

return head; /* 返回表头 */

printf(\按学生总分排序\\t \\n\ printf(\按学生语文成绩排序\\t \\n\ printf(\按学生数学成绩排序\\t \\n\ printf(\按学生英语成绩排序\\t \\n\ printf(\按学生计算机成绩排序\\t \\n\ printf(\单科高分及均分\\t \\n\ printf(\显示当前学生成绩\\t \\n\ printf(\返回上一级菜单\\t \\n\

printf(\ printf(\请输入你要执行的操作:\ scanf(\

{

while(getchar()!='\\n'); switch(choose)

/* 选择排序条件 */

case 1: case 2: case 3: case 4: case 5:

case 6:head=sort_1(head,choose);break;/* 调用排序子函数 形参为 排序条件*/ case 7:print(head);sort_2(head);break;/* 显示所有成绩,最高分,最低分及平均分 */ case 8:print(head);break;/* 所有成绩 */ case 0:return head; /* 返回上一级菜单 */

default: printf(\您的输入有误!请重新输入:\\n\\n\

}

} }

Student *sort_1(Student *head,int choose) { Student *p1,*p2=head->next,*pm,*px; /* 表头的指针域指向p2 */ Student mid; /* 中转结构体 */ if (!p2)/* 如果没有已录入的成绩,*/ return head;/*返回上一级菜单 */ for(p1=p2;p1->next!=NULL;p1=p1->next) /* p1的指针域不为空,继续循环 */ {

pm=p1;

for(p2=p1->next;p2!=NULL;p2=p2->next) switch(choose) /* 基于排序条件的排序 */ {

case 1:if (pm->num>p2->num) pm=p2;break;

case 2:if (pm->sumsum) pm=p2;break;

case 3:if (pm->score[0]score[0]) pm=p2;break;

case 4:if (pm->score[1]score[1]) pm=p2;break;

/* p1指向它的下一个节点*/


C语言课程设计典范--学生成绩管理系统(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:广东省深圳市宝安区2018-2019第一学期8年级语文第一单元测试卷和

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: