本文目录一览:
C语言课程设计难吗?C语言这门课难还是课程设计难?
c语言课程设计不难。但是看问题人好像没有学过C语言,那对你来说就难了。因为虽然C语言是一门很基础的课程,但是想要突击学会还是不太现实的,编程是需要一段代码一段代码敲出来,才会有实力提升的,很难突击出来。所以如果没学过C语言,C语言的课程设计难。
如果已经学习过了C语言,有了底子之后就不难了。原因有三:一:如果C语言底子不好的话,就去百度。C语言课程设计的题目都被大学生做烂了,网上到处是源代码。老师出的题就算找不到元题,也能找到类似的题,照猫画虎,就能够交差了。二,C语言课程设计是把前面的知识综合运用。如果C语言底子好,平时练习多,那么只要能够做到把课程设计题目细化为一个一个模块----函数,然后再把一个一个函数编辑出来,最后函数嵌套函数,一个课程设计就出来了。比如选课系统的设计。三:课程设计是个活的东西,底子好的人,你可以再原有程序加上很多内容,大大扩充自己的程序功能;一些不爱编程的人,完成基本功能也不难。所以不管怎么样,作业做出来还是简单的。
例如选课系统的设计
查看所有课程-------显示所有课程的函数。用数组,或者结构题,加上printf语句可以完成,这部分比较简单。
查询课程------查询函数。根据关键字来查询,也不难,如果用数组名来查询,只需要把全部课程的名字与查询课程对比就像。
选课-----选课函数。在储存有学生课程的数组中,在最后再加一个数组元素就可以了。
删除已选课程----删课函数。和添加差不多。
显示自己已选函数。----和现实所有课程差不多。
还有写入写出函数-----这个是不常用的东西,把一些信息在开始写入我们的程序中,在最后把我们修改的信息储存起来。
,,,,,,,
大体上一个简单的选课系统就成了。完成这个程度,如果学习了C语言,应该是不难的。当然,这个程序还有很多的可以提升的地方,只要发挥自己的想象力,去动手,完善自觉地程序,做出来一份报告是不难的,不断的改进,做出来一份拿出手的程序,也不是不可能的。
总结,C语言简单,但是不可突击。课程设计不难,想要做出一个好的课程设计作业出来,需要花点心思。
本人也不是什么高手,只是粗谈下自己的意见。
C语言课程设计
/******头文件(.h)***********/
#include "stdio.h" /*I/O函数*/
#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); /*如返回值为10则程序结束*/
}
}
}
/*菜单函数,函数返回值为整数,代表所选的菜单项*/
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(c0 || c10);/*选择项不在0~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 = 0; num[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=0;in;i++)
{
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=0;k=19;k++)
{
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=0;in;i++)
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) /*判断输出是否达到10条记录*/
{
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); /*调用find函数,得到一个整数*/
if(in-1) /*如果整数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();
}
/*查找函数,参数为记录数组和记录条数以及姓名s */
int find(ADDRESS t[],int n,char *s)
{
int i;
system("cls"); /*清屏*/
for(i=0;in;i++)/*从第一条记录开始,直到最后一条*/
{
if(strcmp(s,t[i].name)==0) /*记录中的姓名和待比较的姓名是否相等*/
return i; /*相等,则返回该记录的下标号,程序提前结结束*/
}
return i; /*返回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); /*调用find函数*/
if(in-1) /*如果in-1超过了数组的长度*/
printf("未找到!!!\n"); /*显示没找到要删除的记录*/
else
{
print(t[i]); /*调用输出函数显示该条记录信息*/
printf("确定删除?(Y/N)\n"); /*确认是否要删除*/
scanf("%c",ch); /*输入一个整数0或1*/
if(ch=='y' || ch=='Y') /*如果确认删除输入y*/
{
for(j=i+1;jn;j++) /*删除该记录,实际后续记录前移*/
{
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); /*将后一条记录的qq拷贝到前一条*/
}
printf("删除成功!\n");
n--; /*记录数减1*/
}
}
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); /*调用find,确定插入位置*/
for(j=n-1;j=i;j--) /*从最后一个结点开始向后移动一条*/
{
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); /*当前记录的qq拷贝到后一条*/
}
strcpy(t[i].name,temp.name); /*将新插入记录的姓名拷贝到第i个位置*/
strcpy(t[i].units,temp.units); /*将新插入记录的单位拷贝到第i个位置*/
strcpy(t[i].tele,temp.tele); /*将新插入记录的电话拷贝到第i个位置*/
strcpy(t[i].m_ph,temp.m_ph); /*将新插入记录的手机拷贝到第i个位置*/
strcpy(t[i].rela,temp.rela); /*将新插入记录的关系拷贝到第i个位置*/
strcpy(t[i].email,temp.email); /*将新插入记录的邮箱拷贝到第i个位置*/
strcpy(t[i].qq,temp.qq); /*将新插入记录的qq拷贝到第i个位置*/
n++; /*记录数加1*/
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=0;in;i++)
{
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=0;in;i++)
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=0idn) /*判断序号是否在记录范围内*/
{
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=0;in;i++)
{
flag=0; /*设标志判断是否发生过交换*/
for(j=0;jn-1;j++)
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; /*如果标志为0,说明没有发生过交换循环结束*/
}
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=0;r=n-1; /*设置左边界与右边界的初值*/
while(l=r) /*当左边界=右边界时*/
{
m=(l+r)/2; /*计算中间位置*/
if(strcmp(t[m].name,s)==0) /*与中间结点姓名字段做比较判是否相等*/
{
print(t[m]); /*如果相等,则调用print函数显示记录信息*/
return ; /*返回*/
}
if(strcmp(t[m].name,s)0) /*如果中间结点小*/
l=m+1; /*修改左边界*/
else
r=m-1; /*否则,中间结点大,修改右边界*/
}
if(lr) /*如果左边界大于右边界时*/
printf("未找到!\n"); /*显示没找到*/
getch();
}
c语言课程设计?
之前写过的,你可以拿去参考
#includestdio.h
#includestring.h
#includestdlib.h
typedef struct guest
{
int number;
char name[10];
int sum;
char time[5];
struct guest *next;
}GuestLink,*Pointer;
GuestLink stu[10];
int i,j,k;
void Insert(Pointer *Head);
void Search(Pointer Head);
void Update(Pointer Head);
void Delete(Pointer *Head);
void Show(Pointer Head);
void Sort(Pointer Head);
void Save(Pointer Head);
void Put(Pointer Head);
int main()
{
Pointer Head=NULL;
int i;
do{
printf("
");
printf("1---增加订餐客户信息
");
printf("2---查询订餐客户信息
");
printf("3---修改订餐客户信息
");
printf("4---删除订餐客户信息
");
printf("5---浏览客户订餐信息
");
printf("6---按照用餐时间升序排序
");
printf("7---保存订餐信息到数据文件
");
printf("8---查看数据文件中的订餐信息
");
printf("9---退出
");
printf("
");
printf("请选择1--9:");
scanf("%d",i);
switch(i)
{
case 1:Insert(Head);
break;
case 2:Search(Head);
break;
case 3:Update(Head);
break;
case 4:Delete(Head);
break;
case 5:Show(Head);
break;
case 6:Sort(Head);
break;
case 7:Save(Head);
break;
case 8:Put(Head);
break;
case 9:
break;
default:printf("选择错误!请重新选择!");
break;
}
}while(i!=9);
return 0;
}
void Insert(Pointer *Head)
{
int in_number;
Pointer p,q,r;
printf("请输入编号:
");
scanf("%d",in_number);
p=q=*Head;
while(p!=NULL)
{
if(p-number==in_number)
{
printf("已经有相同编号:");
return;
}
else
{
q=p;p=p-next;
}
}
r=(Pointer)malloc(sizeof(GuestLink));//没有*号
r-next=NULL;
if(r==NULL)
{
printf("分配空间失败");
return;
}
if(q==NULL)//如果是空表,判断空表用q!!!!
*Head=r;
else
{q-next=r;}
r-number=in_number;
printf("请输入姓名:
");
scanf("%s",r-name);
printf("请输入人数:
");
scanf("%d",r-sum);
printf("请输入时间:
");
scanf("%s",r-time);
}
/*
void Insert(Pointer *Head)
{int in_number;
Pointer p,q,r;
p=q=*Head;
printf("请输入号码:");
scanf("%d",in_number);
while(p!=NULL)
{
if(in_number==p-number)
{printf("已存在号码!");}
else
{q=p;p=p-next;}
}
r=(Pointer)malloc(sizeof GuestLink);
r-next=NULL;
if(q==NULL)
*Head=r;
else
q-next=r;
printf("请输入姓名:");
scanf("%s",r-name);
printf("请输入人数");
scanf("%f",r-sum);
printf("请输入时间");
scanf("%s",r-time);
}*/
void Search(Pointer Head)
{
int flag=1;
int number;
Pointer p;
printf("请输入要查询的编号:");
scanf("%d",number);
p=Head;
while(p!=NULLflag)
{
if(p-number==number)
{ printf("编号\t姓名\t人数\t时间
");
printf("%s\t",p-name);
printf("%d\t",p-sum);
printf("%s\t
",p-time);
flag=0;
}
else
p=p-next;
}
if(flag)
printf("没有查询到!");
}
/*
void Search(Pointer Head)
{
int flag=0;
int number;
Pointer p;
p=Head;
printf("请输入您要查找的编号:");
scanf("%f",number);
while(p!=NULLflag)
{
if(p-number==number)
{
printf("已查询到您要的编号");
flag=0;
}
else
{
p=p-next;
}
}
if(flag==1)
{printf("姓名:%s",p-name);
printf("编号:%f",p-number);
printf("人数:%f",p-sum);
printf("时间:%s",p-time);
}
else
{printf("没有查询到您要查询的编号!");}
}
*/
void Update(Pointer Head)
{
int flag=1;
int number;
Pointer p;
printf("请输入要修改的编号:");
scanf("%d",number);
p=Head;
while(p!=NULLflag)
{
if(p-number==number)
{
printf("请输入人数:");
scanf("%d",p-sum);
printf("请输入用餐时间:");
scanf("%s",p-time);
flag=0;
}
else
p=p-next;
}
if(flag)
printf("没有找到要修改的记录!");
}
//update与查询过程相似!!!
void Delete(Pointer *Head)
{
int flag=1;
int number;
Pointer p,q;
printf("请输入要删除的数据编号:");
scanf("%d",number);
p=q=*Head;
while(p!=NULLflag)
{
if(p-number==number)
{
if(p==*Head)
{
*Head=p-next;free(p);//删除结点后要及时释放内存!!!
}
else
{q-next=p-next;free(p);}
flag=0;
}
else
{q=p;p=p-next;}
}
if(flag)
printf("没有找到可以删除的数据!!");
}
/*
void Delete(Pointer *Head)
{
Pointer p,q;
p=q=*Head;
int number;
int flag=1;
printf("请输入您要删除的结点:");
scanf("%d",number);
while(p!=NULL)
{
if(p-number==number)
{ if(p==*Head)
{
*Head=p-next;free(p);
}
else
{
q-next=p-next;free(p);
}
flag=0;
}
else
{
q=p;p=p-next;
}
}
if(flag)
{printf("没有找到要删除的数据!");}
}
*/
void Show(Pointer Head)
{
Pointer p;
p=Head;
printf("编号\t姓名\t人数\t用餐时间
");
while(p!=NULL)
{
printf("%d\t",p-number);
printf("%s\t",p-name);
printf("%d\t",p-sum);
printf("%s\t
",p-time);
p=p-next;
}
}
void Sort(Pointer Head)
{
//三个for循环,第一个赋给结构数组 第二个排序,第三个输出
Pointer p;
p=Head;
int count=0;
GuestLink temp;
for(i=0;p!=NULL;i++)
{
strcpy(stu[i].name,p-name);
stu[i].number=p-number;
stu[i].sum=p-sum;
strcpy(stu[i].time,p-time);
count++;
p=p-next;
}
for(i=0;icount-1;i++)
{
k=i;
for(j=i+1;jcount;j++)
if(strcmp(stu[j].time,stu[k].time)0)k=j;
if(k!=i)
{temp=stu[i];stu[i]=stu[k];stu[k]=temp;}//一个字都不能改!!!!
//{temp=stu[k];stu[k]=stu[i];stu[i]=temp;}
}
printf("编号\t姓名\t人数\t用餐时间
");
for(i=0;icount;i++)
{
printf("%d\t",stu[i].number);
printf("%s\t",stu[i].name);
printf("%d\t",stu[i].sum);
printf("%s\t
",stu[i].time);
}
}
/*Head=p=stu;
while(p!=NULL)
{
printf("姓名:%-10s",p-name);
printf("人数:%-10d",p-sum);
printf("用餐时间:%-10s",p-time);
printf("编号:%-10d
",p-number);
p=p-next;
}*/
/*
void Sort(Pointer Head)
{
Pointer p;
p=Head;
GuestLink temp;
count=0;
while(p!=NULL)
{p=p-next;
count++;
}
p=Head;
while(p!=NULL)
{for(i=0;icount;i++)
{
stu[i].number=p-number;
strcpy(stu[i].name,p-name);
stu[i].sum=p-sum;
strcpy(stu[i].time,p-time);
}
p=p-next;
}
for(i=0;icount-1;i++)
{
k=i;
for(j=0;jcount;j++)
{if(strcmp(stu[j].time,stu[k].time)0)k=j;
if(k!=i)
{temp=stu[k];stu[k]=stu[i];temp=stu[i];}
}
}
}
*/
void Save(Pointer Head)
{
Pointer p;
FILE *fp;
p=Head;
for(i=0;p!=NULL;i++)
{
strcpy(p-name,stu[i].name);
p-number=stu[i].number;
p-sum=stu[i].sum;
strcpy(p-time,stu[i].time);
p=p-next;
}
if((fp=fopen("stud","w"))==NULL)
{printf("can't open !");}
p=Head;
while(p!=NULL)
{
if(fwrite(p,sizeof(GuestLink),1,fp)!=1)
printf("can't write!
");
p=p-next;
}
fclose(fp);
}
/*
void Save(Pointer Head)
{
FILE *fp;
Pointer p;
p=Head;
for(i=0;p!=NULL;i++)
{
stu[i].number=p-number;
strcpy(stu[i].name,p-name);
stu[i].sum=p-sum;
strcpy(stu[i].time,p-time);
p=p-next;
}
p=Head;
if((fp=fopen("stud","w"))==NULL)
{
printf("cam't open the file");
}
for(i=0;icount;i++)
if(fwrite(p,sizeof(GuestLink),1,fp)!=1)
{
printf("cant write");
}
fclose(fp);
}
*/
void Put(Pointer Head)
{
FILE *fp;
Pointer p;
p=Head;
if((fp=fopen("stud","r"))==NULL)
{printf("can't open the File
");}
printf("编号\t姓名\t人数\t用餐时间
");
while(p!=NULL)
{
if(fread(p,sizeof(GuestLink),1,fp)!=1)
{printf("can't read!");}
printf("%d\t",p-number);
printf("%s\t",p-name);
printf("%d\t",p-sum);
printf("%s\t
",p-time);
p=p-next;
}
fclose(fp);
}
采纳哦~