C语言课程设计
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "ctype.h"
#include "conio.h"
#define M 50
typedef struct
{
char name[20]
char units[30]
char tele[20]
char m_ph[20]//手机
char rela[20] //关系
char email[50] //邮箱
char qq[20] //qq
}ADDRESS
int enter(ADDRESS t[])
void list(ADDRESS t[],int n)
void search(ADDRESS t[],int n)
int Delete(ADDRESS t[],int n)
int add(ADDRESS t[],int n)
void save(ADDRESS t[],int n)
int load(ADDRESS t[])
void display(ADDRESS t[])
void sort(ADDRESS t[],int n)
void qseek(ADDRESS t[],int n)
void print(ADDRESS temp)
int find(ADDRESS t[],int n,char *s)
int menu_select()
main()
{
system("color 37")//背景色为浅绿,前景色为白色
printf("欢迎使用通讯录管理系统\n")//欢迎界面
int i
ADDRESS adr[M]
int length
for()
{
switch(menu_select())
{
case 0:length=enter(adr)break
case 1:list(adr,length)break
case 2:search(adr,length)break
case 3:length=Delete(adr,length)break
case 4:length=add(adr,length) break
case 5:save(adr,length)break
case 6:length=load(adr)break
case 7:display(adr)break
case 8:sort(adr,length)break
case 9:qseek(adr,length)break
case 10:exit(0)
}
}
}
int menu_select()
{
char s[80]
int c
printf("按任意键进入菜单......\n")
getch()
system("cls")
printf(" ********************菜单***********************\n\n")
printf(" 0. 输入记录\n")
printf(" 1. 显示所有记录\n")
printf(" 2. 按姓名查找记录\n")
printf(" 3. 删除记录\n")
printf(" 4. 添加记录\n")
printf(" 5. 保存文件\n")
printf(" 6. 载入文件\n")
printf(" 7. 按序号显示记录\n")
printf(" 8. 记录排序\n")
printf(" 9. 查找记录\n")
printf(" 10. 退出\n")
printf(" ***********************************************\n")
do
{
printf("\n 请输入选项(0~10):")
scanf("%d",&c)
fflush(stdin)
}while(c<0 || c>10)
return c
}
int enter(ADDRESS t[])
{
int i,n
char num[30]
system("cls")
int flag=1
for()
{
flag = 1
system("cls")
printf("\n请输入记录数:\n")
scanf("%s", &num)
fflush(stdin)
for(int nima = 0num[nima]nima++)
{
if (num[nima] <48 || num[nima] >57)
{
flag = 0
break
}
}
if(flag==1)
break
}
n=atoi(num)
printf("请输入记录:\n")
printf("姓名 单位电话手机关系 邮箱 QQ\n")
printf("--------------------------------------------------------------------------\n")
for(i=0i<ni++)
{
scanf("%s%s%s%s%s%s%s",t[i].name,t[i].units,t[i].tele,t[i].m_ph,t[i].rela,t[i].email,t[i].qq)
fflush(stdin)
for(int k=0k<=19k++)
{
if((t[i].tele[k]>='a' && t[i].tele[k]<='z' )|| (t[i].tele[k]>='A' && t[i].tele[k]<='Z'))
{
printf("电话输入错误!请重新输入联系人信息\n")
i--
break
}
if((t[i].m_ph[k]>='a' && t[i].m_ph[k]<='z' )|| (t[i].m_ph[k]>='A' && t[i].m_ph[k]<='Z'))
{
printf("手机输入错误!请重新输入联系人信息\n")
i--
break
}
if((t[i].qq[k]>='a' && t[i].qq[k]<='z' )|| (t[i].qq[k]>='A' && t[i].qq[k]<='Z'))
{
printf("QQ输入错误!请重新输入联系人信息\n")
i--
break
}
}
printf("--------------------------------------------------------------------------\n")
}
return n
}
void list(ADDRESS t[],int n)
{
int i
system("cls")
printf("\n\n************************************************************************\n")
printf("姓名 单位电话手机关系 邮箱 QQ\n")
printf("--------------------------------------------------------------------------\n")
for(i=0i<ni++)
printf("%-10s%-14s%-12s%-12s%-10s%-12s%-14s\n",t[i].name,t[i].units,t[i].tele,t[i].m_ph,t[i].rela,t[i].email,t[i].qq)
if((i+1)%10==0)
{
printf("按任意键显示下一页\n")
getch()
}
printf("*********************************结束***********************************\n")
}
void search(ADDRESS t[],int n)
{
char s[20]
int i
system("cls")
printf("请输入待查找姓名:\n")
scanf("%s",s)
i=find(t,n,s)
if(i>n-1)
{
printf("未找到!!!\n")
getch()
}
else
print(t[i])
}
void print(ADDRESS temp)
{
system("cls")
printf("\n\n************************************************************************\n")
printf("姓名 单位电话手机关系 邮箱 QQ\n")
printf("--------------------------------------------------------------------------\n")
printf("%-10s%-14s%-12s%-12s%-10s%-12s%-14s\n",temp.name,temp.units,temp.tele,temp.m_ph,temp.rela,temp.email,temp.qq)
printf("*********************************结束***********************************\n")
getchar()
}
int find(ADDRESS t[],int n,char *s)
{
int i
system("cls")
for(i=0i<ni++)
{
if(strcmp(s,t[i].name)==0)
return i
}
return i
getch()
}
int Delete(ADDRESS t[],int n)
{
char s[20]
char ch
int i,j
system("cls")
printf("请输入待删除的姓名:\n")
scanf("%s",s)
i=find(t,n,s)
if(i>n-1)
printf("未找到!!!\n")
else
{
print(t[i])
printf("确定删除?(Y/N)\n")
scanf("%c",&ch)
if(ch=='y' || ch=='Y')
{
for(j=i+1j<nj++)
{
strcpy(t[j-1].name,t[j].name)
strcpy(t[j-1].units,t[j].units)
strcpy(t[j-1].tele,t[j].tele)
strcpy(t[j-1].m_ph,t[j].m_ph)
strcpy(t[j-1].rela,t[j].rela)
strcpy(t[j-1].email,t[j].email)
strcpy(t[j-1].qq,t[j].qq)
}
printf("删除成功!\n")
n--
}
}
getch()
return n
}
int add(ADDRESS t[],int n)
{
ADDRESS temp
int i,j,flag
char s[30]
system("cls")
printf("请输入记录:\n")
printf("************************************************************************\n")
printf("姓名 单位电话手机关系 邮箱 QQ\n")
printf("--------------------------------------------------------------------------\n")
scanf("%s%s%s%s%s%s%s",temp.name,temp.units,temp.tele,temp.m_ph,temp.rela,temp.email,temp.qq)
fflush(stdin)
printf("请输入插入位置的姓名: \n")
scanf("%s",s)
i=find(t,n,s)
for(j=n-1j>=ij--)
{
strcpy(t[j+1].name,t[j].name)
strcpy(t[j+1].units,t[j].units)
strcpy(t[j+1].tele,t[j].tele)
strcpy(t[j+1].m_ph,t[j].m_ph)
strcpy(t[j+1].rela,t[j].rela)
strcpy(t[j+1].email,t[j].email)
strcpy(t[j+1].qq,t[j].qq)
}
strcpy(t[i].name,temp.name)
strcpy(t[i].units,temp.units)
strcpy(t[i].tele,temp.tele)
strcpy(t[i].m_ph,temp.m_ph)
strcpy(t[i].rela,temp.rela)
strcpy(t[i].email,temp.email)
strcpy(t[i].qq,temp.qq)
n++
printf("添加成功!!!\n")
getch()
return n
}
void save(ADDRESS t[],int n)
{
int i
char outfile[30]
FILE *fp
system("cls")
printf("请输入待保存的文件名:\n")
scanf("%s",outfile)
if((fp=fopen(outfile,"wb"))==NULL)
{
printf("无法打开文件!\n")
exit(1)
}
printf("\n保存文件...\n")
fprintf(fp,"%d",n)
fprintf(fp,"\r\n")
for(i=0i<ni++)
{
fprintf(fp,"%-10s%-14s%-12s%-12s%-10s%-12s%-14s\n",t[i].name,t[i].units,t[i].tele,t[i].m_ph,t[i].rela,t[i].email,t[i].qq)
fprintf(fp,"\r\n")
}
fclose(fp)
printf("****保存成功!****\n")
getch()
}
int load(ADDRESS t[])
{
int i,n
char outfile[30]
FILE *fp
system("cls")
printf("请输入待载入的文件名:\n")
scanf("%s",outfile)
if((fp=fopen(outfile,"rb"))==NULL)
{
printf("无法打开文件!\n")
exit(1)
}
fscanf(fp,"%d",&n)
for(i=0i<ni++)
fscanf(fp,"%10s%14s%12s%12s%10s%12s%14s",t[i].name,t[i].units,t[i].tele,
t[i].m_ph,t[i].rela,t[i].email,t[i].qq)
fclose(fp)
printf("从文件读入数据成功!!!\n")
getch()
return n
}
void display(ADDRESS t[])
{
int id,n
char outfile[30]
FILE *fp
system("cls")
printf("请输入待载入的文件名:")
scanf("%s",outfile)
if((fp=fopen(outfile,"rb"))==NULL)
{
printf("无法打开文件!\n")
exit(1)
}
printf("请输入记录序号:\n")
scanf("%d",&id)
fscanf(fp,"%d",&n)
if(id>=0&&id<n)
{
fseek(fp,(id-1)*sizeof(ADDRESS),1)
print(t[id])
printf("\r\n")
}
else
{
printf(" %d号记录不存在!!!\n ",id)
getch()
}
fclose(fp)
}
void sort(ADDRESS t[],int n)
{
int i,j,flag
system("cls")
ADDRESS temp
for(i=0i<ni++)
{
flag=0
for(j=0j<n-1j++)
if((strcmp(t[j].name,t[j+1].name))>0)
{
flag=1
strcpy(temp.name,t[j].name)
strcpy(temp.units,t[j].units)
strcpy(temp.tele,t[j].tele)
strcpy(temp.m_ph,t[j].m_ph)
strcpy(temp.rela,t[j].rela)
strcpy(temp.email,t[j].email)
strcpy(temp.qq,t[j].qq)
strcpy(t[j].name,t[j+1].name)
strcpy(t[j].units,t[j+1].units)
strcpy(t[j].tele,t[j+1].tele)
strcpy(t[j].m_ph,t[j+1].m_ph)
strcpy(t[j].rela,t[j+1].rela)
strcpy(t[j].email,t[j+1].email)
strcpy(t[j].qq,t[j+1].qq)
strcpy(t[j+1].name,temp.name)
strcpy(t[j+1].units,temp.units)
strcpy(t[j+1].tele,temp.tele)
strcpy(t[j+1].m_ph,temp.m_ph)
strcpy(t[j+1].rela,temp.rela)
strcpy(t[j+1].email,temp.email)
strcpy(t[j+1].qq,temp.qq)
}
if(flag==0)break
}
printf("排序成功!!!\n")
}
void qseek(ADDRESS t[],int n)
{
char s[20]
int l,r,m
system("cls")
printf("\n请在查找前排序!\n")
printf("请输入待查找的姓名:\n")
scanf("%s",s)
l=0r=n-1
while(l<=r)
{
m=(l+r)/2
if(strcmp(t[m].name,s)==0)
{
print(t[m])
return
}
if(strcmp(t[m].name,s)<0)
l=m+1
else
r=m-1
}
if(l>r)
printf("未找到!\n")
getch()
}
c语言课程设计不难。但是看问题人好像没有学过C语言,那对你来说就难了。因为虽然C语言是一门很基础的课程,但是想要突击学会还是不太现实的,编程是需要一段代码一段代码敲出来,才会有实力提升的,很难突击出来。所以如果没学过C语言,C语言的课程设计难。
如果已经学习过了C语言,有了底子之后就不难了。原因有三:一:如果C语言底子不好的话,就去百度。C语言课程设计的题目都被大学生做烂了,网上到处是源代码。老师出的题就算找不到元题,也能找到类似的题,照猫画虎,就能够交差了。二,C语言课程设计是把前面的知识综合运用。如果C语言底子好,平时练习多,那么只要能够做到把课程设计题目细化为一个一个模块----函数,然后再把一个一个函数编辑出来,最后函数嵌套函数,一个课程设计就出来了。比如选课系统的设计。三:课程设计是个活的东西,底子好的人,你可以再原有程序加上很多内容,大大扩充自己的程序功能;一些不爱编程的人,完成基本功能也不难。所以不管怎么样,作业做出来还是简单的。
例如选课系统的设计
查看所有课程-------显示所有课程的函数。用数组,或者结构题,加上printf语句可以完成,这部分比较简单。
查询课程------查询函数。根据关键字来查询,也不难,如果用数组名来查询,只需要把全部课程的名字与查询课程对比就像。
选课-----选课函数。在储存有学生课程的数组中,在最后再加一个数组元素就可以了。
删除已选课程----删课函数。和添加差不多。
显示自己已选函数。----和现实所有课程差不多。
还有写入写出函数-----这个是不常用的东西,把一些信息在开始写入我们的程序中,在最后把我们修改的信息储存起来。
,,,,,,,
大体上一个简单的选课系统就成了。完成这个程度,如果学习了C语言,应该是不难的。当然,这个程序还有很多的可以提升的地方,只要发挥自己的想象力,去动手,完善自觉地程序,做出来一份报告是不难的,不断的改进,做出来一份拿出手的程序,也不是不可能的。
总结,C语言简单,但是不可突击。课程设计不难,想要做出一个好的课程设计作业出来,需要花点心思。
本人也不是什么高手,只是粗谈下自己的意见。
<stdio.h>
#include
<stdlib.h>
//输入十进制数N和转化的进制数M
void
trans(int
n,int
m)
{
if(n)
{
trans(n/m,m)
if(n%m<10)
printf("%c",n%m+'0')
else
printf("%c",n%m-10+'A')
}
}
void
main()
{
int
m,n,x
char
ch
printf("给定进制数M:")
scanf("%d",&m)
loop:
printf("给定一个%d进制的数X:",m)
fflush(stdin)
//一个M进制的数X转10进制
for(x=0)
{
ch=getchar()
if(ch>='0'
&&
ch<='9')
{
n=ch-'0'
}
else
if(ch>='a'
&&
ch<='z')
{
n=ch-'a'+10
}
else
if(ch>='A'
&&
ch<='Z')
{
n=ch-'A'+10
}
else
{
break
}
if(n>=m)
{
goto
loop
}
x=x*m+n
}
printf("转化成十进制数为:%d\n",x)
printf("给定要转化进制数M:")
scanf("%d",&m)
printf("转化成%d进制后的结果为:",m)
trans(x,m)
printf("\n")
}
其他的方法:
trans函数也可以这样写:
void
trans(int
n,int
m)
{
char
str[100]
int
i
for(i=0n>0i++)
{
if(n%m<10)
{
str[i]=n%m+'0'
}
else
{
str[i]=n%m-10+'A'
}
n=n/m
}
for(n=in>0n--)
{
printf("%c",str[n-1])
}
}