C语言课程设计.docx
《C语言课程设计.docx》由会员分享,可在线阅读,更多相关《C语言课程设计.docx(25页珍藏版)》请在冰点文库上搜索。
C语言课程设计
C语言课程设计
序号:
0301
学号:
10416313
课程设计
设计课程名称:
C语言课程设计
题目:
成绩统计系统进制转换系统
学生姓名:
韩建东
学院(系):
怀德学院专业班级:
计算机101
指导教师:
倪彤光
设计时间:
2011年6月13日~2011年6月27日
常州大学课程设计任务书一
怀德学院计算机专业计算机101班同学:
韩建东
一、设计题目成绩统计系统
二、设计内容
假设某校学生通讯录基本信息主要包括:
学号、姓名、通讯地址、电话等,本系统应能对这些基本信息进行管理,并要求具有以下功能:
1、具有学生信息添加功能
2、具有学生信息删除功能
3、具有学生信息浏览功能
4、具有学生信息查询功能
5、具有学生信息排序功能
三、基本要求
1、编写源程序的要求:
(1)能够实现任务书中的功能;
(2)尽可能使界面友好、直观、易操作
(3)源程序要有适当的注释,使程序容易阅读。
2、撰写“课程设计报告”,要求如下:
(1)封面:
统一采用《江苏工业学院课程设计说明书》封面格式
(2)任务书
(3)目录
(4)“课程设计报告”正文
3、课程设计验收要求:
(1)运行所设计的系统;
(2)回答有关问题;(3)提交课程设计报告;(4)提交源程序。
四、进度安排
1、系统分析、设计准备阶段:
4学时
2、编程调试阶段:
22学时
3、总结和书写课程设计报告阶段:
2学时
4、考核阶段:
2学时
指导教师:
倪彤光2011年6月7日
系主任:
苏兵2011年6月7日
教学院长:
杨长春2011年6月7日
常州大学课程设计任务书二
怀德学院计算机专业计算机101班同学:
韩建东
一、设计题目进制转换系统
二、设计内容
本系统要求具有以下功能:
1、具有将十进制转换为二进制功能
2、具有将十进制转换为十六进制功能
3、具有将二进制转换为十进制功能
4、具有将十六进制转换为十进制功能
三、基本要求
1、编写源程序的要求:
(1)能够实现任务书中的功能;
(2)尽可能使界面友好、直观、易操作
(3)源程序要有适当的注释,使程序容易阅读。
2、撰写“课程设计报告”,要求如下:
(1)封面:
统一采用《江苏工业学院课程设计说明书》封面格式
(2)任务书
(3)目录
(4)“课程设计报告”正文
3、课程设计验收要求:
(1)运行所设计的系统;
(2)回答有关问题;(3)提交课程设计报告;(4)提交源程序。
四、进度安排
1、系统分析、设计准备阶段:
4学时
2、编程调试阶段:
22学时
3、总结和书写课程设计报告阶段:
2学时
4、考核阶段:
2学时
指导教师:
倪彤光2011年6月7日
系主任:
苏兵2011年6月7日
教学院长:
杨长春2011年6月7日
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进制算法设计
先输入要转换为多少进制的数,在输入要转换的多少进制数
6C语言源程序代码
6.1成绩管理信息系统
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#defineMAX50
voidadd();
voiddel();
voidquery();
voidsort();
voidlist();
typedefstructemployee{
intnumber;
charname[20];
charsex[2];
intage;
charxueli[10];
floatsalary;
charaddress[30];
chartel[11];
}EMP;
voidmain()
{charc;
inti;
do
{
system("cls");
for(i=0;i<80;i++)
printf("*");
printf("\t1:
添加学生信息\n");
printf("\t2:
删除学生信息\n");
printf("\t3:
查询\n");
printf("\t4:
排序\n");
printf("\t5:
显示\n");
printf("\t6:
退出\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);
}
voidadd(){
EMPemploy;
FILE*fp;
/*以下为输入学生信息代码*/
printf("请输入学生信息");
printf("\n学生号(整数0001—1999):
");
scanf("%d",&employ.number);getchar();
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);
/*学生信息输入代码结束*/
printf("该学生信息为:
%d%s%s%d%s%.2f%s%s\n",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("filewriteerror\n");
fclose(fp);
/*保存学生信息代码结束*/
}
voidquery(){
intflag,number,count;
EMPemploy;
FILE*fp;
charname[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("cannotopenfileexit!
");
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.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("该学生不存在!
\n");
}
voiddel(){
intcount,i=0,number,j;
FILE*fp;
EMPemploy[MAX];
charflag;
if((fp=fopen("XX.out","rb"))==NULL)
{printf("cannotopenfileexit!
");
getchar();
exit(0);
}
/*从文件中读入数据*/
do{
count=fread(&employ[i],sizeof(employ[0]),1,fp);
if(count==1){i++;}
}while(count==1);
/*for(count=0;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
if(number==employ[count].number)break;
/*以下为删除代码*/
if(count
/*先将数组中的信息删除*/
for(j=count+1;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("cannotopenfileexit!
");
getchar();
exit(0);
}
fwrite(employ,sizeof(employ[0]),i-1,fp);
fclose(fp);
}
elseprintf("你输入的学生号不存在\n");
}
}
voidsort(){
EMPemploy[MAX],temp;
FILE*fp;
intcount,n=0,flag,i,j;
/*打开文件*/
if((fp=fopen("XX.out","rb"))==NULL)
{printf("cannotopenfileexit!
");
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;ifor(j=0;j{if(employ[j].number>employ[j+1].number)
{temp.number=employ[j].number;
strcpy(temp.name,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,temp.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;ifor(j=0;j{if(employ[j].number{temp.number=employ[j].number;
strcpy(temp.name,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,temp.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;iprintf("该学生信息为:
%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);
}
voidlist(){
EMPemploy;
FILE*fp;
intcount;
if((fp=fopen("XX.out","rb"))==NULL)
{printf("cannotopenfileexit!
");
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.name,employ.sex,employ.age,employ.xueli,employ.salary,employ.address,employ.tel);
}while(count==1);
fclose(fp);
}
6.2进制算法设计
#include
#include//malloc函数头文件
#defineINITSIZE100//初始分配的空间大小
typedefintElemType;//要据需要定义的数据类型
typedefstruct
{
ElemType*data;//用于存放元素的动态数组空间
inttop;//栈顶指针
intstacksize;//当前栈空间的长度
}linkStack;
voidinitstack(linkStack*s)//初始化栈
{
s->data=(ElemType*)malloc(INITSIZE*sizeof(ElemType));//分配空间
s->top=0;//栈顶指针初始化
s->stacksize=INITSIZE;//初始化栈的空间
}
intpush(linkStack*s,ElemTypex)//元素入栈
{
if(s->top>s->stacksize)//如果分配空间已满,从新分配
{
s->data=(ElemType*)realloc(s->data,(s->stacksize+1)*sizeof(ElemType));
if(!
s->data)return0;//分配失败,反回零
s->stacksize++;//增加空间大小
}
s->data[s->top++]=x;//把元素X入栈
return1;
}
intpop(linkStack*s)//元素出栈
{
if(s->top==0)return0;
returns->data[--s->top];
}
voidlist(linkStacks)//输出栈内的元素
{
inti,hex;
charchhex;
for(i=s.top-1;i>=0;i--)
if(s.data[i]>=10)//如果大于等于10则做如下处理
{
hex=s.data[i];
switch(hex)
{
case10:
chhex='A';break;
case11:
chhex='B';break;
case12:
chhex='C';break;
case13:
ch