C语言课程设计报告-陈阳
C语言课程设计报告.doc

C语言课程设计报告学号09590208 学号09590211 C语言课程设计设计说明书(题目)图书信息管理系统起止日期2010 年6 月7 日至2009 年 6 月11 日学生姓名石彦方闫振杰班级09级营销二班成绩指导教师签字管理工程系2009年6 月11 日目录一、课程设计目的------------------------------------------------3二、总体设计----------------------------------------------------3 程序设计组成框图---------------------------------------------3三、详细设计----------------------------------------------------4 1.主函数----------------------------------------------------4 2.内容的输入------------------------------------------------5 3.内容的显示------------------------------------------------6 4. 图书的排序------------------------------------------------6 5. 内容的查询------------------------------------------------6 6. 信息的修改------------------------------------------------7 7. 信息的删除------------------------------------------------8四、源程序------------------------------------------------------8五、执行结果----------------------------------------------------13六、心得体会----------------------------------------------------17七、参考资料----------------------------------------------------17一、设计目的首先,通过应用所学的c语言知识设计和编写“学生成绩管理系统”这个程序,熟练应用c语言编写各种比较简单的程序,让我们更加深刻的理解c语言中的知识。
C语言课程设计报告

C语言课程设计报告-------学生成绩简单管理程序一、系统菜单的主要功能(1)输入若干条记录(2)显示所有记录(3)按学号排序(4)插入一条记录(5)按姓名查找,删除一条记录(6)查找并显示一条记录(7)输出统计信息(新增)(8)从正文中添加数据到结构体数组中(9)将所有数据写入文件中(0)退出程序二、题目分析该题主要考察学生对结构体,指针,文件的操作,以及C语言算法的掌握,所以完成此道题目要求较强的设计能力,尤其是要有一种大局观的意识。
如何调程序也非常重要,通过这个程序可以学习到以前调试短程序没有的的经验。
菜单中的每一个选项都对应一个子程序,子程序的算法几乎囊获了所有C语言学过的技巧,下面就各个子程序中的功能进行说明:功能1和4的算法相似,输入一条记录到结构体中去,其中有一部很关键,就是通过gets 将所有的多余的字符,回车读去,否则就会出错。
功能2是显示所有的记录,通过循环输出,格式也比较重要。
功能3为按学号排序,因为学号定义成了字符数组的形式,因此在运用冒泡法进行排序的时候,要用到strcmp,strcpy等函数。
功能5为按姓名删除记录,先输入姓名,再一一比较,如果没有则返回失败信息,如果找到就将此记录都向前移一位,返回n-1。
功能6的算法在5中就已经体现了,输入姓名,一一比较。
功能7为新增的功能,因为考虑到原来给出的函数中竟然没有对学生成绩的统计功能,因此新增此功能,可以得出所有的记录个数,最高、最低、平均分,并输出相关的学生信息等。
功能8和9是对文件的操作,提前准备好数据。
三、程序正文部分#include<stdio.h> /*引用库函数*/#include<stdlib.h>#include<ctype.h>#include<string.h>typedef struct /*定义结构体数组*/{char num[10]; /*学号*/char name[20]; /*姓名*/int score; /*成绩*/}Student;Student stu[80]; /*结构体数组变量*/int menu_select() /*菜单函数*/{char c;do{system("cls"); /*运行前清屏*/printf("\t\t****Students' Grade Management System****\n"); /*菜单选择*/ printf("\t\t | 1. Input Records |\n");printf("\t\t | 2. Display All Records |\n");printf("\t\t | 3. Sort |\n");printf("\t\t | 4. Insert a Record |\n");printf("\t\t | 5. Delete a Record |\n");printf("\t\t | 6. Query |\n");printf("\t\t | 7. Statistic |\n");printf("\t\t | 8. Add Records from a Text File|\n");printf("\t\t | 9. Write to a Text file |\n");printf("\t\t | 0. Quit |\n");printf("\t\t*****************************************\n");printf("\t\t\tGive your Choice(0-9):");c=getchar(); /*读入选择*/}while(c<'0'||c>'9');return(c-'0'); /*返回选择*/}int Input(Student stud[],int n) /*输入若干条记录*/{int i=0;char sign,x[10]; /*x[10]为清除多余的数据所用*/while(sign!='n'&&sign!='N') /*判断*/{ printf("\t\t\tstudent's num:"); /*交互输入*/scanf("\t\t\t%s",stud[n+i].num);printf("\t\t\tstudent's name:");scanf("\t\t\t%s",stud[n+i].name);printf("\t\t\tstudent's score:");scanf("\t\t\t%d",&stud[n+i].score);gets(x); /*清除多余的输入*/printf("\t\t\tany more records?(Y/N)");scanf("\t\t\t%c",&sign); /*输入判断*/}return(n+i);}void Display(Student stud[],int n) /*显示所有记录*/{int i;printf("\t\t\t-----------------------------------\n"); /*格式头*/printf("\t\t\tnumber name score\n");printf("\t\t\t-----------------------------------\n");for(i=1;i<n+1;i++) /*循环输入*/{printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score); if(i>1&&i%10==0) /*每十个暂停*/{printf("\t\t\t-----------------------------------\n"); /*格式*/printf("\t\t\t");system("pause");printf("\t\t\t-----------------------------------\n");}}printf("\t\t\t");system("pause");}void Sort_by_num(Student stud[],int n) /*按学号排序*/{ int i,j,*p,*q,s;char t[10];for(i=0;i<n-1;i++) /*冒泡法排序*/for(j=0;j<n-1-i;j++)if(strcmp(stud[j].num,stud[j+1].num)>0){strcpy(t,stud[j+1].num);strcpy(stud[j+1].num,stud[j].num);strcpy(stud[j].num,t);strcpy(t,stud[j+1].name);strcpy(stud[j+1].name,stud[j].name);strcpy(stud[j].name,t);p=&stud[j+1].score;q=&stud[j].score;s=*p;*q=s;}}int Insert_a_record(Student stud[],int n) /*插入一条记录*/{char x[10]; /*清除多余输入所用*/printf("\t\t\tstudent's num:"); /*交互式输入*/scanf("\t\t\t%s",stud[n].num);printf("\t\t\tstudent's name:");scanf("\t\t\t%s",stud[n].name);printf("\t\t\tstudent's score:");scanf("\t\t\t%d",&stud[n].score);gets(x);n++;Sort_by_num(stud,n); /*调用排序函数*/printf("\t\t\tInsert Successed!\n"); /*返回成功信息*/return(n);}int Delete_a_record(Student stud[],int n) /*按姓名查找,删除一条记录*/ { char s[20];int i=0,j;printf("\t\t\ttell me his(her) name:"); /*交互式问寻*/scanf("%s",s);while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/if(i==n){ printf("\t\t\tnot find!\n"); /*返回失败信息*/return(n);}for(j=i;j<n-1;j++) /*删除操作*/{strcpy(stud[j].num,stud[j+1].num);strcpy(stud[j].name,stud[j+1].name);stud[j].score=stud[j+1].score;}printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/return(n-1);}void Query_a_record(Student stud[],int n) /*查找并显示一个记录*/{ char s[20];int i=0;printf("\t\t\tinput his(her) name:"); /*交互式输入*/scanf("\t\t\t%s",s);while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/if(i==n){ printf("\t\t\tnot find!\n"); /*输入失败信息*/return;}printf("\t\t\this(her) number:%s\n",stud[i].num); /*输出该学生信息*/printf("\t\t\this(her) score:%d\n",stud[i].score);}void Statistic(Student stud[],int n) /*新增功能,输出统计信息*/{ int i,j=0,k=0,sum=0;float aver; /*成绩平均值*/for(i=0;i<n;i++) /*循环输入判断*/{sum+=stud[i].score;if(stud[j].score>stud[i].score) j=i;if(stud[k].score<stud[i].score) k=i;}aver=1.0*sum/n;printf("\t\t\tthere are %d records.\n",n); /*总共记录数*/printf("\t\t\tthe hignest score:\n"); /*最高分*/printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j].num,stud[j].name,stud[j].score); printf("\t\t\tthe lowest score:\n"); /*最低分*/printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k].num,stud[k].name,stud[k].score); printf("\t\t\tthe average score is %5.2f\n",aver); /*平均分*/}int AddfromText(Student stud[],int n) /*从文件中读入数据*/{ int i=0,num;FILE *fp; /*定义文件指针*/char filename[20]; /*定义文件名*/printf("\t\t\tInput the filename:");scanf("\t\t\t%s",filename); /*输入文件名*/if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/{ printf("\t\t\tcann't open the file\n"); /*打开失败信息*/printf("\t\t\t");system("pause");return(n);}fscanf(fp,"%d",&num); /*读入总记录量*/while(i<num) /*循环读入数据*/{fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score); i++;}n+=num;fclose(fp); /*关闭文件*/printf("\t\t\tSuccessed!\n");printf("\t\t\t");system("pause");return(n);}void WritetoText(Student stud[],int n) /*将所有记录写入文件*/{int i=0;FILE *fp; /*定义文件指针*/char filename[20]; /*定义文件名*/printf("\t\t\tWrite Records to a Text File\n"); /*输入文件名*/printf("\t\t\tInput the filename:");scanf("\t\t\t%s",filename);if((fp=fopen(filename,"w"))==NULL) /*打开文件*/{printf("\t\t\tcann't open the file\n");system("pause");return;}fprintf(fp,"%d\n",n); /*循环写入数据*/while(i<n){fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score); i++;}fclose(fp); /*关闭文件*/printf("Successed!\n"); /*返回成功信息*/}void main() /*主函数*/{int n=0;for(;;){switch(menu_select()) /*选择判断*/{case 1:printf("\t\t\tInput Records\n"); /*输入若干条记录*/n=Input(stu,n);break;case 2:printf("\t\t\tDisplay All Records\n"); /*显示所有记录*/ Display(stu,n);break;case 3:printf("\t\t\tSort\n");Sort_by_num(stu,n); /*按学号排序*/printf("\t\t\tSort Suceessed!\n");printf("\t\t\t");system("pause");break;case 4:printf("\t\t\tInsert a Record\n");n=Insert_a_record(stu,n); /*插入一条记录*/printf("\t\t\t");system("pause");break;case 5:printf("\t\t\tDelete a Record\n");n=Delete_a_record(stu,n); /*按姓名查找,删除一条记录*/ printf("\t\t\t");system("pause");break;case 6:printf("\t\t\tQuery\n");Query_a_record(stu,n); /*查找并显示一个记录*/printf("\t\t\t");system("pause");break;case 7:printf("\t\t\tStatistic\n");Statistic(stu,n); /*新增功能,输出统计信息*/printf("\t\t\t");system("pause");break;case 8:printf("\t\t\tAdd Records from a Text File\n");n=AddfromText(stu,n); /*新增功能,输出统计信息*/ break;case 9:printf("\t\t\tWrite to a Text file\n");WritetoText(stu,n); /*循环写入数据*/printf("\t\t\t");system("pause");break;case 0:printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*结束程序*/ printf("\t\t\t");system("pause");exit(0);}}}四、函数调用关系图注:“→”代表调用Input函数打印链表记录Display函数输入若干条记录menu_select()函数选择菜单Sort_by_num函数显示所有记录Delete_a_record函数按姓名查找,删除一条记录Query_a_record查找并显示一条记录Statistic函数输出统计信息(新增)AddfromText函数从正文中添加数据到结构体数组中Main函数Insert_a_record插入一条记录WritetoText函数将所有数据写入文件中退出程序Reverse(head)函数按学号排序五、设计测试流程1、进入界面2、输入选项1,回车;按提示输入数据:3、回到主菜单;输入选项7,回车;输入文件名:data.txt,回车;出现成功提示,则读入文件操作成功。
C语言课程设计报告40888

