学籍信息管理系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
是否找到记录? 输入名字或学号 开始
void search1(int n) {
提示没找到 显示找到
int i,flog=0; char s[20];
结束
printf("\n\nplease scanf the num or name which you want search: "); scanf("%s",s.name); /*通过名字查询并输出*/ for(i=0;i<n;i++){ if(strcmp(s,stu[i].name)==0){ printf("\n\nnum:%s\tname:%s\tmale:%s\troom:%s\ttelunm:%s\n\n",stu[i].num stu[i].name,stu[i].male,stu[i].room,stu[i].telnum); flog=1; } else if(strcmp(s,stu[i].num)==0){ printf("\n\nnum:%s\tname:%s\tmale:%s\troom:%s\ttelunm:%s\n\n",stu[i].num stu[i].name,stu[i].male,stu[i].room,stu[i].telnum); flog=1; } } if(flog==0) printf("Can not find this member"); }
puts("\t\t********************MENU*******************\n\n"); puts("\t\t\t\t 1.Enter new data"); /*输入学生信息*/ puts("\t\t\t\t 2.Search"); /*查找学生信息*/ puts("\t\t\t\t 3.Delete data"); /*删除学生信息*/ puts("\t\t\t\t 4.Orde by score"); /*学生信息排序*/ puts("\t\t\t\t 5.Exit"); /*退出*/ puts("\t\t*******************************************\n"); printf("Choice your number(1-5):[ ]\b\b"); scanf("%d",&n); if(n<1||n>5) /*对选择的数字做判断*/ { w1=1; getchar(); } else w1=0; } while(w1==1); /*选择功能*/ switch(n) { case 1:enter();break; case 2:search();break; case 3:del();break; case 4:orde();break; case 5:exit(0); } } int main() { menu(); } 4 .各功能模块设计 (1)输入模块 /************************输入模快*********************/
/*通过宿舍号查询该宿舍所有同学的基本信息函数*/ void search2(int n) { int i,flog=0; char r[5]; printf("\n\nplease scanf room which you want search: "); scanf("%s",r); for(i=0;i<n;i++) if(strcmp(r,stu[i].room)==0){ /*查找并输出成绩信息*/ printf("\n\nnum:%s\tname:%s\tmale:%s\troom:%s\ttelunm:%s\n\n",stu[i].num
C 语 言 课 程 实 习 报 告
(1) 题目要求 使用下面的数据,设计一个简单的学籍管理系统。 学生基本信息文件(A.TXT)及内容: 学号 姓名 性别 宿舍号码 电话号码 01 张成城 男 501 87732111 02 李成华 女 101 87723112 …… …….. …. …. ……….. 学生成绩基本信息文件(B.TXT) 及内容: 学号 课程编号 课程名称 学分 平时成绩 试验成绩 卷面成绩 综合成绩 实得学分 01 A01 大学物理 3 66 78 82 02 B03 高等数学 4 78 -1 90 … … ………… .. … .. … 功能要求及说明: (1) 数据录入功能:录入每个学生的学号,课程编号,课程名称,学分, 平时成绩,试验成绩,卷面成绩共7个数据.综合成绩,实得学分根 据条件自动运算. 综合成绩的计算: a 如果本课程的试验成绩为-1,则表示无实验,综合成=平时成绩 *30%+卷面成绩*70%; b 如果试验成绩不为-1,表示本课程有实验,综合成绩=平时成绩 *15%+实验成绩*15%+卷面成绩*70%。 实得学分的计算:采用登记学分制。 a 综合成绩在90~100之间,应得学分=学分*100% b 综合成绩在80~90之间,应得学分=学分*80% c 综合成绩在70~80之间,应得学分=学分*75% d 综合成绩在60~70之间,应得学分=学分*60% e 综合成绩在60以下,应得学分=学分*0% (2) 查询功能:分为学生基本情况查询和成绩查询两种 a 学生基本情况查询:
开始
}stu[N];
显示功能选项
2 .百度文库数 这里主函数提供各功能的选择
输入n,判断m是否0~9
【流程图】
结束 根据的值调用各功能模块函数 完成数据的录入及计算 输入m值 根据m值调用各功能模块函数
【程序】 void menu() { int n,w1; /*变量n保存选择菜单数字,w1判断输入是否在菜单上有的功能*/ do {
printf("name:"); scanf("%s",stu[i].name); printf("male:"); scanf("%s",stu[i].male); printf("room:"); scanf("%s",stu[i].room); printf("tlenum:"); scanf("%s",stu[i].telnum);
printf("hao many student(0-%d)?:",N-1); scanf("%d",&n); printf("\nEnter data now\n\n"); for(i=0;i<n;i++)
结束
{ printf("\n Input%dth student record.\n",i+1); intput(i); } if(i!=0) save(n,0); /*调用保存函数*/ printf_back(); /*调用返回函数*/ } (2)查询模块 /********************查询模块******************/ /*通过名字或学号查询基本信息函数*/ Y N
/*算综合成绩函数*/ void score(int i,int j) { if(stu[i].st[j].emp==-1) stu[i].st[j].score=stu[i].st[j].usual*3/10 + stu[i].st[j].papsco*7/10; else stu[i].st[j].score=(stu[i].st[j].usual + stu[i].st[j].emp)*15/100 + stu[i].st[j].papsco*7/10; }
学生学籍管理系统 排序 删除 查询 录入及计算
(三)详细设计 1 .全局变量的声明定义 #define N 50 #define k 3 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> #include <cstdlib> /****************定义结果体*********************/
struct stud { char pro_num[10]; char pro_name[20]; int x; int usual; int papsco; int emp; int score; int sco; }; struct student { char num[10]; char name[20]; char male[7]; char room[5]; char telnum[10]; struct stud st[k];
输入一个学号或姓名(可实现选择),查出此生的基本信息并 显示输出。 输入一个宿舍号码,可查询出本室所有的学生的基本信息并显 示输出。 b 成绩查询: 输入一个学号时,查询出此生的所有课程情况,格式如下: 学号:XX 姓名:XXX 课程编号:XXX 课程名称:XXX 综合成绩:X X实得学分:X 课程编号:XXX 课程名称:XXX 综合成绩:XX 实得学分:X ……………………………………………………………… 共修:XX 科,实得总学分为:XX (3) 删除功能:当在A.TXT 中删除一个学生时,自动地在B.TXT 中 删除此人所有信息. (4) 排序功能:能实现选择按综合成绩或实得学分升序或降序排序 并显示数据。 (二)总体设计 根据上面的需求分析,可以将这个系统的设计分为如下四大模块:数据 的录入及计算,查询,删除,排序。
/*学号记录函数*/ void no_input(int i,int n) /*加载记录或可以记录个数的函数*/ { int j,s,w1; do { w1=0; printf("NO.:"); scanf("%s",stu[i].num); for(j=0;stu[i].num[j]!='\0';j++) /*学号输入函数,作了严 格的规定*/ if(stu[i].num[j]<'0'||stu[i].num[j]>'9') /*判断学号是否为数字*/ { puts("Inout error!Only be made up of(0-9).Please reinput!\n"); w1=1; break; } if(w1!=1) for(s=0;s<n;s++) /*比较第n个学生*/ /*排除第i个学生记录即你要修改的*/ if(s!=0&&strcmp(stu[s].num,stu[j].num)==0) /*判断学号是否有雷 同*/ { puts("This record is exisit.Please reinput!\n"); w1=1; break; } }while(w1==1); } /*输入一个记录*/ void intput(int i) { no_input(i,i); /*调用学号记录函数*/
/*求实得学分函数*/ void sco(int i,int j) { int p; p=stu[i].st[j].papsco/10; if(p<6) p=5; if(p==10) p=9; switch(p) { case 5: stu[i].st[j].sco= 0; case 6: stu[i].st[j].sco= stu[i].st[j].x * 60 / 100; case 7: stu[i].st[j].sco= stu[i].st[j].x * 75 / 100; case 8: stu[i].st[j].sco= stu[i].st[j].x * 80/ 100; case 9: stu[i].st[j].sco= stu[i].st[j].x ; } } /*输入成绩信息*/ void score_input (int i) { int j; for(j=0;j<k;j++) { scanf("%s%s%d%d%d%d",stu[i].st[j].pro_num,stu[i].st[j].pro_name,&stu[i].st[j].x,&stu score(i,j); /*调用综合成绩函数*/ sco(i,j); /*调用实得学分函数*/ } }
开始
printf("now intput score:"); score_input(i); /*调用分数输入函数*/
输入用户要输的学生记录个数n
}
I从0到n~1调用输入函数input(i)
/*输入函数*/ void enter() {
I!=0?
int i,n; system("cls");
返回主菜单 保存调用函数save(n)
void search1(int n) {
提示没找到 显示找到
int i,flog=0; char s[20];
结束
printf("\n\nplease scanf the num or name which you want search: "); scanf("%s",s.name); /*通过名字查询并输出*/ for(i=0;i<n;i++){ if(strcmp(s,stu[i].name)==0){ printf("\n\nnum:%s\tname:%s\tmale:%s\troom:%s\ttelunm:%s\n\n",stu[i].num stu[i].name,stu[i].male,stu[i].room,stu[i].telnum); flog=1; } else if(strcmp(s,stu[i].num)==0){ printf("\n\nnum:%s\tname:%s\tmale:%s\troom:%s\ttelunm:%s\n\n",stu[i].num stu[i].name,stu[i].male,stu[i].room,stu[i].telnum); flog=1; } } if(flog==0) printf("Can not find this member"); }
puts("\t\t********************MENU*******************\n\n"); puts("\t\t\t\t 1.Enter new data"); /*输入学生信息*/ puts("\t\t\t\t 2.Search"); /*查找学生信息*/ puts("\t\t\t\t 3.Delete data"); /*删除学生信息*/ puts("\t\t\t\t 4.Orde by score"); /*学生信息排序*/ puts("\t\t\t\t 5.Exit"); /*退出*/ puts("\t\t*******************************************\n"); printf("Choice your number(1-5):[ ]\b\b"); scanf("%d",&n); if(n<1||n>5) /*对选择的数字做判断*/ { w1=1; getchar(); } else w1=0; } while(w1==1); /*选择功能*/ switch(n) { case 1:enter();break; case 2:search();break; case 3:del();break; case 4:orde();break; case 5:exit(0); } } int main() { menu(); } 4 .各功能模块设计 (1)输入模块 /************************输入模快*********************/
/*通过宿舍号查询该宿舍所有同学的基本信息函数*/ void search2(int n) { int i,flog=0; char r[5]; printf("\n\nplease scanf room which you want search: "); scanf("%s",r); for(i=0;i<n;i++) if(strcmp(r,stu[i].room)==0){ /*查找并输出成绩信息*/ printf("\n\nnum:%s\tname:%s\tmale:%s\troom:%s\ttelunm:%s\n\n",stu[i].num
C 语 言 课 程 实 习 报 告
(1) 题目要求 使用下面的数据,设计一个简单的学籍管理系统。 学生基本信息文件(A.TXT)及内容: 学号 姓名 性别 宿舍号码 电话号码 01 张成城 男 501 87732111 02 李成华 女 101 87723112 …… …….. …. …. ……….. 学生成绩基本信息文件(B.TXT) 及内容: 学号 课程编号 课程名称 学分 平时成绩 试验成绩 卷面成绩 综合成绩 实得学分 01 A01 大学物理 3 66 78 82 02 B03 高等数学 4 78 -1 90 … … ………… .. … .. … 功能要求及说明: (1) 数据录入功能:录入每个学生的学号,课程编号,课程名称,学分, 平时成绩,试验成绩,卷面成绩共7个数据.综合成绩,实得学分根 据条件自动运算. 综合成绩的计算: a 如果本课程的试验成绩为-1,则表示无实验,综合成=平时成绩 *30%+卷面成绩*70%; b 如果试验成绩不为-1,表示本课程有实验,综合成绩=平时成绩 *15%+实验成绩*15%+卷面成绩*70%。 实得学分的计算:采用登记学分制。 a 综合成绩在90~100之间,应得学分=学分*100% b 综合成绩在80~90之间,应得学分=学分*80% c 综合成绩在70~80之间,应得学分=学分*75% d 综合成绩在60~70之间,应得学分=学分*60% e 综合成绩在60以下,应得学分=学分*0% (2) 查询功能:分为学生基本情况查询和成绩查询两种 a 学生基本情况查询:
开始
}stu[N];
显示功能选项
2 .百度文库数 这里主函数提供各功能的选择
输入n,判断m是否0~9
【流程图】
结束 根据的值调用各功能模块函数 完成数据的录入及计算 输入m值 根据m值调用各功能模块函数
【程序】 void menu() { int n,w1; /*变量n保存选择菜单数字,w1判断输入是否在菜单上有的功能*/ do {
printf("name:"); scanf("%s",stu[i].name); printf("male:"); scanf("%s",stu[i].male); printf("room:"); scanf("%s",stu[i].room); printf("tlenum:"); scanf("%s",stu[i].telnum);
printf("hao many student(0-%d)?:",N-1); scanf("%d",&n); printf("\nEnter data now\n\n"); for(i=0;i<n;i++)
结束
{ printf("\n Input%dth student record.\n",i+1); intput(i); } if(i!=0) save(n,0); /*调用保存函数*/ printf_back(); /*调用返回函数*/ } (2)查询模块 /********************查询模块******************/ /*通过名字或学号查询基本信息函数*/ Y N
/*算综合成绩函数*/ void score(int i,int j) { if(stu[i].st[j].emp==-1) stu[i].st[j].score=stu[i].st[j].usual*3/10 + stu[i].st[j].papsco*7/10; else stu[i].st[j].score=(stu[i].st[j].usual + stu[i].st[j].emp)*15/100 + stu[i].st[j].papsco*7/10; }
学生学籍管理系统 排序 删除 查询 录入及计算
(三)详细设计 1 .全局变量的声明定义 #define N 50 #define k 3 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> #include <cstdlib> /****************定义结果体*********************/
struct stud { char pro_num[10]; char pro_name[20]; int x; int usual; int papsco; int emp; int score; int sco; }; struct student { char num[10]; char name[20]; char male[7]; char room[5]; char telnum[10]; struct stud st[k];
输入一个学号或姓名(可实现选择),查出此生的基本信息并 显示输出。 输入一个宿舍号码,可查询出本室所有的学生的基本信息并显 示输出。 b 成绩查询: 输入一个学号时,查询出此生的所有课程情况,格式如下: 学号:XX 姓名:XXX 课程编号:XXX 课程名称:XXX 综合成绩:X X实得学分:X 课程编号:XXX 课程名称:XXX 综合成绩:XX 实得学分:X ……………………………………………………………… 共修:XX 科,实得总学分为:XX (3) 删除功能:当在A.TXT 中删除一个学生时,自动地在B.TXT 中 删除此人所有信息. (4) 排序功能:能实现选择按综合成绩或实得学分升序或降序排序 并显示数据。 (二)总体设计 根据上面的需求分析,可以将这个系统的设计分为如下四大模块:数据 的录入及计算,查询,删除,排序。
/*学号记录函数*/ void no_input(int i,int n) /*加载记录或可以记录个数的函数*/ { int j,s,w1; do { w1=0; printf("NO.:"); scanf("%s",stu[i].num); for(j=0;stu[i].num[j]!='\0';j++) /*学号输入函数,作了严 格的规定*/ if(stu[i].num[j]<'0'||stu[i].num[j]>'9') /*判断学号是否为数字*/ { puts("Inout error!Only be made up of(0-9).Please reinput!\n"); w1=1; break; } if(w1!=1) for(s=0;s<n;s++) /*比较第n个学生*/ /*排除第i个学生记录即你要修改的*/ if(s!=0&&strcmp(stu[s].num,stu[j].num)==0) /*判断学号是否有雷 同*/ { puts("This record is exisit.Please reinput!\n"); w1=1; break; } }while(w1==1); } /*输入一个记录*/ void intput(int i) { no_input(i,i); /*调用学号记录函数*/
/*求实得学分函数*/ void sco(int i,int j) { int p; p=stu[i].st[j].papsco/10; if(p<6) p=5; if(p==10) p=9; switch(p) { case 5: stu[i].st[j].sco= 0; case 6: stu[i].st[j].sco= stu[i].st[j].x * 60 / 100; case 7: stu[i].st[j].sco= stu[i].st[j].x * 75 / 100; case 8: stu[i].st[j].sco= stu[i].st[j].x * 80/ 100; case 9: stu[i].st[j].sco= stu[i].st[j].x ; } } /*输入成绩信息*/ void score_input (int i) { int j; for(j=0;j<k;j++) { scanf("%s%s%d%d%d%d",stu[i].st[j].pro_num,stu[i].st[j].pro_name,&stu[i].st[j].x,&stu score(i,j); /*调用综合成绩函数*/ sco(i,j); /*调用实得学分函数*/ } }
开始
printf("now intput score:"); score_input(i); /*调用分数输入函数*/
输入用户要输的学生记录个数n
}
I从0到n~1调用输入函数input(i)
/*输入函数*/ void enter() {
I!=0?
int i,n; system("cls");
返回主菜单 保存调用函数save(n)