C语言课程设计
- 格式:doc
- 大小:300.50 KB
- 文档页数:21
序号: 03 01学号: 10416313课程设计设计课程名称:C语言课程设计题目:成绩统计系统进制转换系统学生姓名:韩建东学院(系):怀德学院专业班级:计算机101指导教师:倪彤光设计时间:2011 年6 月13日 2011 年 6 月27 日常州大学课程设计任务书一怀德学院计算机专业计算机101 班同学:韩建东常州大学课程设计任务书二怀德学院计算机专业计算机101 班同学:韩建东1.意义及功能 (5)1.1系统意义 (5)1.1.1成绩管理信息系统意义 (5)1.1.2进制算法设计意义 (5)1.2系统功能 (5)1.2.1成绩管理信息系统功能 (5)1.2.2进制算法设计功能 (5)2功能结构图 (6)2.1成绩管理信息系统 (6)2.2进制算法设计 (6)3.流程图 (7)3.1成绩管理信息系统流程图 (7)4调试运行 (8)4.1成绩管理信息系统 (8)4.2进制算法设计 (9)5使用说明 (10)5.1成绩管理信息系统 (10)5.2进制算法设计 (11)6 C语言源程序代码 (11)6.1成绩管理信息系统 (11)6.2进制算法设计 (18)7心得体会 (20)8实习日志 (20)9参考文献 (21)1.意义及功能1.1系统意义1.1.1 成绩管理信息系统意义为了方便学校用来统计学生的数据,为学校可以省下大量的人力和物力,同时也省下了时间。
1.1.2 进制算法设计意义为了方便广大初学学生更好的了解进制之间的转换。
1.2系统功能1.2.1成绩管理信息系统功能1、具有学生信息添加功能2、具有学生信息删除功能3、具有学生信息浏览功能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 进制算法设计先输入要转换为多少进制的数,在输入要转换的多少进制数6 C语言源程序代码6.1成绩管理信息系统#include "stdio.h"#include "stdlib.h"#include "string.h"#define MAX 50void add();void del();void query();void sort();void list();typedef struct employee{int number;char name[20];char sex[2];int age;char xueli[10];float salary;char address[30];char tel[11];}EMP;void main(){ char c;int i;do{system("cls");for(i=0;i<80;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请选择输入选项[1\\2\\3\\4\\5\\6]:\n");do{c=getchar();}while(c!='1'&&c!='2'&&c!='3'&&c!='4'&&c!='5'&&c!='6');getchar();switch(c){ case '1': 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学生号(整数0001—1999):");scanf("%d",&employ.number); getchar();printf("\n学生姓名:");gets();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);/* 学生信息输入代码结束*/printf("该学生信息为:%d %s %s %d %s %.2f %s %s\n",employ.number,,employ.sex,employ.age,empl oy.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 error\n");fclose(fp);/* 保存学生信息代码结束*/}void query(){int flag,number,count;EMP employ;FILE *fp;char name[10];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);}do{count=fread(&employ,sizeof(employ),1,fp);if(employ.number==number) {printf("该学生信息为:%d %s %s %d %s %.2f %s %s\n",employ.number,,employ.sex,employ.age,empl oy.xueli,employ.salary,employ.address,employ.tel);break;}}while(count==1);//printf("%d",flag);fclose(fp);}else{printf("%d",flag);}printf("该学生不存在!\n");}void del(){int count,i=0,number,j;FILE *fp;EMP employ[MAX];char flag;if((fp=fopen("XX.out","rb"))==NULL){printf("cannot open file exit! ");getchar();exit(0);}/* 从文件中读入数据*/do{count=fread(&employ[i],sizeof(employ[0]),1,fp);if(count==1) {i++;}}while(count==1);/* for(count=0;count<i;count++)printf("%d ",employ[count].number); */ fclose(fp);printf("\n请输入删除学生的学生号:");scanf("%d",&number); getchar();printf("\n你确认删除该学生吗(y/n)");flag=getchar();if(flag=='y') {/*找被删除的下标记为count*/for(count=0; count<i;count++)if(number==employ[count].number) break;/*以下为删除代码*/if(count<i){/*先将数组中的信息删除*/for(j=count+1;j<i;j++){employ[j-1].number=employ[j].number;strcpy(employ[j-1].address,employ[j].address);employ[j-1].age=employ[j].age;strcpy(employ[j-1].name,employ[j].name);employ[j-1].salary=employ[j].salary;strcpy(employ[j-1].sex,employ[j].sex);strcpy(employ[j-1].tel,employ[j].tel);strcpy(employ[j-1].xueli,employ[j].xueli);}/*写入删除后的数据*/if((fp=fopen("XX.out","wb"))==NULL){printf("cannot open file exit! ");getchar();exit(0);}fwrite(employ,sizeof(employ[0]),i-1,fp);fclose(fp);}else printf("你输入的学生号不存在\n");}}void sort(){EMP employ[MAX],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=fread(&employ[n],sizeof(employ[0]),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;i<n-1;i++)for(j=0;j<n-1-i;j++){if(employ[j].number>employ[j+1].number){ temp.number=employ[j].number;strcpy(,employ[j].name);strcpy(temp.sex,employ[j].sex);temp.age=employ[j].age;strcpy(temp.xueli,employ[j].xueli);temp.salary=employ[j].salary;strcpy(temp.address,employ[j].address);strcpy(temp.tel,employ[j].tel);employ[j].number=employ[j+1].number;strcpy(employ[j].name,employ[j+1].name);strcpy(employ[j].sex,employ[j+1].sex);employ[j].age=employ[j+1].age;strcpy(employ[j].xueli,employ[j+1].xueli);employ[j].salary=employ[j+1].salary;strcpy(employ[j].address,employ[j+1].address);strcpy(employ[j].tel,employ[j+1].tel);employ[j+1].number=temp.number;strcpy(employ[j+1].name,);strcpy(employ[j+1].sex,temp.sex);employ[j+1].age=temp.age;strcpy(employ[j+1].xueli,temp.xueli);employ[j+1].salary=temp.salary;strcpy(employ[j+1].address,temp.address);strcpy(employ[j+1].tel,temp.tel);}}}else{//降序排序for(i=0;i<n-1;i++)for(j=0;j<n-1-i;j++){if(employ[j].number<employ[j+1].number){ temp.number=employ[j].number;strcpy(,employ[j].name);strcpy(temp.sex,employ[j].sex);temp.age=employ[j].age;strcpy(temp.xueli,employ[j].xueli);temp.salary=employ[j].salary;strcpy(temp.address,employ[j].address);strcpy(temp.tel,employ[j].tel);employ[j].number=employ[j+1].number;strcpy(employ[j].name,employ[j+1].name);strcpy(employ[j].sex,employ[j+1].sex);employ[j].age=employ[j+1].age;strcpy(employ[j].xueli,employ[j+1].xueli);employ[j].salary=employ[j+1].salary;strcpy(employ[j].address,employ[j+1].address);strcpy(employ[j].tel,employ[j+1].tel);employ[j+1].number=temp.number;strcpy(employ[j+1].name,);strcpy(employ[j+1].sex,temp.sex);employ[j+1].age=temp.age;strcpy(employ[j+1].xueli,temp.xueli);employ[j+1].salary=temp.salary;strcpy(employ[j+1].address,temp.address);strcpy(employ[j+1].tel,temp.tel);}}}for(i=0;i<n;i++)printf("该学生信息为:%d %s %s %d %s %.2f %s %s\n",employ[i].number,employ[i].name,employ[i].sex,employ[i ].age,employ[i].xueli,employ[i].salary,employ[i].address,employ[i].tel);}void list(){EMP employ;FILE *fp;if((fp=fopen("XX.out","rb"))==NULL){printf(" cannot 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 %s\n",employ.number,,employ.sex,employ.age,empl oy.xueli,employ.salary,employ.address,employ.tel);}while(count==1);fclose(fp);}6.2 进制算法设计#include <stdio.h>#include <malloc.h>//malloc函数头文件#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 push(linkStack *s,ElemType x)//元素入栈{if(s->top>s->stacksize)//如果分配空间已满,从新分配{s->data=(ElemType *)realloc(s->data ,(s->stacksize+1)*sizeof(ElemType));if(!s->data)return 0;//分配失败,反回零s->stacksize++;//增加空间大小}s->data[s->top++]=x;//把元素X入栈}int pop(linkStack *s)//元素出栈{if(s->top==0)return 0;return s->data[--s->top];}void list(linkStack s)//输出栈内的元素{int i,hex;char chhex;for(i=s.top-1;i>=0;i--)if(s.data[i]>=10)//如果大于等于10则做如下处理{hex=s.data[i];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);}elseprintf("%d",s.data[i]);//如果不大于10直接输出printf("\n");}void main(){linkStack s;char chhex;int l,n,i,x;initstack(&s);printf("请输入一个要转换为n进制的数:");scanf("%d",&n);printf("请输入要转换的n进制数(注:在1~16之间):"); scanf("%d",&x);while(n>0){i=n%x;push(&s,i);}printf("对应的%d进制数为:",x);list(s);7心得体会C语言课程设计是C语言程序设计课程的一个重要的环节。