1、C语言程序报告 学生学籍信息管理系统C语言课程设计院系:工程学院姓名:刘若愚班号:05205235指导教师:王老师日期:2007年9月C语言程序设计报告第一部分 题目要求 程序设计题目:学生学籍信息管理系统设计【要求】使用下面的数据,设计一个简单的学籍信息管理系统。学生基本信息文件(A.TXT)及其内容:学号 姓名 性别 宿舍号码 电话号码07 张园园 女 102 . . . .学生成绩基本信息文件(B.TXT)及其内容:学号 课程编号 课程名称 学分 平时成绩 试验成绩 卷面成绩 01 A01 大学物理 3 66 78 8202 B03 高等数学 4 78 -1 9001 B03 高等数学
2、4 45 -1 8802 C01 VF 3 65 76 66. . . . . .功能要求及说明:数据录入功能:录入每个学生的学号、课程编号、课程名称、学分、平时成绩、试验成绩、卷面成绩共7个数据。综合成绩、实得分根据条件自动运算。综合成绩的计算:如果本课程的试验成绩为-1,则表示无试验,综合成绩=平时成绩*30%+卷面成绩*70%;如果试验成绩不为-1,表示本课程有试验,综合成绩=平时成绩*15%+试验成绩*15%+卷面成绩*70%。实得学分的计算:采用等级学分制。综合成绩在90-100之间,应得学分=学分*100%;综合成绩在80-90之间,应得学分=-学分*80%;综合成绩在70-80之
3、间,应得学分=学分*75%;综合成绩在60-70之间,应得学分=学分*60%;综合成绩在60以下,应得学分=学分*0%。(2)查询功能;分为学生基本情况查询和成绩查询两种 1学生基本情况查询: 输入一个学生的学号活姓名,查出此生的基本信息并显示输出。 输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。成绩查询: 输入一个学号时,查询出此生的所有课程情况,格式如下:学号: 姓名;课程编号: 课程名称: 综合成绩: 实得学分:课程编号: 课程名称: 综合成绩: 实得学分:课程编号; 课程名称: 综合成绩: 实得学分: . 共修:XX科, 实得总学分为:XXX删除功能:当在A.TXT中删
4、除一个学生时,自动地在B.TXT中删除此人所有的信息排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。第二部分 需求分析根据题目要求,由于学生信息是存放在文件中,所以应该提供文件的输入、输出等操作;在程序中要浏览学生的信息,应提供显示、查找、排序等操作;另外还应该提供键盘式选择菜单实现功能选择。第三部分 总体设计根据上面的需求分析,可以将这个系统的设计分为以下几个模块:第四部分 详细设计主函数主函数设计一般要简单,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。【流程图】程序#includevoid menu() int n,w;do puts(tt*MEN
5、U*nn); puts(t 1.browse 2.enter 3.Search ); puts(t 4.browse2 5.enter2 6.Search2); puts(t 7.exit ); puts(nntt*n); printf(Choice your number(1-7): bbbb); scanf(%d,&n); if(n7) /对选择的数字作判断/ w=1;getchar(); else w=0;while (w=1);switch(n) case 1: browse();break; /浏览模块/ case 2: enter();break; /输入模块/ case 3: s
6、earch();break; /查找模块/ case 4: browse2();break; /浏览模块/ case 5: enter2();break; /输入模块/ case 6: search2();break; /查找模块/ case 7: exit(0);break; /退出/main() menu();2各功能模块设计输入模块:先采用结构体数组存储数据struct a int xuehao; char name15; char sex10; int shushenum; int telenum; a10;struct bint xuehao;int kechenghao;char
7、kechengming15;int xuefen;int pingshichengji;int shiyanchengji;int juanmianchengji;int zonghechengji;int shidechengji;b10; a10.b10 中每个数组元素对应一个学生 void jisuan()int i, n,n1, n2, n3,n4;for(i=0;i90&bi.zonghechengji80&bi.zonghechengji70&bi.zonghechengji60&bi.zonghechengji70) n1=bi.xuefen; bi.shidechengji=(
8、n1)*0.7; break;else if (bi.zonghechengji60) n=bi.xuefen; bi.shidechengji=n*0; break; 此简单程序计算综合成绩与实得学分【程序】enter() int i,n; printf(How many chengjijibenxinxi datas(0-%d)?:,10); scanf(%d,&n); printf(n Enter data now nn); for(i=0;in;i+) printf(nInput %dth chengjijibenxinxi record.n,i+1); input(i); 调用输入函
9、数 if(i!=0) save(n); 调用保存函数 printf_back(); 一个任务结束时让用户选择是浏览还是返回 浏览模块:该模块的功能是显示所有学生记录信息。【流程图】 【程序】browse() 浏览全部模块 int i,j,n; n=load(); 加载记录 printf_face(); 调用显示数据结构项目函数 for(i=0;in;i+) if(i%10=0) printf(nnPass any key to contiune.); 目的是分屏显示 getch(); puts(nn); printf_one(i); printf(n); 调用显示一个记录的函数 printf(
10、tThere are %d record.n,n); printf(nPass any key to back.); getch(); 按任意键 menu(); browse2() 该浏览模块的功能是显示所有学生的成绩基本信息 int i,j,n; n=load2(); printf_face2(); for(i=0;in;i+) if(i%10=0) printf(nnPass any key to contiune.); getch(); puts(nn); printf_one2(i); printf(n); printf(tThere are %d record.n,n); print
11、f(nPass any key to back.); getch(); menu(); 查找模块;该模块的功能是根据输入的学生姓名查找对应的记录,找到以后,增加删除功能。【流程图】【程序】search() 查找学生基本信息的模块 int i,n,k,w1=1,w2,w3,w4;struct a s;n=load();do do k=-1; printf(nnEnter number that you want to search! number); scanf(%d,&s.xuehao); 输入要修改的数据的学号 printf_face(); 调用显示数据结构项目函数 for(i=0;in;i
12、+) 查找要修改的数据 if(s.xuehao=ai.xuehao) k=i; printf_one(k);break; 调用显示一个记录的函数 if(k=-1) printf(nnNo exist!please); printf(nnAre you again?nt 1).Again 2)No and back bbb ); scanf(%d,&w1);保证在第一次找的的基础上再查找找不到时能退出 while(k=-1&w1=1); 如果W1不等于1时直返回search2() 查找学生成绩基本信息的模块 int i,n,k,w1=1,w2,w3,w4;struct a s;n=load2()
13、;do do k=-1; printf(nnEnter number that you want to search! number); scanf(%d,&s.xuehao); printf_face2(); for(i=0;in;i+) if(s.xuehao=ai.xuehao) k=i; printf_one2(k);break; if(k=-1) printf(nnNo exist!please); printf(nnAre you again?nt 1).Again 2)No and back bbb ); scanf(%d,&w1); while(k=-1&w1=1);删除模块:
14、该模块的功能是先显示所有学生的信息,考虑到记录的数据较多,建议采用分屏显示【程序】Void del()排序模块:该功能模块的功能是要求将学生记录的综合成绩或实得分升序或降序排序并显示数据。假设这里采用选择法排序。【流程图】【程序】Void order() 排序模块int I,j,n;Struct student s;n=load();For(i=0;in-1;i+)Save(n);Puts(“nn”);Printf_back();设计出的程序如下#includevoid menu() int n,w;do puts(tt*MENU*nn); puts(t 1.browse 2.enter 3.
15、Search ); puts(t 4.browse2 5.enter2 6.Search2); puts(t 7.exit ); puts(nntt*n); printf(Choice your number(1-7): bbbb); scanf(%d,&n); if(n7) w=1;getchar(); else w=0;while (w=1);switch(n) case 1: browse();break; case 2: enter();break; case 3: search();break; case 4: browse2();break; case 5: enter2();br
16、eak; case 6: search2();break; case 7: exit(0);break;main() menu();struct a int xuehao; char name15; char sex10; int shushenum; int telenum; a10;struct bint xuehao;int kechenghao;char kechengming15;int xuefen;int pingshichengji;int shiyanchengji;int juanmianchengji;int zonghechengji;int shidechengji;
17、b10; void jisuan()int i, n,n1, n2, n3,n4;for(i=0;i90&bi.zonghechengji80&bi.zonghechengji70&bi.zonghechengji60&bi.zonghechengji70) n1=bi.xuefen; bi.shidechengji=(n1)*0.7; break;else if (bi.zonghechengji60) n=bi.xuefen; bi.shidechengji=n*0; break; enter() int i,n; printf(How many chengjijibenxinxi dat
18、as(0-%d)?:,10); scanf(%d,&n); printf(n Enter data now nn); for(i=0;in;i+) printf(nInput %dth chengjijibenxinxi record.n,i+1); input(i); if(i!=0) save(n); printf_back(); browse() int i,j,n; n=load(); printf_face(); for(i=0;in;i+) if(i%10=0) printf(nnPass any key to contiune.); getch(); puts(nn); prin
19、tf_one(i); printf(n); printf(tThere are %d record.n,n); printf(nPass any key to back.); getch(); menu(); search() int i,n,k,w1=1,w2,w3,w4;struct a s;n=load();do do k=-1; printf(nnEnter number that you want to search! number); scanf(%d,&s.xuehao); printf_face(); for(i=0;in;i+) if(s.xuehao=ai.xuehao)
20、k=i; printf_one(k);break; if(k=-1) printf(nnNo exist!please); printf(nnAre you again?nt 1).Again 2)No and back bbb ); scanf(%d,&w1); while(k=-1&w1=1); w4=0;w3=0; if(k!=-1) printf(nnWhat do you want to do?nt 1.Search another 2.Modify 3.Delete 4.Back menu bbb); scanf(%d,&w2); switch(w2) case 2:w3=modi
21、fy(k);break; case 3: printf(nAre you sure?nt 1).sure 2).No and back bbb); scanf(%d,&w4); if(w4=1) bk.xuehao=0;bk.kechenghao=0;strcpy(bk.kechengming,xxxx);bk.xuefen=0;bk.pingshichengji=0;bk.shiyanchengji=0;bk.juanmianchengji=0; bk.zonghechengji=0;bk.shidechengji=0;ai.xuehao=0;strcpy(ai.name,xxxx);str
22、cpy(ai.sex,xxxx);ai.shushenum=0;ai.telenum=0; break; if(w3=1|w4=1) save(n); printf(nnSuccessful.); printf(nnWhat do you want to do?nt 1).Search another 2).Back bbb); scanf(%d,&w2); while(w2=1); menu(); input (int i) scanf(%d%d%s%d%d%d%d%d%d,&bi.xuehao,&bi.kechenghao,bi.kechengming,&bi.xuefen,&bi.pin
23、gshichengji,&bi.shiyanchengji,&bi.juanmianchengji); jisuan(); save(int n) FILE *fp; int i; if(fp=fopen(b.txt,wb)=NULL) printf(nCannot open filen); return NULL; for(i=0;in;i+) if(ai.xuehao!=0) if(fwrite(&bi,sizeof(struct b),1,fp)!=1) printf(file write errorn); fclose(fp); load() FILE *fp; int i; if(f
24、p=fopen(b.txt,rb)=NULL) printf(nCannot open filen); return NULL; for(i=0;!feof(fp);i+) fread(&bi,sizeof(struct b),1,fp); fclose(fp); return(i-1); printf_face() printf(nt xuehao kechenghao kechengming xuefen pingshichengji shiyanchengji juanmianchengji zonghechengji shidechengji ); printf_one(int i) printf(%5d%5d%15s%5d%5d%5d%5d%5d%5d,bi.xuehao,bi.kechenghao,bi.kechengming,bi.xuefen
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1