1、自动化与电气工程学院 C语言课程设计C语言程序设计课程设计目录1 基本题目- 0 -2 改错题目- 2 -a. 学生基本信息录入- 4 -1 基本题目1.1 题目判断101-200之间有多少个素数,并输出所有素数。1.2 题目分析 (1)程序分析:采用的算法是让n被i除(i的值从2变到sqrt(n),如果n能被2至sqrt(n)之中任何一个整数整除,则表示n肯定不是素数,不必再继续被后面的整数除,因此可以提前结束循环。若不能被其中的任一整数整除,则在完成最后一次循环后,i还要加1,因此i=k+1,然后才终止循环。若i的值k+1,则表明未曾被整除过,因此计数变量t加1。其中m用来控制每行输出10
2、个数。开始 (2)流程图: n=101,t=0 n200 N k=sqrt(n) i=2 Y ik t=t+1 Ni整除n 输出n i=i+1 Y 输出t N break Y结束 图1 基本题目流程图1.3 程序 #include#includeint main()int n,k,i,m=0,t=0;for(n=101;n=200;n=n+2)k=sqrt(n);for(i=2;i=k+1)printf(%d ,n);m=m+1;t=t+1;if(m%10=0)printf(n);printf(101200之间有%d个素数,t);printf(n);return 0;1.4 程序的运行结果 图
3、2 基本题目运行结果 开始2 改错题目 sum=0 i=02.1 改正后程序#include i5#include main() N输出sumint i; Y输入一个数 int sum=0,k;for(i=0;i5;i+) 结束 sum=sum+k printf(input a number:);scanf(%d,&k); i=i+1sum+=k;printf(the sum is %d,sum); 图3 改错题流程图2.2 程序运行结果 图4 改错题目运行结果 解释:该程序用以逐个输入5个数,然后求它们的和值。3 综合题目3.1 题目综合题目为:班级档案管理系统。3.2 数据结构 char
4、name20; char num15; char sex10; int age; char adds200; int tel; 下表构成本系统的基本数据库:姓名学号性别年龄备注电话charcharcharintcharint 图5 基本数据库3.3 程序的主要功能1. 本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:学号、姓名、性别、年龄、备注。2. 本系统显示这样的菜单:请选择系统功能项: a. 学生基本信息录入 b. 学生基本信息显示c. 学生基本信息保存d. 学生基本信息删除e. 学生基本信息修改(要求先输入密码)f. 学生基本信息查询(1) 按学号查询(2) 按姓名查询
5、(3) 按性别查询(4) 按年龄查询g. 退出系统3. 执行一个具体的功能之后,程序将重新显示菜单。4. 将学生基本信息保存到文件中。5. 进入系统之前要先输入密码。 开始 从菜单中选择 录入? NN 显示? Y N 保存? N 删除? Y N 修改? Y Y N 查询? N 退出 Y Y 调用相应子函数 结束 图6 综合题主函数流程图3.4 各函数的功能主函数通过switch语句分支进行选择。分别调用了函数Input(),Display(),Delete- a- record(),Query-a- record(),Change(),Writeto Text()来分别实现信息的录入,显示,删
6、除,查找,修改,保存的命令。 开始 开始 i=1 i=0 i10 in+1 输入 显示 Y i=i+1 i=i+1 返回 返回 图7 录入子函数流程图 图8 显示子函数流程图 开始 开始输入对象 选择查询方式 进入相应方式 满足 N 输入内容 删除对象 Y 查询结果 顺序更新 返回 返回 图9 删除子函数流程图 图10 查询子函数流程图 开始 开始 输入密码输入文件名 密码正确打开文件成功 N 输入姓名 Y 保存数据逐项进行 修改 关闭文件 修改成功 返回 返回图11 修改子函数流程图 图12 保存子函数流程图3.5 源程序#include #include#include typedef s
7、truct char sex10; /*性别*/ char name20; /*姓名*/ char num15; /*学号*/ char adds200; /*备注*/ int age; /*年龄*/ int tel; /*电话*/Person; Person pe80; int menu_select() char c; do system(cls); printf(tt 班级档案n); printf(tt n); printf(tt 1. 添加记录 n); printf(tt 2. 显示记录 n); printf(tt 3. 删除记录 n); printf(tt 4. 查询记录 n); p
8、rintf(tt 5. 修改记录 n); printf(tt 6. 保存记录 n); printf(tt 0. 退出程序 n); printf(tt n); printf(tt 请您选择(0-6):); c=getchar(); while(c6); return(c-0); int Input(Person per,int n) int i=0; char sign,x10; while(sign!=n&sign!=N) printf(t学号:); scanf(t%s,pern+i.num); printf(t姓名:); scanf(t%s,pern+i.name); printf(t性别:
9、); scanf(t%s,pern+i.sex); printf(t年龄:); scanf(t%d,&pern+i.age ); printf(t备注:); scanf(t%s,pern+i.adds); printf(t电话:); scanf(t%d,&pern+i.tel); printf(nt是否继续添加?(Y/N); scanf(t%c,&sign); i+; return(n+i); void Display(Person per,int n) int i; printf(-n); /*格式*/ printf( 班级中符合条件的同学为: n); printf(-n); for(i=1
10、;i1&i%10=0) printf(t-n); printf(t); system(pause); printf(t-n); printf(-n); system(pause); int Delete_a_record(Person per,int n) char s20; int i=0,j; printf(t请输入想删除记录中的名字:); scanf(%s,s); while(strcmp(peri.name,s)!=0&in) i+; if(i=n) printf(t(3)班级中没有此人!n); return(n); for(j=i;jn-1;j+) strcpy(perj.num,p
11、erj+1.num); strcpy(perj.name,perj+1.name); strcpy(perj.adds,perj+1.adds); strcpy(perj.sex,perj+1.sex); perj.age=perj+1.age; printf(ttt已经成功删除!n); return(n-1); void Query_a_record(Person per,int n) int m; printf(tn请选择查询方式:n); printf(tn); printf(t1-学号 n); printf(t2-姓名 n); printf(t3-性别 n); printf(t4-年龄
12、n); printf(t5-返回 n); printf(tn); printf(请选择:); scanf(%d,&m); while(m!=1&m!=2&m!=3&m!=4&m!=5) printf(输入错误,请重新选择:); scanf(%d,&m); if(m=1) char s20; int i=0; printf(t请输入想查询人的学号:); scanf(t%s,s); while(strcmp(peri.num,s)!=0&in) i+; if(i=n) printf(t(3)班级中没有此人!n); return; printf(t此人姓名: %sn,peri.name); prin
13、tf(t此人年龄: %dn,peri.age); printf(t此人性别: %sn,peri.sex); printf(t此人备注: %sn,peri.adds); ; if(m=2) char s20; int i=0; printf(t请输入想查询人的姓名:); scanf(t%s,s); while(strcmp(peri.name,s)!=0&in) i+; if(i=n) printf(t(3)班级中没有此人!n); return; printf(t此人学号: %sn,peri.num); printf(t此人年龄: %dn,peri.age); printf(t此人性别: %sn
14、,peri.sex); printf(t此人备注: %sn,peri.adds); ; if(m=3) char s20; int i=0; printf(t请输入想查询人的性别:); scanf(t%s,s); while(strcmp(peri.sex,s)!=0&in) i+; if(i=n) printf(t(3)班级中没有此人!n); return; printf(t此人学号: %sn,peri.num); printf(t此人年龄: %sn,peri.name); printf(t此人性别: %dn,peri.age); printf(t此人备注: %sn,peri.adds);
15、; if(m=4) int nian; int i=0; printf(t请输入想查询人的年龄:); scanf(%d,&nian); while(peri.age!=nian&in) i+; if(i=n) printf(t(3)班级中没有此人!n); return; printf(t此人学号: %sn,peri.num); printf(t此人年龄: %sn,peri.name); printf(t此人性别: %sn,peri.sex); printf(t此人备注: %sn,peri.adds); ;void Change(Person per,int m) char s20; int i
16、=0; char ch4,*p=199420,b;printf(请输入密码n);b=getchar();scanf(%s,ch); if(strcmp(ch,p)!=0)printf(密码错误n);else printf(密码正确n); printf(t请输入想修改的记录中的名字:); scanf(%s,s); while(strcmp(peri.name,s)!=0&im) i+; if(i=m) printf(t(3)班级中没有此人!n); return; printf(t编号:); scanf(t%s,peri.num); printf(t姓名:); scanf(t%s,peri.nam
17、e); printf(t性别:); scanf(t%s,peri.sex); printf(t年龄:); scanf(t%d,&peri.age); printf(t备注:); scanf(t%s,peri.adds); printf(t电话:); scanf(t%d,&peri.tel); printf(t修改成功!);void WritetoText(Person per,int n) int i=0; FILE *fp; /*定义文件指针*/ char filename20; /*定义文件名*/ printf(t保存到文件n); /*输入文件名*/ printf(t请输入所保存的文件名:
18、); scanf(t%s,filename); if(fp=fopen(filename,w)=NULL) printf(t无法打开文件n); system(pause); return; fprintf(fp,*班级档案*n); fprintf(fp, 学号 姓名 性别 年龄 备注 电话 n); fprintf(fp,-n); while(in) fprintf(fp,%-3st%-6st%-13st%-10dt%-20st%-10dn,peri.num,peri.name,peri.sex,peri.age,peri.adds,peri.tel ); i+; fprintf(fp,-n);
19、 fprintf(fp,*有%d条记录*n,n); fclose(fp); /*关闭文件*/ printf(保存成功!n); void main() /*主函数*/ int n=0; char *a=199420,b7;printf(请输入密码n);gets(b);if(strcmp(a,b)=0) for(;) switch(menu_select() case 1: printf(nt添加学生档案n); /*添加记录*/ n=Input(pe,n); break; case 2: printf(nttt 班级记录表n); /*显示记录*/ Display(pe,n); break; cas
20、e 3: printf(nt从班级中删除记录n); n=Delete_a_record(pe,n); /*删除记录*/ printf(t); system(pause); break; case 4: printf(nt在班级中查找记录n); Query_a_record(pe,n); /*查找记录*/ printf(t); system(pause); break; case 5: printf(nt修改班级中的记录n); Change(pe,n); /*修改数据*/ printf(t); system(pause); break; case 6: printf(nt保存功能n); Writ
21、etoText(pe,n); /*保存数据*/ printf(t); system(pause); break; case 0: printf(ntt谢谢使用,再见!n); /*结束程序 */ printf(ntt); system(pause); exit(0); else printf(error!n);3.6 程序运行结果 图13 综合题目运行结果4 结论与体会 结论:在本次课程设计中,老师给我们布置了相应题目。然后我通过查阅相关资料,以及通过在几次答疑时和同学讨论并请教老师把我的基本题目(判断101-200之间有多少个素数,并输出所有素数)和改错题目(逐个输入5个数,然后求它们的和值)
22、很好地做完了。然后和小组内的同学共同协作,通过讨论,请教老师,并查阅资料,扬长避短,把综合题目(班级档案管理系统)完成了。体会:通过这3周C课程设计,我认识到C语言这门课需要经常上机练习。在完成题目的时候锻炼了自己的实践能力,巩固了所学的理论知识。在过程中遇到了不少问题,但都在老师的帮助下解决了。在此次课程设计中。我体会到了编程的快乐与辛苦。当做第三题时,我体会到了合作学习的重要性与必要性。在其中因为自己能力的有限而有时会气馁,但最后还是通过查阅资料,小组讨论,请教老师完成了这次课程设计。让我认识到做事要认真,多思考,多交流,在失败时不气馁,时刻以坚定的毅力与足够的耐心对待每一个考验。总之,我认识到不管做啥事都应该静心去思考,和别人多交流,多请教别人,并踏实地走完每一步就能靠近自己的理想。最后感谢小组内的其他成员对我的帮助,以及费老师的耐心指导,这次真的学到了许多平时学不到的东西。- 15 -
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922