1、 序号: 03 01 学号: 10416313 课 程 设 计设计课程名称: C语言课程设计 题 目: 成绩统计系统 进制转换系统学 生 姓 名: 韩建东 学 院(系): 怀德学院 专 业 班 级: 计算机101 指 导 教 师: 倪彤光 设计时间: 年 6 月 13日 年 6 月 27 日常州大学课程设计任务书一怀德学院计算机 专业 计算机101 班 同学:韩建东一、设计题目 成绩统计系统 二、设计内容 假设某校学生通讯录基础信息关键包含:学号、姓名、通讯地址、电话等,本系统应能对这些基础信息进行管理,并要求含有以下功效: 1、含有学生信息添加功效2、含有学生信息删除功效 3、含有学生信息浏
2、览功效4、含有学生信息查询功效5、含有学生信息排序功效三、基础要求1、编写源程序要求:(1)能够实现任务书中功效;(2)尽可能使界面友好、直观、易操作(3)源程序要有合适注释,使程序轻易阅读。2、撰写“课程设计汇报”,要求以下: (1)封面:统一采取江苏工业学院课程设计说明书封面格式 (2)任务书 (3)目录 (4)“课程设计汇报”正文3、课程设计验收要求: (1)运行所设计系统;(2)回复相关问题;(3)提交课程设计汇报;(4)提交源程序。四、进度安排1、系统分析、设计准备阶段:4课时2、编程调试阶段:22课时3、总结和书写课程设计汇报阶段:2课时4、考评阶段:2课时指导老师: 倪彤光 年
3、6 月 7 日系主任: 苏兵 年 6 月 7 日教学院长: 杨长春 年 6 月 7 日常州大学课程设计任务书二怀德学院计算机 专业 计算机101 班 同学:韩建东一、设计题目 进制转换系统二、设计内容 本系统要求含有以下功效:1、含有将十进制转换为二进制功效2、含有将十进制转换为十六进制功效3、含有将二进制转换为十进制功效4、含有将十六进制转换为十进制功效三、基础要求1、编写源程序要求:(1)能够实现任务书中功效;(2)尽可能使界面友好、直观、易操作(3)源程序要有合适注释,使程序轻易阅读。2、撰写“课程设计汇报”,要求以下: (1)封面:统一采取江苏工业学院课程设计说明书封面格式 (2)任务
4、书 (3)目录 (4)“课程设计汇报”正文3、课程设计验收要求: (1)运行所设计系统;(2)回复相关问题;(3)提交课程设计汇报;(4)提交源程序。四、进度安排1、系统分析、设计准备阶段:4课时2、编程调试阶段:22课时3、总结和书写课程设计汇报阶段:2课时4、考评阶段:2课时指导老师: 倪彤光 年 6 月 7 日系主任: 苏兵 年 6 月 7 日教学院长: 杨长春 年 6 月 7 日1.意义及功效51.1系统意义51.1.1 成绩管理信息系统意义51.1.2 进制算法设计意义51.2系统功效51.2.1成绩管理信息系统功效51.2.2进制算法设计功效52功效结构图52.1 成绩管理信息系统
5、52.2 进制算法设计53.步骤图63.1成绩管理信息系统步骤图64调试运行64.1成绩管理信息系统64.2进制算法设计65使用说明65.1 成绩管理信息系统65.2 进制算法设计66 C语言源程序代码76.1 成绩管理信息系统76.2进制算法设计77心得体会88实习日志89参考文件91.意义及功效1.1系统意义1.1.1 成绩管理信息系统意义为了方便学校用来统计学生数据,为学校能够省下大量人力和物力,同时也省下了时间。1.1.2 进制算法设计意义为了方便广大初学学生愈加好了解进制之间转换。1.2系统功效1.2.1成绩管理信息系统功效1、含有学生信息添加功效2、含有学生信息删除功效 3、含有学
6、生信息浏览功效4、含有学生信息查询功效5、含有学生信息排序功效1.2.2 进制算法设计功效1、含有将十进制转换为二进制功效2、含有将十进制转换为十六进制功效3、含有将二进制转换为十进制功效4、含有将十六进制转换为十进制功效2功效结构图2.1 成绩管理信息系统输入学生信息添加学生信息删除学生信息显示学生信息排序学生信息 2.2 进制算法设计输入数据要转换进制输出数据3.步骤图3.1成绩管理信息系统步骤图4调试运行4.1成绩管理信息系统4.2进制算法设计5使用说明5.1成绩管理信息系统1是添加学生信息,2是删除学生信息,3是查询学生信息,4是排序学生信息,5是显示学生信息,6是退出程序5.2 进制
7、算法设计先输入要转换为多少进制数,在输入要转换多少进制数6 C语言源程序代码6.1成绩管理信息系统 #include stdio.h #include stdlib.h #include string.h #define MAX 50 void add(); void del(); void query(); void sort(); void list(); typedef struct employee int number;char name20;char sex2; int age;char xueli10;float salary;char address30;char tel11;
8、 EMP; void main() char c; int i; do system(cls); for(i=0;i80;i+) printf(*); printf(t 1: 添加学生信息n); printf(t 2: 删除学生信息n); printf(t 3: 查询n); printf(t 4: 排序n); printf(t 5: 显示n); printf(t 6: 退出n); printf(t请选择输入选项123456:n); do c=getchar(); while(c!=1&c!=2&c!=3&c!=4&c!=5&c!=6); getchar(); switch(c) case 1:
9、 add(); break; case 2: del(); break; case 3: query(); break; case 4: sort(); break; case 5: list(); break; case 6: exit(0); printf( 按任意键返回主菜单:n); getchar(); system(cls);while(1); void add() EMP employ;FILE *fp;/* 以下为输入学生信息代码*/printf(请输入学生信息);printf(n学生号(整数00011999):); scanf(%d,&employ.number);getcha
10、r(); printf(n学生姓名:);gets(employ.name); printf(n学生性别(请输入男或女):);gets(employ.sex); printf(n学生年纪:);scanf(%d,&employ.age); getchar(); printf(n学生成绩:);gets(employ.xueli); printf(n学生班级:);scanf(%f,&employ.salary);getchar(); printf(n学生地址:); gets(employ.address);printf(n学生电话:);gets(employ.tel); /* 学生信息输入代码结束*/
11、printf(该学生信息为:%d %s %s %d %s %.2f %s %sn,employ.number,employ.name,employ.sex,employ.age,employ.xueli,employ.salary,employ.address,employ.tel); /* 将学生信息保留到文件中*/ if(fp=fopen(XX.out,ab)=NULL)printf( ); getchar(); exit(0); if(fwrite(&employ,sizeof(employ),1,fp)!=1) printf(file write errorn); fclose(fp)
12、; /* 保留学生信息代码结束*/ void query() int flag,number,count; EMP employ; FILE *fp; char name10; printf(请输入查找方法:); printf(1-代表根据学生号 2-代表根据姓名n); scanf(%d,&flag);getchar(); if(flag=1) printf(请输入学生号:); scanf(%d,&number);getchar(); if(fp=fopen(XX.out,rb)=NULL) printf(cannot open file exit! ); getchar(); exit(0)
13、; do count=fread(&employ,sizeof(employ),1,fp); if(employ.number=number) printf(该学生信息为:%d %s %s %d %s %.2f %s %sn,employ.number,employ.name,employ.sex,employ.age,employ.xueli,employ.salary,employ.address,employ.tel); break; while(count=1); /printf(%d,flag); fclose(fp); else printf(%d,flag); printf(该学
14、生不存在!n); void del() int count,i=0,number,j;FILE *fp;EMP employMAX;char flag; if(fp=fopen(XX.out,rb)=NULL) printf(cannot open file exit! ); getchar(); exit(0); /* 从文件中读入数据*/ do count=fread(&employi,sizeof(employ0),1,fp); if(count=1) i+; while(count=1);/* for(count=0;counti;count+) printf(%d ,employco
15、unt.number); */ fclose(fp); printf(n请输入删除学生学生号:); scanf(%d,&number); getchar(); printf(n你确定删除该学生吗(y/n)); flag=getchar(); if(flag=y) /*找被删除下标识为count*/for(count=0; counti;count+) if(number=employcount.number) break; /*以下为删除代码*/ if(counti) /*先将数组中信息删除*/ for(j=count+1;ji;j+) employj-1.number=employj.num
16、ber; strcpy(employj-1.address,employj.address);employj-1.age=employj.age;strcpy(employj-1.name,employj.name);employj-1.salary=employj.salary;strcpy(employj-1.sex,employj.sex);strcpy(employj-1.tel,employj.tel);strcpy(employj-1.xueli,employj.xueli); /*写入删除后数据*/ if(fp=fopen(XX.out,wb)=NULL) printf(cann
17、ot open file exit! ); getchar(); exit(0); fwrite(employ,sizeof(employ0),i-1,fp); fclose(fp); else printf(你输入学生号不存在n); void sort() EMP employMAX,temp;FILE *fp; int count,n=0,flag,i,j; /*打开文件*/if(fp=fopen(XX.out,rb)=NULL) printf(cannot open file exit! ); getchar(); exit(0); /* 从文件中读入数据*/ do count=frea
18、d(&employn,sizeof(employ0),1,fp); if(count=1) n+; while(count=1); fclose(fp); printf(1-代表根据学生号升序排序 2-代表根据学生号降序排序n); scanf(%d,&flag);getchar(); if(flag=1) /升序排序 for(i=0;in-1;i+)for(j=0;jemployj+1.number) temp.number=employj.number; strcpy(temp.name,employj.name); strcpy(temp.sex,employj.sex); temp.ag
19、e=employj.age; strcpy(temp.xueli,employj.xueli); temp.salary=employj.salary; strcpy(temp.address,employj.address); strcpy(temp.tel,employj.tel); employj.number=employj+1.number; strcpy(employj.name,employj+1.name); strcpy(employj.sex,employj+1.sex); employj.age=employj+1.age; strcpy(employj.xueli,em
20、ployj+1.xueli); employj.salary=employj+1.salary; strcpy(employj.address,employj+1.address); strcpy(employj.tel,employj+1.tel); employj+1.number=temp.number; strcpy(employj+1.name,temp.name); strcpy(employj+1.sex,temp.sex); employj+1.age=temp.age; strcpy(employj+1.xueli,temp.xueli); employj+1.salary=
21、temp.salary; strcpy(employj+1.address,temp.address); strcpy(employj+1.tel,temp.tel); else /降序排序 for(i=0;in-1;i+)for(j=0;jn-1-i;j+)if(employj.numberemployj+1.number) temp.number=employj.number; strcpy(temp.name,employj.name); strcpy(temp.sex,employj.sex); temp.age=employj.age; strcpy(temp.xueli,emplo
22、yj.xueli); temp.salary=employj.salary; strcpy(temp.address,employj.address); strcpy(temp.tel,employj.tel); employj.number=employj+1.number; strcpy(employj.name,employj+1.name); strcpy(employj.sex,employj+1.sex); employj.age=employj+1.age; strcpy(employj.xueli,employj+1.xueli); employj.salary=employj
23、+1.salary; strcpy(employj.address,employj+1.address); strcpy(employj.tel,employj+1.tel); employj+1.number=temp.number; strcpy(employj+1.name,temp.name); strcpy(employj+1.sex,temp.sex); employj+1.age=temp.age; strcpy(employj+1.xueli,temp.xueli); employj+1.salary=temp.salary; strcpy(employj+1.address,
24、temp.address); strcpy(employj+1.tel,temp.tel); for(i=0;in;i+) printf(该学生信息为:%d %s %s %d %s %.2f %s %sn,employi.number,employi.name,employi.sex,employi.age,employi.xueli,employi.salary,employi.address,employi.tel); void list() EMP employ; FILE *fp; int count; if(fp=fopen(XX.out,rb)=NULL)printf( canno
25、t open file exit!); getchar(); exit(0); do count=fread(&employ,sizeof(employ),1,fp); if(count=1) printf(该学生信息为:%d %s %s %d %s %.2f %s %sn,employ.number,employ.name,employ.sex,employ.age,employ.xueli,employ.salary,employ.address,employ.tel); while(count=1); fclose(fp); 6.2 进制算法设计#include #include /ma
26、lloc函数头文件#define INITSIZE 100/初始分配空间大小typedef int ElemType;/要据需要定义数据类型typedef struct ElemType *data;/用于存放元素动态数组空间 int top;/栈顶指针 int stacksize;/目前栈空间长度linkStack;void initstack(linkStack *s)/初始化栈 s-data=(ElemType *)malloc(INITSIZE*sizeof(ElemType);/分配空间 s-top=0;/栈顶指针初始化 s-stacksize=INITSIZE;/初始化栈空间int
27、 push(linkStack *s,ElemType x)/元素入栈 if(s-tops-stacksize)/假如分配空间已满,从新分配 s-data=(ElemType *)realloc(s-data ,(s-stacksize+1)*sizeof(ElemType); if(!s-data)return 0;/分配失败,反回零 s-stacksize+;/增加空间大小 s-datas-top+=x;/把元素X入栈 return 1;int pop(linkStack *s)/元素出栈 if(s-top=0)return 0; return s-data-s-top;void list
28、(linkStack s)/输出栈内元素 int i,hex; char chhex; for(i=s.top-1;i=0;i-) if(s.datai=10)/假如大于等于10则做以下处理 hex=s.datai; switch(hex) case 10:chhex=A;break; case 11:chhex=B;break; case 12:chhex=C;break; case 13:chhex=D;break; case 14:chhex=E;break; case 15:chhex=F;break; printf(%c,chhex); else printf(%d,s.datai)
29、;/假如小于10直接输出 printf(n);void main() linkStack s; char chhex; int l,n,i,x; initstack(&s); printf(请输入一个要转换为n进制数:); scanf(%d,&n); printf(请输入要转换n进制数(注:在116之间):); scanf(%d,&x); while(n0) i=n%x; n=n/x; push(&s,i); printf(对应%d进制数为:,x); list(s);7心得体会C语言课程设计是C语言程序设计课程一个关键步骤。它是依据教学计划要求,在老师指导下,对学生实施程序设计训练必需过程,是
30、对前期课堂教学效果检验。其目标在于培养学生综合应用理论知识来分析和处理实际问题能力。经过此次课程,要求学生能够遵照软件开发过程基础规范,应用结构化程序设计方法,根据题目要求,独立完成设计任务,使学生愈加深刻地了解和掌握C语言基础概念、语言特点和编程技巧,为未来用C、VC进行软件开发打下良好基础。8实习日志6月13日:刚开始就听老师讲课,我就在下面看题目标要求,在和同学讨论下度过了这一天。6月14日:我不会做,问了问老师,老师大约讲了做思绪,我就按这思绪往下做。6月15日:老师在网络课堂上上传了资料,我按资料做了很多但还是没完成。6月16日:老师在网络课堂上又更新了资料,这下我最终做好第一题了,
31、只是还没完善。6月17日:老师又在网络课堂上部署了第二题,我认为还会给资料,就没认真做。6月20日:老师一直没给资料,我想不会给了,我就做了开头,等等再做。6月21日:我上网找了找资料,看看有什么能够利用。6月23日:好象网上也没什么可用,还好有学长能够参考,我又做了好多,只是没有完善。6月25日:我在自己努力下,还是每更新完善好,问问老师,老师叫我看看任务书和要求。6月26日:我最终做好了,就差打印了,我为了安全还是再完善完善吧。6月27日:还好没打印,老师上传了模板,我按那模板就更完善了,下午就去打印,就算是做好了。9参考文件1H.M.Deitel P.J.Deitel.,C程序设计教程。北京: 机械工程出版社,.7