建材秒知道
登录
建材号 > 设计 > 正文

C语言课程设计

愉快的高山
醉熏的衬衫
2022-12-30 20:43:23

C语言课程设计

最佳答案
含蓄的雪糕
温暖的糖豆
2026-03-30 03:40:48

#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()

}

最新回答
狂野的宝马
单纯的香烟
2026-03-30 03:40:48

c语言课程设计不难。但是看问题人好像没有学过C语言,那对你来说就难了。因为虽然C语言是一门很基础的课程,但是想要突击学会还是不太现实的,编程是需要一段代码一段代码敲出来,才会有实力提升的,很难突击出来。所以如果没学过C语言,C语言的课程设计难。

如果已经学习过了C语言,有了底子之后就不难了。原因有三:一:如果C语言底子不好的话,就去百度。C语言课程设计的题目都被大学生做烂了,网上到处是源代码。老师出的题就算找不到元题,也能找到类似的题,照猫画虎,就能够交差了。二,C语言课程设计是把前面的知识综合运用。如果C语言底子好,平时练习多,那么只要能够做到把课程设计题目细化为一个一个模块----函数,然后再把一个一个函数编辑出来,最后函数嵌套函数,一个课程设计就出来了。比如选课系统的设计。三:课程设计是个活的东西,底子好的人,你可以再原有程序加上很多内容,大大扩充自己的程序功能;一些不爱编程的人,完成基本功能也不难。所以不管怎么样,作业做出来还是简单的。

例如选课系统的设计

查看所有课程-------显示所有课程的函数。用数组,或者结构题,加上printf语句可以完成,这部分比较简单。

查询课程------查询函数。根据关键字来查询,也不难,如果用数组名来查询,只需要把全部课程的名字与查询课程对比就像。

选课-----选课函数。在储存有学生课程的数组中,在最后再加一个数组元素就可以了。

删除已选课程----删课函数。和添加差不多。

显示自己已选函数。----和现实所有课程差不多。

还有写入写出函数-----这个是不常用的东西,把一些信息在开始写入我们的程序中,在最后把我们修改的信息储存起来。

,,,,,,,

大体上一个简单的选课系统就成了。完成这个程度,如果学习了C语言,应该是不难的。当然,这个程序还有很多的可以提升的地方,只要发挥自己的想象力,去动手,完善自觉地程序,做出来一份报告是不难的,不断的改进,做出来一份拿出手的程序,也不是不可能的。

总结,C语言简单,但是不可突击。课程设计不难,想要做出一个好的课程设计作业出来,需要花点心思。

本人也不是什么高手,只是粗谈下自己的意见。

单纯的刺猬
曾经的路灯
2026-03-30 03:40:48
首先假设最高成绩在第一个节点上,所以初始化指针指向第一个节点,然后遍历数组,如果遍历到的当前节点的对应成绩比指针指向的成绩高,那么就调整指针指向当前节点。最后遍历完整个列表后,即可得到所需要的结果,因为指针已经分别指向了各个最高成绩的节点出,输出即可。

有魅力的早晨
现实的往事
2026-03-30 03:40:48
#include

<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])

}

}