c语言系统开发设计实习报告.docx

上传人:l*** 文档编号:11194699 上传时间:2022-04-17 格式:DOCX 页数:30 大小:37.78KB
返回 下载 相关 举报
c语言系统开发设计实习报告.docx_第1页
第1页 / 共30页
c语言系统开发设计实习报告.docx_第2页
第2页 / 共30页
点击查看更多>>
资源描述

《c语言系统开发设计实习报告.docx》由会员分享,可在线阅读,更多相关《c语言系统开发设计实习报告.docx(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、c语言系统开发设计实习报告 信息管理与系统开发设计综合模拟实习 一、实习目的 通过模拟实习,主要要达到两个目的,一是检验和巩固专业学问、二是提高综合素养和实力。信管07级学生的模拟实习主要是困难程序和简洁软件的实现。通过该模拟实习,可以将学生课堂上驾驭的理论学问与处理数据的业务相结合,以检验我们同学们驾驭学问的宽度、深度及对学问的综合运用实力。 二、实习环境 计算机硬件配置:cpu 内存 硬盘操作系统:windows xp 开发环境:visual c+ 6.0 三、实习内容 内容一:运动会分数统计 任务:参与运动会有n个学校,学校编号为1n。竞赛分成m个男子项目,和w个女子项目。项目编号为男子

2、1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为: 7、 5、 3、 2、1,前三名的积分分别为: 5、 3、2;哪些取前五名或前三名由学生自己设定。(m 功能要求: (1)可以输入各个项目的前三名或前五名的成果; (2)能统计各学校总分; (3)可以按学校编号、学校总分、男女团体总分排序输出; (4)可以按学校编号查询学校某个项目的状况;可以按项目编号查询取得前三或前五名的学校。 规定:输入数据形式和范围:20以内的整数(假如做得更好可以输入学校的名称,运动项目的名称) 输出形式:有中文提示,各学校分数为整形 1 界面要求:有合理的提示,每个功能可以设立菜单,依据

3、提示,可以完成相关的功能要求。 存储结构:学生自己依据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最终的上交资料中指明你用到的存储结构; 测试数据:要求运用 1、全部合法数据; 2、整体非法数据; 3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明; 内容二:纸牌嬉戏 任务:编号为1-52张牌,正面对上,从第2张起先,以2为基数,是2的倍数的牌翻一次,直到最终一张牌;然后,从第3张起先,以3为基数,是3的倍数的牌翻一次,直到最终一张牌;然后从第4张起先,以4为基

4、数,是4的倍数的牌翻一次, 直到最终一张牌;.再依次5的倍数的牌翻一次,6的,7的 直到 以52为基数的 翻过,输出:这时正面对上的牌有哪些? 内容三:设计学生成果管理系统。该系统中存储学生的学号、姓名、性别、年龄、课程成果等信息。 要求:(1)阅读学生信息 (2)添加学生信息 (3)删除学生信息 (4)查找学生信息 (5)修改学生信息 (6)对成果的处理 求出每个学生各门课程的总成果、平均成果、最高分和最低分。 求出某一门课程全部学生总成果、平均成果、最高分和最低分。 (7)根据学生某门课程的成果对学生排序 四、算法分析、设计与描述 1算法分析和设计 内容一: 运动会分数统计是对运动会信息的

5、基本管理与统计,它包括:运动会信息的输入、运动会总体成果的查询、指定学校成果的查询、以及各种要求的排列。 运用模块化编程的方法每项功能有一个函数来完成,对应如下: 按学校编号排序void bianhao( ) 按学校总分排序void zongfen( ) 按学校男总分排序void malezf( ) 按学校女总分排序void femalezf( ) 查询某个学校成果void cxsch( ) 查询某个项目成果void cxxm( ) 为了把数据封装起来更便利运用,创建了表示项目结构体的struct item和表示学校的结构体struct school。 struct item char nam

6、e15; int snum5; int s; p21; struct school int num; char name15; int score; int mscore; int wscore; sch21; 内容二: 此题算法比较简洁,按题目要求相当于从第一张牌算起,若这张牌是二的倍数,则翻面,是三的倍数则再翻一次,是四的倍数则再翻一次,循环直到52为止,则此张牌结算完成。翻完第一张牌后,再接着算其次张牌,直到52张牌都结算完成。 3 内容三: 学生信息管理系统是对学生信息的基本管理,它包括:阅读学生信息、添加学生信息、删除学生信息、查找学生信息、修改学生信息、对成果的处理、根据学生某门课

7、程的成果对学生排序 运用模块化编程的方法每项功能有一个函数来完成,对应如下: (1)阅读学生信息以及读取数据 void print(ID *head) (2)添加学生信息以及对成果的处理ID *insert(ID *head) (3)删除学生信息 ID *delet(ID *head) (4)查找学生信息ID *search(ID *head) (5)修改信息 ID *amend(ID *head) (6)根据学生某门课程的成果对学生排序ID *sort(ID *head) (7)存储数据以及退出系统ID *breaksys(ID *head) 为了把数据封装起来更便利运用,创建了表示学生信息

8、的结构体struct id struct id char name20; int num; int a; int b; int c; double ave; ID *next; ; 2算法描述 内容一: 起先输入数据选择操作按学校编号排序按学校总分排序按学校男总分排序按学校女总分排序查询某学校成果查询某个项目成果退出结束 图4.1 计分系统总体模块流程图 起先N输入学校的个数nYn=1&n=1&w=1输入项目选取的名次sN输入项目的前s名的学校编号x=1&x 图4.2 数据输入保存流程图 起先i=0isNschj;schj=tchj.numi+i=1i 起先i=1Ni 内容二: 内容三: 起先

9、输入zZ=2Z=1Z=3Z=4Z=5Z=6Z=7Z=8阅读学生信息添加学生信息删除学生信息查找学生信息修改学生信息对成果的处理根据学生某门课程的成果对学生排序退出结束 图4.5总体模块流程图 起先输入删除的学号p1=headnum!=p1-num & p1!=NULLNYp2=p1p1=p1-nextYhead=NULLN输出没有记录结束num=p1-numYp1=headNhead=p1-nextYp2-next=p1-nextpc-结束 图4.6 删除数据流程图 五、程序设计 1程序设计的基本思路 内容一: (1)主函数的程序设计 首先输入运动会成果,进入菜单,然后选择操作(运用swith

10、语句),调用各子函数,同时保存文件。最终选择退出程序。 (2)各子函数的程序设计 保存信息: fp=fopen(运动会分数统计.txt,wb); fprintf(fp,编号 学校名称 总分 男子总分 女子总分n); for(i=1;i fprintf(fp, %d%10s%7d%7d%7dn,schi.num,schi.name,schi.score, schi.mscore,schi.wscore); fclose(fp); 按学校编号排序 for(i=0;i for(j=i;j if(schi.numschj.num) t=schi;schi=schj;schj=t; 按学校总分排序 fo

11、r(i=1;i for(j=i;j if(schi.score t=schi; schi=schj; schj=t; 8 按学校男总分排序 school t; for(i=1;i for(j=i;j if(schi.mscore for(i=1;i for(j=i;j if(schi.wscore for(i=1;i if(schi.num=s) printf( %d%10s%7d%7d%7dn,schi.num,schi.name, schi.score,schi.mscore,schi.wscore); break; 查询某个项目成果 for(i=1;i 9 内容二: 主要算法是两次for

12、循环 for(i=1;i a=1; for(j=2;j if(a=1) printf(%dn,i); if(i%j=0) a=-a; 内容三: (1)主函数的程序设计 首先,进入菜单,然后选择操作(运用swith语句),调用各子函数,调用完后自动返回主菜单。在退出程序时自动保存文件。 (2)各子函数的程序设计 显示信息: fp=fopen(学生成果管理.txt,a+); printf(显示结果是:n); printf(学号 姓名 性别 年龄 语文 数学 英语 总成果 平均成果 最高分 最低分n); while(p!=NULL) &p-min); fclose(fp); if(head!=NUL

13、L) fscanf(fp,%3d%5s%5s%5d%5d%5d%5d%5d%5d%5d%5dn,&p-num, &p-name,&p-sex, &p-age,&p-a,&p-b,&p-c,&p-sum,&p-ave,&p-max, p+; do 10 printf(%3d%5s%5s%5d%5d%5d%5d%6d%9.2f%7d%7dn,p-num, p=p-next; p-name,p-sex, p-age,p-a,p-b,p-c,p-sum,p-ave,p-max,p-min); while(p!=NULL); printf(总体成果:n); printf(语文的总成果是%4dt平均成果是

14、%5.2ft最高分是%3dt最低分是%3dn,asum,aave,amax,amin); printf(数学的总成果是%4dt平均成果是%5.2ft最高分是%3dt最低分是%3dn,bsum,bave,bmax,bmin); printf(英语的总成果是%4dt平均成果是%5.2ft最高分是%3dt最低分是%3dn,csum,cave,cmax,cmin); 添加记录 printf(插入操作起先!n); temp=(ID *)malloc(sizeof(ID); printf(请输入学生的学号:n);scanf(%d,&temp-num); printf(请输入学生的姓名:n);scanf(%

15、s,&temp-name); printf(请输入学生的性别:n);scanf(%s,&temp-sex); printf(请输入学生的年龄:n);scanf(%d,&temp-age); printf(请输入学生的语文成果:n);scanf(%d,&temp-a); printf(请输入学生的数学成果:n);scanf(%d,&temp-b); printf(请输入学生的英语成果:n);scanf(%d,&temp-c); 查找记录 查找记录中须要看记录中是否有与输入数据匹配的数据。有则输出数据,没有则提示没有找到数据。 while(str!=p1-num & p1!=NULL) p2=p1

16、; p1=p1-next; 保存记录 fp=fopen(学生成果管理.txt,a+); fprintf(fp,学号 姓名 性别 年龄 语文 数学 英语 总成果 平均成果 最高分 最低分n); while(p-next!=NULL) fclose(fp); 11 fprintf(fp,%3d%5s%5s%5d%5d%5d%5d%5d%5d%5d%5dn, p+; p-num,p-name,p-sex, p-age,p-a,p-b,p-c,p-sum,p-ave,p-max, p-min); 2程序代码 内容一: #include #include int n,m,w; FILE *fp; str

17、uct item char name15; int snum5; int s; p21; struct school int num; char name15; int score; int mscore; int wscore; sch21; int integral15=7,5,3,2,1;/前五名得分 int integral23=5,3,2;/前三名得分 void input() int i,j=0,y,x; printf(请输入学校个数:); while(1) for(i=1;i scanf(%d,&n); if(n=1&n 12 printf(请输入男子项目数和女子项目数:n);

18、y=0; while(1) for(i=1;i scanf(%d%d,&m,&w); if(m=1&w=1)y=1; if(y)break; else printf(输入错误,请重新输入:n); printf(请输入第%d个项目的名称:,i); scanf(%s,& pi.name); while(1) printf(请输入第%d个项目的前%d名的学校编号:n,i,pi.s); if(pi.s=5) else for(j=1;j 13 printf(请输入第%d个项目选取的名次:,i); scanf(%d,& pi.s); if(pi.s=3|pi.s=5)break; else printf

19、(输入错误,请重新输入:n); for(j=1;j y=0; while(1) pi.snumj=x; schx.score+=integral1j-1; if(i scanf(%d,&x); if(x=1&x else printf(输入错误,请重新输入:n); y=0; while(1) pi.snumj=x; schx.score+=integral2j-1; if(i scanf(%d,&x); if(x=1&x else printf(输入错误,请重新输入:n); fp=fopen(运动会分数统计.txt,wb); fprintf(fp,编号 学校名称 总分 男子总分 女子总分n);

20、 for(i=1;i fprintf(fp, %d%10s%7d%7d%7dn,schi.num,schi.name,schi.score, schi.mscore,schi.wscore); fclose(fp); void bianhao() /按编号排序 int i,j; school t; for(i=0;i printf(n按编号排列:n); printf(编号 学校名称 总分 男子总分 女子总分n); for(i=1;i printf( %d%10s%7d%7d%7dn,schi.num,schi.name,schi.score, schi.mscore,schi.wscore);

21、 14 for(j=i;j if(schi.numschj.num) t=schi;schi=schj;schj=t; void zongfen() /按学校总分排序 int i,j; school t; for(i=1;i printf(n按学校总分排列:n); printf(编号 学校名称 总分 男子总分 女子总分n); for(i=1;i printf( %d%10s%7d%7d%7dn,schi.num,schi.name,schi.score, schi.mscore,schi.wscore); void malezf() /按学校男总分排序 int i,j; school t; f

22、or(i=1;i printf(n按学校男子总分排列:n); printf(编号 学校名称 总分 男子总分 女子总分n); for(i=1;i printf( %d%10s%7d%7d%7dn,schi.num,schi.name,schi.score, schi.mscore,schi.wscore); void femalezf() /按学校女总分排序 15 for(j=i;j if(schi.score t=schi; schi=schj; schj=t; for(j=i;j if(schi.mscore printf(n按学校女子总分排列:n); printf(编号 学校名称 总分 男

23、子总分 女子总分n); for(i=1;i printf( %d%10s%7d%7d%7dn,schi.num,schi.name,schi.score, schi.mscore,schi.wscore); printf(n); void cxsch() /查询某个学校成果 int i,y,s; printf(输入须要查询的学校编号:); y=0; while(1) printf(该学校相关信息:n); printf(编号 学校名称 总分 男子总分 女子总分n); for(i=1;i printf(n); 16 for(j=i;j if(schi.wscore=1&s printf( %d%1

24、0s%7d%7d%7dn,schi.num,schi.name, schi.score,schi.mscore,schi.wscore); break; void cxxm() /查询某个项目成果 int i,y,s; printf(输入须要查询的项目编号:); y=0; while(1) printf(%s前5名学校编号及名称为n,ps.name); printf(名次 编号 学校名称n); for(i=1;i void main() input(); int z; while(1) scanf(%d,&s); if(s=1&s case 7: exit(0); break; default

25、 :printf(输入错误,请重新输入!n); 内容二: #include void main() int i,j,a; printf(正面对上的牌有:n); for(i=1;i a=1; for(j=2;j if(i%j=0) a=-a; if(a=1) printf(%dn,i); 内容三: #include #include #include #include #define ID struct id struct id char name20; int num; char sex2; int age; int a; int b; int c; int sum; 18 double av

26、e; int min; int max; ID *next; stu100; int pc=1; FILE *fp; int asum=0,bsum=0,csum=0; int amax=0,bmax=0,cmax=0; int amin=100,bmin=100,cmin=100; float aave,bave,cave; void print(ID *head)/显示记录 ID *p; p=head; int temp; printf(显示结果是:n); printf(学号 姓名 性别 年龄 语文 数学 英语 总成果 平均成果 最高分 最低分n); if(head!=NULL) prin

27、tf(总体成果:n); printf(语文的总成果是%4dt平均成果是%5.2ft最高分是%3dt最低分是%3dn,asum,aave,amax,amin); printf(数学的总成果是%4dt平均成果是%5.2ft最高分是%3dt最低分是%3dn,bsum,bave,bmax,bmin); printf(英语的总成果是%4dt平均成果是%5.2ft最高分是%3dt最低分是%3dn,csum,cave,cmax,cmin); ID *insert(ID *head) /添加记录 ID *sort(ID *head); ID *temp,*p1,*p2,*p; 19 do while(p!=N

28、ULL); printf(%3d%5s%5s%5d%5d%5d%5d%6d%9.2f%7d%7dn,p-num, p=p-next; p-name,p-sex, p-age,p-a,p-b,p-c,p-sum,p-ave,p-max,p-min); int t; p=head; printf(插入操作起先!n); temp=(ID *)malloc(sizeof(ID); printf(请输入学生的学号:n);scanf(%d,&temp-num); printf(请输入学生的姓名:n);scanf(%s,&temp-name); printf(请输入学生的性别:n);scanf(%s,&te

29、mp-sex); printf(请输入学生的年龄:n);scanf(%d,&temp-age); printf(请输入学生的语文成果:n);scanf(%d,&temp-a); printf(请输入学生的数学成果:n);scanf(%d,&temp-b); printf(请输入学生的英语成果:n);scanf(%d,&temp-c); temp-sum=temp-a+temp-b+temp-c; temp-ave=(temp-sum)/3.0; temp-min=(temp-ab)?temp-a:temp-b)c?(temp-ab)?temp-a:temp-b):temp-c; temp-ma

30、x=(temp-atemp-b)?temp-a:temp-b)temp-c?(temp-atemp-b)?temp-a:temp-b):temp-c; if (head=NULL) else head=temp; temp-next=NULL; p1=head; p2=p1; p1=p1-next; p2-next=temp; temp-next=p1; p=head; do asum=asum+p-a; bsum=bsum+p-b; csum=csum+p-c; if(amin p-a) if(amax a) 20 t=amin; amin=p-a; t=amax; amax=p-a; if

31、(bmin p-b) if(bmax b) if(cmin p-c) if(cmax c) p=p-next; t=cmax; cmax=p-c; t=cmin; cmin=p-c; t=bmax; bmax=p-b; t=bmin; bmin=p-b; while(p!=NULL); aave=float(asum/pc); bave=float(bsum/pc); cave=float(csum/pc); printf(添加胜利!); pc+; return (head); ID *search(ID *head) /查找记录 ID *p1,*p2; int str; printf(请输入

32、要查找的学生的学号:); scanf(%d,&str); p1=head; while(str!=p1-num & p1!=NULL) 21 if(str=p1-num) else ID *sort(ID *head)/排序 int temp; char str100; double dbl; ID *p1,*p2; for(p1=head;p1!=NULL;p1=p1-next) p2=p1; p1=p1-next; printf(学生的学号:%dn,p1-num); printf(学生的姓名:%sn,p1-name); printf(学生的性别:%sn,p1-sex); printf(学生

33、的年龄:%dn,p1-age); printf(学生的语文成果:%dn,p1-a); printf(学生的数学成果:%dn,p1-b); printf(学生的外语成果:%dn,p1-c); printf(学生的总成果:%dn,p1-sum); printf(学生的平均成果:%.2lfn,p1-ave); printf(学生的最高分:%dn,p1-max); printf(学生的最低分:%dn,p1-min); printf(没有找到记录); return head; for(p2=p1-next;p2!=NULL;p2=p2-next) if(p1-aveave) temp=p1-num; p

34、1-num=p2-num; p2-num=temp; strcpy(str,p1-name); strcpy(p1-name,p2-name); strcpy(p2-name,str); temp=p1-a; p1-a=p2-a; 22 p2-a=temp; temp=p1-b; p1-b=p2-b; p2-b=temp; temp=p1-c; p1-c=p2-c; p2-c=temp; dbl=p1-ave; p1-ave=p2-ave; p2-ave=dbl; printf(排序胜利!n); return (head); ID *delet(ID *head) /删除记录 ID *p1,*

35、p2; int num; printf(请输入要删除的学生的学号:); scanf(%d,&num); p1=head; if (head=NULL) while(num!=p1-num & p1!=NULL) if(num=p1-num) 23 printf(没有记录n); goto end; p2=p1; p1=p1-next; if (p1=head) head=p1-next; p2-next=p1-next; else printf(删除胜利!n); pc-; else ID *amend(ID *head)/修改信息 ID *p; p=head; int findme; if(!h

36、ead) printf(请你输入要修改的学生学号:); scanf(%d,&findme); while(findme!=p-num) if(p) printf(请你输入新学号(原来是%d):,p-num); scanf(%d,&p-num); printf(请你输入新姓名(原来是%s):,p-name); scanf(%s,&p-name); getchar(); printf(请你输入新性别(原来是%s):,p-sex); scanf(%s,&p-sex); printf(请你输入新年龄(原来是%d):,p-age); scanf(%d,&p-age); printf(请你输入新的语文成果

37、(原来是%d分):,p-a); scanf(%d,&p-a); getchar(); printf(请你输入新的数学成果(原来是%d分):,p-b); scanf(%d,&p-b); getchar(); printf(请你输入新的英语成果(原来是%d分):,p-c); scanf(%d,&p-c); p-sum=(p-a+p-b+p-c); p-ave=p-sum/3.0; p+; printf(n=提示:没有资料可以修改!n); exit(0); printf(没有这个记录); end:return head; p-min=(p-ab)?p-a:p-b)c?(p-ab)?p-a:p-b):

38、p-c; 24 p-max=(p-ap-b)?p-a:p-b)p-c?(p-ap-b)?p-a:p-b):p-c; else ID *breaksys(ID *head) ID *p; p=head; fp=fopen(学生成果管理.txt,a+); fprintf(fp,学号 姓名 性别 年龄 语文 数学 英语 总成果 平均成果 最高分 最低分n); while(p-next!=NULL) fclose(fp); return(head); void main() ID *head=NULL; int choise; printf(tt* * * * * 信息管理与系统开发设计综合模拟实习

39、* * * * *n); printf(n); while(1) printf(n提示:资料修改胜利!n); return (head); printf(没有这个学号!); fprintf(fp,%3d%5s%5s%5d%5d%5d%5d%5d%5d%5d%5dn,p-num, p+; p-name,p-sex, p-age,p-a,p-b,p-c,p-sum,p-ave,p-max,p-min); printf(ttt 学生信息管理系统n); printf(tttn); printf(ttt 1 .浏 览 学 生 信 息n); printf(ttt 2 .添 加 学 生 信 息n); printf(ttt 3 .删 除 学 生 信 息n); printf(ttt 4 .查 找 学 生 信 息n); printf(ttt 5 .修 改 学 生 信 息n); printf(ttt 6 .学 生 成 绩 排 序n); printf(ttt 0 .退 出 系 统n); 25 printf

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 策划方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