一、设计思想首先建立主函数实现功能的选择,然后通过调用函数来分别实现;1.学生信息录入功能(以文件方式保存);2.学生信息浏览功能;3.学生信息查询功能(可以按学号,班级,性别分别进行查询,用子菜单,可显示多条记录);4.学生信息删除功能(按学号进行删除);5.学生信息修改功能(按学号修改);6.不及格学生成绩汇总功能。
二.概要设计1.模块介绍程序由十一个模块组成,分别是:主菜单模块、录入信息模块、保存信息模块、浏览信息模块、查询菜单模块、按学号查询模块、按姓名查询模块、按性别查询模块、修改信息模块、删除信息模块、不及格学生信息汇总模块。
2.函数功能lr()函数是实现信息录入功能的函数;bc()函数是将录入的信息保存到文件中额函数;ll()是实现浏览功能的函数;cx()是实现信息查询功能的函数,在cx()函数调用了xuehao(); xingming(); xingbie()这三个函数,这三个函数分别实现按学号查找、按姓名查找、按性别查找学生信息的功能;sc()函数是实现删除学生信息的功能;页脚内容1xg()实现信息修改功能;hz()实现不及格学生汇总的功能3、系统流程页脚内容2页脚内容3三.详细设计1、代码#include <stdio.h>#include <string.h>#include<stdlib.h>struct student{char num[13];char name[15];char cla[10];int age;char sex[4];char bir[8];char addr[15];页脚内容4char tele[15];char course[10];int score;};int n=0;struct student stu[100]; //定义变量struct student *p;FILE *fp;void lr();void ll();void cx();void sc();void xg();void hz();void bc();void xuehao();void xingming();页脚内容5void xingbie(); //定义函数void main() //主函数{int z;printf("+---------------------------+\n");printf("| 欢迎使用学生信息管理系统|\n");printf("+---------------------------+\n");printf("提示:为保证您的操作得到保存,请按正常顺序退出系统^_^\n");do{printf("\n\t\t\t--------------------------------\n");printf("\t\t\t+ 主菜单|\n");printf("\t\t\t--------------------------------\n");printf("\t\t\t+ [1]----录入学生信息|\n");printf("\t\t\t+ [2]----浏览学生信息|\n");printf("\t\t\t+ [3]----查询学生信息|\n");页脚内容6printf("\t\t\t+ [4]----删除学生信息|\n"); printf("\t\t\t+ [5]----修改学生信息|\n"); printf("\t\t\t+ [6]----不及格学生成绩汇总|\n"); printf("\t\t\t+ [0]----退出系统|\n"); printf("\t\t\t--------------------------------\n");printf("请输入您的选择:");scanf("%d", &z);switch(z){case 0 : break;case 1 :lr();break;case 2 :ll();break;case 3 :cx();break;case 4 :sc();break;case 5 :xg();break;case 6 :hz();break; //函数调用default:printf("\n无效选项!");页脚内容7}}while(z!= 0);}void lr() //录入函数{ int y;if(n==0)p=stu;printf("--------------------\n");printf("\n\t\t请输入学生的学号:");scanf("%s",&stu[n].num);printf("\n\t\t请输入学生的姓名:");scanf("%s",&stu[n].name);printf("\n\t\t请输入学生的班级:");scanf("%s",&stu[n].cla);printf("\n\t\t请输入学生的年龄:");页脚内容8scanf("%d",&stu[n].age);printf("\n\t\t请输入学生的性别:");scanf("%s",&stu[n].sex);printf("\n\t\t请输入学生的出生年月:");scanf("%s",&stu[n].bir);printf("\n\t\t请输入学生的地址:");scanf("%s",&stu[n].addr);printf("\n\t\t请输入学生的电话:");scanf("%s",&stu[n].tele);printf("\n\t\t请输入学生的课程:");scanf("%s",&stu[n].course);printf("\n\t\t请输入学生的成绩:");scanf("%d",&stu[n].score); //输入学生的信息n++;p++;printf("请输入0以保存信息:");scanf("%d",&y);页脚内容9if(y==0)bc(); //调用函数elseprintf("无效选项");return;}void bc()/*保存函数*/{int i;if ((fp=fopen("fstudent.txt","wb"))==NULL) //打开一个只写文件,将要打开的文件的指针赋给fp,使fp 与文件相联系{printf("\n\t\t文件打开失败");exit(0);}for (i=0;i<100;i++){ fwrite(&stu[i],sizeof(struct student),1,fp);//把信息输出大奥fp所指向的文件中,返回值为写到fp文件中页脚内容10的数据项的个数}fclose(fp); //关闭fp所指的文件,有错返回非0,否则返回0 printf("\n\t\t通讯录文件已保存");printf("\n\t\t按回车键退出程序\n\t\t");}void ll()/*浏览函数*/{int i;if(n!=0){printf("\n\t\t*************** 以下为学生管理系统所有信息************");for (i=0;i<n;i++){页脚内容11printf("\n\t\t学号:%s",stu[i].num);printf("\n\t\t姓名:%s",stu[i].name);printf("\n\t\t班级:%s",stu[i].cla);printf("\n\t\t年龄:%d",stu[i].age);printf("\n\t\t性别:%s",stu[i].sex);printf("\n\t\t出生年月:%s",stu[i].bir);printf("\n\t\t地址:%s",stu[i].addr);printf("\n\t\t电话:%s",stu[i].tele);printf("\n\t\t课程:%s",stu[i].course);printf("\n\t\t成绩:%d",stu[i].score);printf("\t\t\n");}printf("\n\t\t************************************************"); }}void cx()/*查询函数*/页脚内容12{int c;do{ printf("\n");printf("+--------------------+\n");printf("| 按学号查询请按1 |\n");printf("| 按姓名查询请按2 |\n");printf("| 按性别查询请按3 |\n");printf("| 取消请按0 |\n");printf("+--------------------+\n");printf("请输入您的选择:");scanf("%d", &c);switch(c){case 0:break;case 1:xuehao();break;case 2:xingming();break;页脚内容13case 3:xingbie();break; //调用函数default:printf("\n提示:无效选项!");break;}}while(c!= 0);}void xingming()//按姓名查询{int i;int j=0;char name[15];printf("\n\t\t****************** 按姓名查找******************"); printf("\n\t\t请输入要查学生的姓名:");scanf("%s",name);页脚内容14for(i=0;i<n;i++)if(strcmp(name,stu[i].name)==0) //比较两个字符串,若相等,返回0 {j++;printf("\n\t\t************** 以下是您查找的学生信息**********"); printf("\n\t\t学号:%s",stu[i].num);printf("\n\t\t姓名:%s",stu[i].name);printf("\n\t\t班级:%s",stu[i].cla);printf("\n\t\t年龄:%d",stu[i].age);printf("\n\t\t性别:%s",stu[i].sex);printf("\n\t\t出生年月:%s",stu[i].bir);printf("\n\t\t地址:%s",stu[i].addr);printf("\n\t\t电话:%s",stu[i].tele);printf("\n\t\t课程:%s",stu[i].course);printf("\n\t\t成绩:%d",stu[i].score);printf("\n\t\t************************************************"); printf("\n\t\t是否继续查询?(y/n)");页脚内容15getchar(); //输入选择if (getchar()=='y')xingming(); //函数的递归调用return ;}if(j==0){printf("\n\t\t未查找该学生信息:");printf("\n\t\t按回车键返回菜单:");getchar();getchar();return;}printf("\n\t\t按回车键返回主菜单:");getchar();getchar();}页脚内容16void xuehao()//*按学号查询{int i;int j=0;char num[13];printf("\n\t\t****************** 按学号查找******************"); printf("\n\t\t请输入要查学生的学号:");scanf("%s",&num);for(i=0;i<n;i++)if(strcmp(num,stu[i].num)==0){j++;printf("\n\t\t************** 以下是您查找的学生信息**********"); printf("\n\t\t学号:%s",stu[i].num);printf("\n\t\t姓名:%s",stu[i].name);printf("\n\t\t班级:%s",stu[i].cla);页脚内容17printf("\n\t\t年龄:%d",stu[i].age);printf("\n\t\t性别:%s",stu[i].sex);printf("\n\t\t出生年月:%s",stu[i].bir);printf("\n\t\t地址:%s",stu[i].addr);printf("\n\t\t电话:%s",stu[i].tele);printf("\n\t\t课程:%s",stu[i].course);printf("\n\t\t成绩:%d",stu[i].score);printf("\n\t\t************************************************"); printf("\n\t\t是否继续查询?(y/n)");getchar();if (getchar()=='y')xuehao(); //函数的递归调用return ;}if(j==0){printf("\n\t\t未查找该学生信息:");页脚内容18printf("\n\t\t按回车键返回菜单:");getchar();getchar();return;}printf("\n\t\t按回车键返回主菜单:");getchar();getchar();}void xingbie()//按性别查询{int i;int j=0;char sex[4];printf("\n\t\t****************** 按性别查找******************"); printf("\n\t\t请输入要查学生的性别:");页脚内容19scanf("%s",&sex);for(i=0;i<n;i++){for(i=0;i<n;i++)if(strcmp(sex,stu[i].sex)==0){j++;printf("\n\t\t************** 以下是您查找的学生信息**********"); printf("\n\t\t学号:%s",stu[i].num);printf("\n\t\t姓名:%s",stu[i].name);printf("\n\t\t班级:%s",stu[i].cla);printf("\n\t\t年龄:%d",stu[i].age);printf("\n\t\t性别:%s",stu[i].sex);printf("\n\t\t出生年月:%s",stu[i].bir);printf("\n\t\t地址:%s",stu[i].addr);printf("\n\t\t电话:%s",stu[i].tele);printf("\n\t\t课程:%s",stu[i].course);printf("\n\t\t成绩:%d",stu[i].score);页脚内容20printf("\n\t\t************************************************"); }printf("\n\t\t是否继续查询?(y/n)");getchar();if (getchar()=='y')xingbie(); //函数的递归调用return;}if(j==0){printf("\n\t\t未查找该学生信息:");printf("\n\t\t按回车键返回菜单:");getchar();getchar();return;}printf("\n\t\t按回车键返回主菜单:");页脚内容21getchar();getchar();}void xg()/*修改函数*/{char num[13];char name[15];char cla[10];int age;char sex[4];char bir[8];char addr[15];char tele[15];char course[10];char score;int i,j,c;页脚内容22if(n!=0){printf("请输入您要修改的学生的学号:");scanf("%s", &num);printf("\n");for(i=0;i<n;i++)if(strcmp(num,stu[i].num)==0){j=i;printf("请选择您要修改的学生的信息内容:\n");printf("+--------------------------+\n");printf("| 姓名请按1 |\n");printf("| 班级请按2 |\n");printf("| 年龄请按3 |\n");printf("| 性别请按4 |\n");printf("| 出生年月请按5 |\n");printf("| 地址请按6 |\n");printf("| 电话请按7 |\n");页脚内容23printf("| 课程请按8 |\n");printf("| 成绩请按9 |\n");printf("| 取消请按0 |\n");printf("+--------------------------+\n");printf("请输入您的选择:");scanf("%d", &c);printf("\n");switch(c){case 0:break;case 1:printf("请输入新姓名:");scanf("%s",stu[j].name);strcpy(name,stu[j].name); //复制字符串,返回namebreak;case 2:printf("请输入新班级:");scanf("%s",stu[j].cla);页脚内容24strcpy(cla,stu[j].cla);break;case 3:printf("请输入新年龄:");scanf("%d",&stu[j].age);strcpy(age,stu[j].age);break;case 4:printf("请输入新性别:");scanf("%s",stu[j].sex);strcpy(sex,stu[j].sex);break;case 5:printf("请输入新出生年月:");scanf("%s",stu[j].bir);strcpy(bir,stu[j].bir);break;case 6:printf("请输入新地址:");scanf("%s",stu[j].addr);strcpy(addr,stu[j].addr);break;case 7:printf("请输入新电话:");scanf("%s",stu[j].tele);strcpy(tele,stu[j].tele);break;页脚内容25case 8:printf("请输入新课程:");scanf("%s",stu[j].course);strcpy(course,stu[j].course);break;case 9:printf("请输入新成绩:");scanf("%d",stu[j].score);strcpy(score,stu[j].score);break;default:printf("\n无效选项!");break;}}printf("\n\t\t按回车键返回主菜单:");getchar();getchar(); //输入回车键return;}elseprintf("提示:无学生数据,请输入数据!");页脚内容26}void sc()/*删除函数*/{int e=0;char name[15];int j;int i;char id[20];printf("\n\t\t请输入要删除联系人姓名:");scanf("%s",name);getchar();for (i=0;i<n;i++){if (strcmp(stu[i].name,name)==0){printf("\n\t\t以下是您要删除的学生纪录:");页脚内容27e++;printf("\n\t\t****************************");printf("\n\t\t学号:%s",stu[i].num);printf("\n\t\t姓名:%s",stu[i].name);printf("\n\t\t班级:%s",stu[i].cla);printf("\n\t\t年龄:%d",stu[i].age);printf("\n\t\t性别:%s",stu[i].sex);printf("\n\t\t出生年月:%s",stu[i].bir);printf("\n\t\t地址:%s",stu[i].addr);printf("\n\t\t电话:%s",stu[i].tele);printf("\n\t\t课程:%s",stu[i].course);printf("\n\t\t成绩:%d",stu[i].score);printf("\n\t\t****************************");printf("\n\t\t是否删除?(y/n)");if (getchar()=='y'){for (j=i;j<n;j++)页脚内容28stu[j]=stu[j+1];n--;printf("\n\t\t删除成功");printf("\n\t\t是否继续删除?(y/n)");getchar();if (getchar()=='y')sc();}}}if (e==0){printf("\n\t\t没有该学生的纪录");printf("\n\t\t是否继续删除?(y/n)");if (getchar()=='y')sc(); //函数的递归调用}页脚内容29}void hz()/*汇总函数*/{int score;int i;int *p;for(i=0;i<n;i++){for(p=&stu[i].score;p<(stu[i].score+n);p++) //用指针变量指向数组元素printf("%d",*p); //*p即为学生的成绩if(*p<60){printf("\n\t\t************** 以下是不及格学生的信息**********"); printf("\n\t\t学号:%s",stu[i].num);printf("\n\t\t姓名:%s",stu[i].name);printf("\n\t\t班级:%s",stu[i].cla);printf("\n\t\t年龄:%d",stu[i].age);printf("\n\t\t性别:%s",stu[i].sex);页脚内容30printf("\n\t\t出生年月:%s",stu[i].bir);printf("\n\t\t地址:%s",stu[i].addr);printf("\n\t\t电话:%s",stu[i].tele);printf("\n\t\t课程:%s",stu[i].course);printf("\n\t\t成绩:%d",stu[i].score);printf("\n\t\t************************************************"); }}}四、总结页脚内容31在这为期一周的课程设计中,我发现了很多问题,也正是因为发现了问题,我也学到了很多东西。
C语言课程设计报告(最终版)

