C语言程序报告 学生学籍信息管理系统.doc_第1页
C语言程序报告 学生学籍信息管理系统.doc_第2页
C语言程序报告 学生学籍信息管理系统.doc_第3页
C语言程序报告 学生学籍信息管理系统.doc_第4页
C语言程序报告 学生学籍信息管理系统.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言课程设计院系:工程学院姓名:刘若愚学号:20051001606班号:05205235指导教师:王老师日期:2007年9月 C语言程序设计报告第一部分 题目要求 程序设计题目:学生学籍信息管理系统设计【要求】使用下面的数据,设计一个简单的学籍信息管理系统。学生基本信息文件(A.TXT)及其内容:学号 姓名 性别 宿舍号码 电话号码01 张成成 男 501 8773211102 李成华 女 101 8772311203 王成凤 女 101 8772311204 张明明 男 502 8773433305 陈东 男 501 8773211106 李果 男 502 8773433307 张园园 女 102 87756122. . . .学生成绩基本信息文件(B.TXT)及其内容:学号 课程编号 课程名称 学分 平时成绩 试验成绩 卷面成绩 01 A01 大学物理 3 66 78 8202 B03 高等数学 4 78 -1 9001 B03 高等数学 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之间,应得学分=学分*75%;综合成绩在60-70之间,应得学分=学分*60%;综合成绩在60以下,应得学分=学分*0%。(2)查询功能;分为学生基本情况查询和成绩查询两种 1学生基本情况查询: 输入一个学生的学号活姓名,查出此生的基本信息并显示输出。 输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。成绩查询: 输入一个学号时,查询出此生的所有课程情况,格式如下:学号: 姓名;课程编号: 课程名称: 综合成绩: 实得学分:课程编号: 课程名称: 综合成绩: 实得学分:课程编号; 课程名称: 综合成绩: 实得学分: . 共修:XX科, 实得总学分为:XXX删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有的信息排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。第二部分 需求分析根据题目要求,由于学生信息是存放在文件中,所以应该提供文件的输入、输出等操作;在程序中要浏览学生的信息,应提供显示、查找、排序等操作;另外还应该提供键盘式选择菜单实现功能选择。第三部分 总体设计根据上面的需求分析,可以将这个系统的设计分为以下几个模块:数据输入学生成绩管理系统数据显示数据查找数据插入成绩排序第四部分 详细设计主函数主函数设计一般要简单,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。【流程图】显示一系列功能选项输入n,判断n是否是0-7根据n的值调用各功能模块函数NY程序#includevoid menu() int n,w;do puts(tt*MENU*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: search();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 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=(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); 调用输入函数 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(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); printf(nPass any key to back.); getch(); menu(); 查找模块;该模块的功能是根据输入的学生姓名查找对应的记录,找到以后,增加删除功能。【流程图】输入学生的名字是否找到此生记录显示找到的记录提示没有找到YN询问用户是否继续查找返回主菜单让用户选择1)。查找另一个2)。修改 3).删除 4)返回主菜单YN【程序】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) 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();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);删除模块:该模块的功能是先显示所有学生的信息,考虑到记录的数据较多,建议采用分屏显示【程序】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.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();break; 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;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 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); 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(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) 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=modify(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(,xxxx);strcpy(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.pingshichengji,&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;inn);puts( 1).xuehao 2).kechenghao 3).kechengming 4).xuefen 5).pingshichengji 6).shiyanchengji 7).juanmianchengji 8)zonghechengji 9)shidechengji 10).all data 11).cancel and back ); printf(Which you needed?: bbbb); scanf(%d,&c); if(c11|c11|c1); do switch(c) case 1:printf(xuehao:);scanf(%d,&bi.xuehao);break; case 2:printf(kechenghao:);scanf(%d,&bi.kechenghao);break; case 3:printf(kechengming:);scanf(%s,bi.kechengming);break; case 4:printf(xuefen:);scanf(%d,&bi.xuefen);break; case 5:printf(pingshichengji:);scanf(%d,&bi.pingshichengji);break; case 6:printf(shiyanchengji:);scanf(%d,&bi.shiyanchengji);break; case 7:printf(juanmianchengji:);scanf(%d,&bi.juanmianchengji);break; case 8:input(i);break; case 9:menu();break; puts(nNow:n); printf_face(); printf_one(i); printf(nAre you sure?nnt 1).Sure 2).No and remodify 3).Back without save in this time bbb); scanf(%d,&w1); while(w1=2); return(w1); enter2() int i,n; printf(How many xue sheng ji ben xin xi(0-%d)?:,10); scanf(%d,&n); printf(n Enter data now nn); for(i=0;in;i+) printf(nInput %dth xue sheng ji ben xin xi record.n,i+1); input2(i); if(i!=0) save2(n); printf_back2(); 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); printf(nPass any key to back.); getch(); menu(); search2() int i,n,k,w1=1,w2,w3,w4;struct a s;n=load2();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); w4=0;w3=0; if(k!=-1) printf(nnWhat do you want to do?nt 1.Search another 2.Modify 3.Back menu bbb); scanf(%d,&w2); switch(w2) case 2:w3=modify2(k);break; if(w3=1|w4=1) save2(n); printf(nnSuccessful.); printf(nnWhat do you want to do?nt 1).Search another 2).Back bbb); scanf(%d,&w2); while(w2=1); menu(); input2 (int i) scanf(%d %s %s %d %d,&ai.xuehao,,ai.sex,&ai.shushenum,ai.telenum); save2(int n) FILE *fp; int i; if(fp=fopen(a.txt,wb)=NULL) printf(nCannot open filen); return NULL; for(i=0;inn);puts( 1).xuehao 2).name 3).sex 4).shushenum 5)telenum

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论