您的位置:

c语言课程设计,c语言课程设计学生成绩管理系统

本文目录一览:

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

}

采纳哦~