C语言课程设计报告题目:网络收费管理系统设计班级:计 111学号:110773110776110768姓名:李洋宇葛一波叶博兴成绩:2012 年7 月1 日·北京课程设计任务书一、基本要求1.1 设计目的课程设计是C语言理论课程的延伸,要求学生综合运用C语言知识,如数组、指针、函数、结构体、文件等,完成一个综合应用程序的开发。
锻炼学生分析问题解决问题的能力,知识的综合运用能力和团队合作的能力。
1.2 设计时间设计时间2周,集中上机,同学利用上机时间查阅资料,编制程序,完成设计。
为方便同学答疑,安排部分学时的集中上机辅导,每班配备两名指导教师。
1.3 设计要求1.每个班分成若干组,每组2~3名同学,指定组长。
2.以组为单位,组内同学共同完成一个题目,由组长确定组内成员的分工。
3.按时参加集中辅导,记考勤。
4.按时提交设计报告,按时参加验收和答辩。
5.每组提交《计算机程序设计基础(C语言)课程设计》设计报告1份及电子版源程序。
1.4 成绩评定方法1.课程设计成绩为五级分制,由平时上机情况、验收答辩、设计报告三部分组成。
2.答辩按组进行,先由组长介绍组内设计情况,演示程序,验收。
各成员独立答辩,答辩缺席者成绩为不及格。
3.课程设计报告,组员按照分工完成部分功能的报告撰写,由组长整理综合。
打印用A4纸。
1.5设计报告结构及要求(详见附录:设计报告模板)1.6 推荐的参考资料1. 苏小红等.C语言大学实用教程.电子工业出版社.20042. 苏小红等.C语言大学实用教程习题与实验指导.电子工业出版社.20043. 徐金梧等.TURBO C实用大全.机械工业出版社. 19964. 郭翠英等.C语言课程设计案例精编.中国水利水电出版社.20045. 谭浩强.C语言程序设计教程.高等教育出版社.19986. 崔武子.C程序设计辅导与实训. 清华大学出版社.20047. 有关TURBO C库函数使用的书籍8. 有关TURBO C编程的书籍9. 互联网上查阅相关资料题目:网络收费管理系统设计功能:实现简单的网络收费信息管理,基本信息包括学生的帐号、姓名、密码、余额等信息基本要求:1.设计简单的菜单,能够进行系统功能选择。
《C语言课程设计报告》剖析

五邑大学课程设计报告课程名称:C语言程序设计课程设计课程编号:0800090学时:16学时学分:1学分图书信息管理系统的设计与实现姓名:梁婉琦_________________________学号:3214002395 _____________________班级:140808班 __________________________专业: 电子信息工程(信息安全)_______________学院:计算机学院 _________________________指导教师:张胜利」____________________________ 课程设计递交时间:2014年4月18日WUYI UNIVERSITY目录1.课程设计目的 (1)2.课程设计的内容 (1)3.课程设计的要求 (1)3.1.功能要求: (1)3.2.技术要求: (2)4.概要设计 (2)4.1.功能模块图 (2)4.2.功能能模块描述 (3)5.详细设计 (4)5.1.各功能模块的具体实现算法一一流程图 (4)5.2.重点设计描述 (5)6.系统测试与调试 (10)7.课程设计心得体会 (11)参考资料 (11)1.课程设计目的进一步加深、巩固所学专业课程《C语言程序设计》的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。
掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的技能。
2.课程设计的内容设计并实现一个图书信息管理系统,要求具有以下功能模块:(1)图书信息录入模块。
(2)图书信息浏览模块。
(3)图书信息查询模块。
(4)图书修改删除模块。
(5)图书借阅模块:(6)图书归还模块:(7)借阅查询模块:(8)退出系统模块。
3.课程设计的要求3.1. 系统功能要求:1.图书信息录入模块:图书信息包括书名,编号,作者,价格,出版社,类别,原始库存,借出。
数据的存储可以采用结构体数组或者链表。
图书信息可以通过键盘逐个录入。
c语言课程设计报告总结和体会

C语言课程设计报告总结和体会1. 引言C语言作为一门广泛应用的编程语言,在计算机科学和软件工程领域有着重要地位。
通过本学期的C语言课程设计,我对C语言的掌握和应用能力有了明显的提升。
本文将对我在这门课程中的设计项目进行总结和体会。
2. 课程设计项目概述本学期的C语言课程设计项目是一个简单的学生成绩管理系统。
项目要求实现对学生信息以及课程成绩的输入、输出和统计等基本功能。
通过这个项目,我巩固了C语言的基本语法和常用数据结构的应用。
3. 设计过程在项目的设计过程中,我首先进行了需求分析,明确了项目的功能和使用场景。
然后,我用C语言来实现各个功能模块,并进行了测试和验证。
在编码过程中,我注重代码的可读性和可维护性,合理使用了变量命名和模块划分等编码技巧。
同时,我也不断优化代码,提高程序的性能和稳定性。
4. 设计亮点在课程设计过程中,我实现了以下几个亮点功能:4.1. 数据结构的应用在本项目中,我使用了链表数据结构来存储学生信息和成绩。
通过链表,可以方便地对学生数据进行增删改查操作。
这种数据结构的选择使得程序的运行效率较高,也方便了后续功能的拓展。
4.2. 模块化设计为了提高代码的可读性和可维护性,我将整个项目拆解成了多个模块,并使用函数进行封装。
每个模块只负责一个具体的功能,便于单独调试和修改。
这种模块化设计的方式也方便了代码的复用,减少了程序的冗余。
4.3. 用户界面友好在项目中,我注重用户界面的友好性。
通过使用清晰明了的命令行交互方式,用户可以方便地进行信息的输入和查询操作。
同时,我也对用户输入进行了格式和合法性的检查,提高了用户体验。
5. 总结与体会通过这门C语言课程设计,我不仅学到了C语言的基础知识和编程技巧,而且锻炼了思维逻辑和团队合作能力。
在设计过程中,我深刻体会到了软件开发的艰辛和挑战。
只有充分理解需求、合理设计架构、规范编码风格,才能开发出高效、可靠且易维护的软件。
此外,通过课程设计我还意识到了编程只是计算机科学中的一个环节,更多的是要善于沟通和合作。
《C语言程序设计》课程设计报告
《C语言程序设计》课程设计报告 河南工程学院计算机学院 《C语言程序设计》课程设计报告 题目:酒店房间及工作人员管理系统 专业: 计算机科学与技术 班级: 2141 姓名: 魏佳琦 教师: 黄治国 完成时间: 2022 年 3 月 7 日 成 绩 1、考勤(10分) 5次考勤,每次到勤2分 2、工作态度(10分) 工作踏实,不怕困难;勤于思考,积极探索疑难问题;积极动手,勤于实践
3、技术(60分) 工作量饱满(10分) 系统需求的分析正确、完整/模块划分合理/算法设计正确和流程图清晰/代码实现了算法功能/测试数据设计合理,测试步骤正确,测试结果分析正确(30分) 能够积极探索解决疑难问题的途径(10分) 有独立完成或协作精神(10分)
4、报告(20分) 排版整齐(5分) 内容完整,叙述清晰(5分) 代码有适当的注释,缩进整齐(5分) 总结内容符合实际情况(5分) 总分 等级 1.课程设计目标
目标是在学生学习了C语言程序设计的基本知识、基本理论的基础上,通过综合课程设计,培养学生的动手能力,培养学生学习新知识的能力,提高学生分析问题和解决问题的综合能力,培养学生的团队合作精神,为今后从事专业工作打下必要的基础。 知识目标: (1)掌握模块化程序设计的方法; (2)进一步学习和掌握C语言中的文件操作函数及其应用; (3)学习和掌握C语言中的库函数及其应用。 能力培养目标: (1)能正确分析现实生活中的问题,并抽象成数学模型,进行模块分析和编程; (2)在程序调试过程中,能根据运行环境给出的错误提示,正确解决程序中的语法错误; (3)在程序调试过程中,能根据运行结果,运用相应的手段,正确地找出并解决程序中的逻辑错误; (4)在课程设计过程中,适当进行小组分工,培养团队谐调和团队合作的能力; (5)提交课程设计成果报告,培养专业文档书写的能力。 2.分析与设计 当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计 算机被广泛应用于信息系统的环境。计算机的最到好处的于利用它能够进行信息 管理,使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安 全性。 尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好酒店房间信息和员工信息而设计的。数据处理手工操作,工作量大,出错率高,出错后不易更改,造成了时间上的浪费。 基于这个问题,我认为有必要建立一个酒店管理系统,使酒店管理信息管理 工作规范化、系统化、程序化,避免房间分配和员工管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改实际情况。 1.1题目需求分析 程序的用途:为酒店管理者提供更方便的酒店管理体系。 能够解决住房管理,以及住房日志的长期保存。 程序要处理的数据有房间的数据,以及员工的数据。 每种数据的处理要求能够长期保存,并且实时更改。 程序的开发平台和运行环境:windows 周一(3.1日)完成: 需求分析; 设计分工; 开发环境搭建; 绘制功能模块图。 周二(3.2日)完成: 用户界面布局设计; 各模块算法设计。 周三(3.3日)完成: 用户界面的实现; 模块的功能实现; 各模块功能的黑盒测试。 周四(3.4日)完成: 系统功能的集成测试。 周五(3.5日)完成: 撰写课程设计报告。 1.2总体设计 首先要初始化一个系统对象,这个系统一个复合类,其余还有其他一个房间类和一个员工类,而信息存储采用链表结构。 信息存储于:D:hotel_contral_system文件夹中 //房间 class room{ private: bool exist;//是否存在bool live;//是否有人入住 int room_ID;//房间号 std::string name;//入住顾客姓名 std::string identity_card_number;//入住顾客的身份证 } //工作人员 class worker{ private: bool exist;//是否存在int work_ID;//工号 std::string identity_card_number;//员工身份证 std::string name;//姓名 std::string department;//部门 int age;//年龄 std::string sex;//性别 std::string entry_date;//入职日期 } //系统 class my_system{ private: worker *workerlist;//链表结构存储信息 room *roomlist; int num_worker, num_room; } 1.3详细设计 3.程序清单 #include #include #include #include #define kong cout< #define debug cout<<"Bug is not here!"< #define gang cout<<"----------"< using namespace std; bool re_pan(){ std::cout<<"确定执行该操作吗?(y/n)"< char c; cin>>c; if(c == y)return true; else return false; } //房间 class room{ private: bool exist; bool live; int room_ID; std::string name; std::string identity_card_number; public: room(int room_id):room_ID(room_id),live(false){ //待改进 name = ""; identity_card_number = ""; std::cout<<"已登记房间号为"< } void rooms(int room_id){ //替代构造函数 exist = true; room_ID = room_id; live= false; std::cout<<"已登记房间号为"< } room(){ live = false; room_ID = 0; name = ""; identity_card_number = ""; } bool get_exist(){ return exist; } bool get_live(){ return live; } int get_room_id(){ return room_ID; } string get_name(){ return name; } string get_identity_card_number(){ return identity_card_number; } void kaobei(bool l, int r, string n, string i){ live = l; room_ID = r; name = n; identity_card_number = i; } void live_in(){ if(live){ std::cout<<"对不起,房间"< kong; return; } std::cout<<"正在办理入住手续,准备登记"< std::cout<<"请输入顾客的姓名:"; cin>>name; getchar(); std::cout<<"请输入顾客的身份证号码:"; std::getline(std::cin, identity_card_number); std::cout<<"登记成功!"< live = true; kong; } void live_out(){ if(!live){ std::cout<<"对不起,房间"< return; } live = false; std::cout<<"已为顾客办好离住手续!"< kong; } void show(){ kong // cout<<"-----该房间的情况如下-----"< cout<<"房间号:"< cout<<"居住情况:"; if(live){ cout<<"已住人!"< cout<<"住户姓名:"< cout<<"住户身份证:"< } else cout<<"空!"< kong } void print_txt(){ cout< cout< cout< cout< } }; //工作人员 class worker{ private: bool exist; int work_ID; std::string identity_card_number; std::string name; std::string department; int age; std::string sex; std::string entry_date; public: worker(){}; worker(int worker_id,std::string _identity_card_number,std::string _name,std::string _department,int _age,std::string _sex,std::string _entry_date): work_ID(worker_id),identity_card_number(_identity_card_number),name(_name),department(_department),age(_age),sex(_sex),entry_date(_entry_date) { std::cout<<"已经为该员工办理好入职手续!"< } void add_worker(int id){
《C语言程序设计》课程设计报告-商品订购系统设计
重庆科技学院《C语言程序设计》课程设计报告学院:_电气与信息工程学院_ 专业班级:计科1102 学生姓名:学号:设计地点(单位)________计算机自主学习中心 ________ __设计题目:________商品订购系统设计 ________ ____完成日期: 2012 年1月13日指导教师评语: ______________________ _________________ __________________________________________________________________________________ __________________________________________________________________________________ _____________________________________ __________ _成绩(五级记分制):______ __________指导教师(签字):________ ________摘要通过本软件的学习、编译。
可以很好的掌握程序中结构体的运用、界面的使用等,以及更熟练的掌握了使用fprintf与fscanf向文件读写一组数据。
可以完全的、熟练的、掌握、运用switch语句来实现多分支选择结构。
同时,使用、学习者也能够学习、知道程序的许多细节问题通过每个函数模块模式。
以上这些的学习对今后的学习、编译程序,以及学习好程序设计课程都有很大的帮助。
关键词:结构体界面 fread switch语句课程设计任务书设计题目:商品订购系统设计目录摘要 (2)课程设计任务书 (3)1 软件需求分析说明书 (6)2 系统设计与分析 (7)2.1 软件界面设计 (7)第一模块界面及实现代码 (7)2.1.3 第三模块的实现及代码 (10)2.1.4 第四模块的实现及代码 (14)2.1.5 第五模块的实现及代码 (15)2.1.6 第六模块的实现及代码 (18)2.2 软件的数据(结构)设计 (21)2.3 软件的算法设计 (22)2.4 数据结构分析 (23)3 设计体会与小结 (24)致谢 (25)参考文献 (26)附录1 (27)1 软件需求分析说明书本软件实现了商品信息的添加、删除、修改、搜索,以及显示商品的全部信息。
C语言课程设计报告论文
C语言课程设计报告论文
课程设计报告
东华理工大学长江学院
课程设计题目:学生选修课程系统
学生学号: 09325208 学生姓名:
专业:电子信息工程指导教师:黄笑鹃、刘自强
20xx年 1 月 6日
目录
目录 (1)
一、设计目的与说明 (2)
目的 (2)
说明 (2)
二、总体设计分析 (2)
三、各功能模块分析 (3)
3.1浏览模块 (3)
3.2选课模块 (3)
3.3删除选课模块 (4)
3.4浏览自己所选的课程 (4)
四、自己负责的功能模块分析 (4)
4.1浏览可供选择的课程 (4)
4.2选择选修课程 (7)
五、结果分析 (9)
【程序运行】 (9)
【功能上的优点】 (9)
【程序的缺点】 (10)
六、设计总结 (10)
七、致谢............................................................................................11 1 一、设计目的与说明
目的
1.加深对《C语言》课程所学知识的理解,进一步巩固C语言语法规则。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合
性实际问题的能力。
c语言课程设计报告 职工工资管理系统
一.设计需求说明一、职工工资管理系统功能设计要求1. 输入记录:将每一个职工的姓名、ID 号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。
•该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
2. 显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
4.查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
5. 删除记录:可删除数据文件中的任一记录。
6.恢复记录:能恢复被删除的任一记录。
7. 统计: (A) 计算各项工资平均工资及总工资, (B)•统计符合指定条件(如职工工资前三项之和在2000 元以上、2000~1500 元、1500~1000 元) 以内的工资职工人数及占总职工人数的百分比。
(C)按字符表格形式打印全部职工工资信息表及平均工资(•包括各项总的平均工资)。
8.保存数据文件功能。
9.打开数据文件功能。
经过逐层逐块、不断细化、求精过程,编写程序并进行测试、验证,可以逐个模块地分开调试,并通过文件包含或用工程文件的形式进行逐步联合调试。
程序运行结果如下表所示(记录个数至少8 个)。
二.模块设计分析系统功能模块图:工作程序分析①输入:输入职工工资资料通过结构体的数组来进行操作,先头定义数组em[],先输入需要输入的职工人数m,然后进入循环,每次循环将各项输入结构体数组对应项的对应成员中,当循环次数等于人数时,完成全部员工的资料输入,退出循环。
同时将数据储存在ckerk_list文件中并自动保存至磁盘。
注:如首次使用,尚未输入数据,请先输入数据。
输入的数据将自动保存。
再次选择输入功能时原数据将被覆盖。
②保存:将输入的资料存入磁盘读取文件clerk_list,若文件不存在,打印“打开失败并退出。
若存在,则通过循环语句将输入到结构体数组的数据逐个输入磁盘。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 中 国 地 质 大 学 本科生课程论文封面
课程名称 C语言程序设计 教师姓名 刘文中 本科生姓名 陈阳 本科生学号 20121000933 本科生专业 网络工程 所在院系 计算机学院 类别: 课程设计报告 日期: 2013.1.5 2
课程设计评语 对课程论文的评语:
平时成绩: 课程论文成绩: 总 成 绩: 评阅人签名: 注:1、无评阅人签名成绩无效; 2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效; 3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。 3
目 录 课程设计评语 ...................................................................................................................................... 2 目 录.................................................................................................................................................... 3 一.课程论文题目 ............................................................................................ 错误!未定义书签。 二.程序设计思路 ............................................................................................ 错误!未定义书签。 三.详细设计 .................................................................................................... 错误!未定义书签。 四.程序代码………………………………………………………………………………………12 五.程序运行结果…………………………………………………………………………………19 六.编程中遇到的困难及解决方法、心得体会 ............................................................................ 23 七.致谢 ............................................................................................................................................ 23 4
一、课程论文题目:飞机订票系统 【要求】假定某名航机场共有n个航班,每个航班有一航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员定额。试设计一民航订票系统,能提供下列服务。 (1) 航班信息录入功能(航班信息用文件保存)。 (2) 航班信息浏览功能。 (3) 查询航线:(至少一种查询方式)。 ① 按航班号查询。 ② 按起点站查询。 ③ 按终点站查询。 ④ 按飞行时间查询。 二、程序设计思路 【需求分析】航班信息用文件保存:航班信息浏览功能需要提供显示操作:要查询航线需要提供查找功能,可提供按照航班号、起点站、终点站和飞行时间查询;另外要提供键盘式选择菜单以实现功能选择。 根据需求分析,可将这个系统的设计分为如下五个模块:输入航班信息,保存航班信息,浏览航班信息,查询航班信息,退出。 飞机订票系统
输入航班信息 保存航班信息 浏览航班信息 查询航班信息 退出
三、详细设计 1.结构体设计 建立航班结构体,结构体成员包括航班号、起点站、终点站和飞行时间(星期几),剩余机票数。 struct air //定义结构体数组 { int num; //定义航班号 char start[20]; //航班起始站 char over[20]; //终点站 char time[10]; //飞行时间 int count; //机票数量 }s[N]; /*s[N]中每个数组元素依次对应一个航班信息*/ [注意] s[N]中的N为航班个数,程序中采用宏定义的方式,可以随时在源程序宏定义中改。本程序宏定义 5
#define N 1000. 2.主函数
主要程序: void main() //主函数 { int j; chushihua(); //系统初始化判断是否存在原始数据文件 printf(" ☆☆☆ ---欢迎使用地大飞机订票系统---☆☆☆\n"); //打印出系统主界面 do {
printf("=============================================================================== "); printf("1.增加航班信息\n\n" "2.浏览航班信息\n\n" "3.查找航班信息\n\n" "0.退出\n\n"); printf("================================================================================ "); printf("请在0-3中选择以回车键结束:\n\n"); scanf("%d",&j); switch(j) { case 1: add(); //调用增加航班函数 break; case 2:print(); //调用显示模块 break;
根据N的值调用各功能模块函数 YES 输入N,判断N是否是0-3 NO 显示一系列功能选项 6
case 3:search(); //调用查找模块 break; case 0: //退出系统 break; } }while(j!=0); //判断是否调用其他函数 printf("谢谢使用,再见! "); } 3.各功能模块设计 (1)输入、保存航班信息模块(包括初始信息和后增加新信息)
主要程序: void chushihua() //定义系统初始化函数 { int access(const char *filenpath, int mode); if(access("hangban.dat",0)) { build(); } else read(); }
void build() //定义建立数据文件函数 { FILE *fp; //定义文件指针 if((fp=fopen("hangban.dat","wb"))==NULL) //打开文件并判定是否出错 { printf("创建文件失败! "); //打印出错提示 getchar(); return;
调用建立数据文件函数增加航班信息函数,输入初始航班信息;
调用保存函数save() 输出航班信息
n(输入完毕)
y(继续输入) 7
} printf("请依次输入航班信息(以回车键结束):\n"); //打印提示信息 printf("-------------------------------------------------------------------------- \n"); for(i=0;i{ printf("请输入航班号: "); scanf("%d",&s[i].num); //输入航班号 printf("请输入起始站: "); scanf("%s",s[i].start); //输入起始站 printf("请输入终点站: "); scanf("%s",s[i].over); //输入终点站 printf("请输入时间(星期几): "); scanf("%s",s[i].time); //输入时间 printf("请输入机票数: "); scanf("%d",&s[i].count); //输入机票数 fwrite(&s[i],sizeof(struct air),1,fp); m++; printf("添加完毕,是否继续添加?请键入y或n以回车键结束:"); scanf("%s",ii); if(strcmp(ii,"y")!=0) //判断是否继续添加航班信息 { fclose(fp); //关闭文件 return; } } } void read() //定义读取文件函数 { FILE *fp; if((fp=fopen("hangban.dat","r"))==NULL) { printf("创建文件失败! "); getchar(); return; } i=0; while(!feof(fp)) { fread(&s[i],sizeof(struct air),1,fp); //逐块读取数据 i++; m++; //计算存在航班数