C程序设计课设报告
c语言程序设计 教学实施报告

c语言程序设计教学实施报告
本文主要介绍了在一所大学中,如何实施C语言程序设计课程的教学方案和教学效果。
首先,我们根据C语言程序设计课程的特点,设计了一套既注重基本理论又注重实践的教学方案。
在教学中,我们采用了多种教学方法,包括理论讲解、案例分析、实验操作等,以帮助学生更好地理解和掌握C语言程序设计的知识。
同时,我们还结合实际情况,设计了相应的教学评估方案,以确保学生能够真正地掌握和应用所学的知识。
在教学实施过程中,我们注重培养学生的实际操作能力和创新意识,通过大量的实验操作和案例分析,让学生逐步掌握C语言的基本语法、程序设计思路和调试技巧。
在课程结束后,我们对学生进行了全面的评估,结果表明,本次课程的教学效果非常显著,学生的C语言程序设计水平得到了明显的提升,并在实际应用中取得了较好的成果。
总之,本文提供了一种可行的C语言程序设计课程的教学实施方案,既注重理论学习,又注重实践操作,能够帮助学生更好地掌握C 语言程序设计的知识和技能。
- 1 -。
C语言程序设计与应用课程设计

C语言程序设计与应用课程设计一、课程设计的背景C语言是一种广泛应用于计算机编程的高级程序语言,它通常被认为是现代计算机科学中最重要的编程语言之一。
C语言因其高效性、可移植性和广泛的硬件支持而成为许多领域中使用最广泛的编程语言之一。
为了帮助学生更好地掌握和应用C语言,本课程设计旨在为学生提供一种系统的教学方法和实践环境,帮助他们更好地理解和应用C语言程序设计。
二、课程设计的目标本课程设计旨在帮助学生:1.熟悉C语言程序设计的基本概念和技术;2.学会使用C语言解决实际问题;3.掌握常见的程序设计技巧和方法;4.能够通过课程设计实践来提高自己的编程水平。
三、课程设计的内容本课程设计包括以下几个部分:1. 设计题目本课程设计的设计题目为“学生成绩管理系统”。
该系统旨在帮助教师轻松管理学生成绩,包括增加、删除、修改和查询学生成绩等功能。
该系统可以通过命令行界面进行操作,也可以通过图形界面进行操作。
2. 要求该系统需要满足以下要求:1.能够向系统中增加新的学生成绩,包括学号、姓名、各科成绩等信息;2.能够删除系统中的学生成绩;3.能够查询学生的各科成绩,并按照总成绩排序;4.能够修改学生的各科成绩;5.系统需要记录每个学生的学科成绩并能够进行数据的统计和分析;6.系统需要有命令行和图形界面两种操作方式。
3. 设计思路本课程设计采用C语言进行编写。
设计思路包括以下几个步骤:1.确定系统要求和功能;2.设计数据结构,并建立相应的数据库;3.设计系统的主要模块,如增加、删除、修改和查询模块;4.实现各个模块的功能,并进行调试和测试。
4. 设计方案和实现本课程设计采用了以下技术和工具:1.数据结构:链表和结构体;2.编译器:Code::Blocks;3.GUI界面库:GTK+。
在系统的实现过程中,主要采用了C语言的各种数据结构和算法技术,如链表、结构体、指针和数组等。
此外,也采用了GTK+库实现了系统的图形用户界面。
学生成绩管理系统c语言课程设计报告

学生成绩管理系统c语言课程设计报告一、引言学生成绩管理系统是一个为学校或教育机构提供学生学业成绩管理的重要工具。
通过该系统,可以方便地记录和查询学生的各项成绩,帮助教师和学生了解学生的学业表现,及时作出教学和学习的调整和改进。
本文将介绍一个基于C语言的学生成绩管理系统的设计与实现。
二、需求分析1. 学生信息管理:包括学生基本信息的录入、修改和删除。
2. 成绩信息管理:包括成绩的录入、修改和删除。
3. 成绩查询与统计:可以按照学生学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份:能够将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
三、系统设计1. 学生信息管理模块:设计一个结构体来存储学生的基本信息,包括学号、姓名、性别、年龄等。
通过菜单选择,可以实现学生信息的录入、修改和删除功能。
2. 成绩信息管理模块:设计一个结构体来存储学生的成绩信息,包括科目名称和成绩。
通过菜单选择,可以实现成绩信息的录入、修改和删除功能。
3. 成绩查询与统计模块:通过学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份模块:设计文件操作函数,将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
四、系统实现1. 使用C语言编写程序代码,通过结构体和数组等数据结构实现学生信息和成绩信息的存储。
2. 利用文件操作函数实现数据的读取和存储,包括学生信息和成绩信息的存储和备份。
3. 设计菜单界面,通过用户选择来实现各个功能模块的调用。
五、系统测试与优化1. 针对各个功能模块进行测试,验证系统的正确性和稳定性。
2. 根据测试结果优化程序代码,提高系统性能和用户体验。
3. 完善系统功能,考虑异常情况的处理,提高系统的容错性和健壮性。
六、总结与展望通过本次课程设计,我们成功实现了一个基于C语言的学生成绩管理系统。
该系统能够方便地记录和查询学生的成绩信息,帮助教师和学生进行教学和学习的分析和改进。
《c语言程序设计》实验报告(实验-2)

《c语⾔程序设计》实验报告(实验-2)《C语⾔程序设计》实验报告2013~2014学年第⼆学期班级姓名学号指导教师实验⼀实验项⽬名称:C程序的运⾏环境和运⾏C程序的⽅法所使⽤的⼯具软件及环境:Visual C++ 6.0⼀、实验⽬的:1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运⾏⼀个C程序;2.通过运⾏简单的C程序,初步了解C源程序的特点。
⼆、预习内容:教材《C语⾔程序设计教程》第1章。
三、实验内容:1. 在Visual C++ 6.0环境下输⼊并运⾏下⾯的程序:#includeint main( ){printf("This is a C program.\n");return 0;}2. 在Visual C++ 6.0环境下输⼊下⾯的程序(有语法错误),编译、连接、调试该程序,直⾄程序⽆语法错误,然后运⾏程序,并观察分析运⾏结果。
#includeint main( ){int a,b,suma=3;b=4;sun=a+b;print(“%d+%d=%d\n”,a,b,sum);return 0;}四、实验结果:1. 运⾏结果(或截图):This is a C program.Press any key to continue2. (1) 改正后的源程序:#includeint main( ){int a,b,sum;a=3;b=4;sum=a+b;printf("%d+%d=%d\n",a,b,sum);return 0;}(2) 运⾏结果(或截图):3+4=7五、思考题:1. ⼀个C程序上机的步骤有哪些?答:上级输⼊与编辑源程序—对原程序进⾏编译–与库函数链接–运⾏可执⾏的⽬标程序。
2. 组成C程序的基本单位是函数,⼀个函数包括哪⼏个部分?答:⼀个函数包括两部分:分别为函数头或函数⾸部和函数体。
成绩指导教师签名实验⼆实验项⽬名称:数据类型、运算符和表达式所使⽤的⼯具软件及环境:Visual C++ 6.0⼀、实验⽬的:1.掌握整型、实型与字符型这三种基本类型的概念;2.掌握常量及变量的使⽤⽅法;3. 掌握基本算术运算符及其表达式的使⽤⽅法;4. 掌握++、--运算符、赋值运算符及其表达式的使⽤⽅法。
C语言程序设计 实验报告1--顺序结构

福建农林大学金山学院实验报告系(教研室):专业:年级:实验课程: C语言程序设计姓名:学号:实验室号:_ 计算机号:实验时间:指导教师签字:成绩:实验1:顺序结构程序设计一、实验目的和要求1.了解Visual C++ 6.0/DEV_C++的基本操作方法2.掌握C程序设计的基本步骤:编辑、编译、连接和运行3.掌握各种类型数据的输入输出方法4.能够编写一个简单的程序二、实验内容和原理1. 输入并运行一个简单、正确的程序。
# include <stdio.h>int main( ){printf ("This is a c program!\n");return 0;}2. 要使下面程序的输出语句在屏幕上显示:A,B,34,则从键盘输入的数据格式应为AB34__________ 。
#include<stdio.h>int main(){char a, b;int c;scanf("%c%c%d",&a,&b,&c);printf("%c,%c,%d\n",a,b,c);return0;问题1:要使上面程序的键盘输入数据格式为a=A,b=B,34,输出语句在屏幕上显示的结果也为A,B,34,则应修改程序中的哪条语句?怎样修改?scanf( “a=%c,b=%c,%d”,&a,&b,&c );问题 2:要使上面程序的键盘输入数据格式为A,B,34,而输出语句在屏幕上显示的结果为“A”,“B”,34,则应修改程序中的哪两条语句?怎样修改?scanf( “%c,%c,%d”,&a,&b,&c);printf(“\”%c\”,\”%c\”,%d\n”,a,b,c);3、编程求一个圆的周长和面积。
用scanf输入圆半径,输出保留两位小数。
4、输入一个华氏温度F,要求输出摄氏温度C。
C语言程序设计课程设计报告

C语言程序设计课程设计实验报告一、设计名称:学生成绩治理查询系统实验项目性质:综合性所涉及课程:C语言程序设计打算学时:实验学时12二、设计目的:1.通过本课程设计,培育上机动手能力,使学生巩固《C语言程序设计》课程学习的内容,把握工程软件设计的大体方式,强化上机动手能力,闯过编程关;2.为后续各门运算机课程的学习打下坚实基础。
3.明白得程序设计的思路,把握结构化程序设计的方式,综合利用C语言进行程序编写,巩固常常利用的C语言概念,如数组、指针、结构体、链表、文件操作等,注意良好的程序设计风格的培育。
提高编写程序解决实际问题的能力、调试程序的技术。
三、设计环境(软件、硬件及条件)1.硬件:PC机2.软件:Turbo C++四、设计说明:程序系统的结构:用一系列图表列出本程序系统内的每一个程序(包括每一个模块和子程序)的名称、标识符和它们之间的层次结构关系。
主程序:新建:输入记录(遇#号时停止输入)。
插入:在指定位置插入记录。
显示:列出所有记录。
查询:一、按学号查询;二、按名字排序。
删除:一、按学号删除;二、按名字删除;3、删除所有记录。
排序:一、按语文成绩排序;二、按英语成绩排序;3、按数学成绩排序。
保留:保留为任意名字,系统自动加后缀名为.txt。
读取:读取程序目录下的后缀名为.txt的文件。
退出:退出程序。
五、各功能模块的具体实现,用图表表示。
输入记录显示开始:输入学号输入的学号是否为#Y N 结束,返回主菜单输入记录循环输入结束开始p=hp!=NULL输出学生信息;p=p->next结束按学号(姓名)查询信息Y N读取文件六、各模块(函数)的功能介绍,数据结构设计描述,参数说明等。
STUDENT *init(); /*初始化链表*/STUDENT *create(); /*新建链表*/STUDENT *del_no(STUDENT *h);/*按学号删除信息*/STUDENT *del_name(STUDENT *h); /*按姓名删除信息*/void print(STUDENT *h); /*显示信息函数*/void search_no(STUDENT *h); /*按学号搜索*/void search_name(STUDENT *h); /*按姓名搜索*/STUDENT *insert(STUDENT *h); /*插入信息函数*/void sort(STUDENT *h);/* 排序函数*/void save(STUDENT *h);/*保留数据到文件*/void load(STUDENT *h); /*从文件读取数据*/int menu_main(); /*菜单函数*/void inputs(char *prompt,char *s,int count);/*输出信息*/七、程序代码:Enter records\n");printf(" 2. Add records\n");printf(" 3. List records\n");printf(" 4. Search records\n");printf(" 5. Delete records\n");printf(" 6. Sort records\n");printf(" 9. Quit\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~9):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>9); /*选择项不在1~9之间重输*/return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Search records on number\n");printf(" 2. Search records on name\n");printf(" 3. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~3):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>3);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Chinese\n");printf(" 2. English\n");printf(" 3. Math\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Delete records on number\n");printf(" 2. Delete records on name\n");printf(" 3. Delete all records\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}.");/*提示*/getch(); /*读入任意字符*/}.\n");getch(); /*读入任意字符*/if(p==h)h=p->next;elseq->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s); }printf("\nPress any key to continue..."); getch(); /*读入任意字符*/return h;}.\n");getch();if(p==h)h=p->next;else q->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s);}printf("\nPress any key to continue...");getch(); /*读入任意字符*/return h;}.");getch(); /*读入任意字符*/}.");getch(); /*读入任意字符*/}xt"};STUDENT *p;FILE *fp; /*指向文件的指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"wb"))==NULL) /*打开文件,并判定打开是不是正常*/ {printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;while(p!=NULL){if(fwrite(p,sizeof(STUDENT)-sizeof(p->next),1,fp)!=1){printf("Error!\n");exit(1);} /*写入*/p=p->next;}fclose(fp); /*关闭文件*/printf("\n------OK------\n");printf("Press any key to continue...");getch(); /*读入任意字符*/}xt"};STUDENT *p,*a1=NULL,*a2=NULL;FILE *fp;/*概念文件指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"rb"))==NULL)/*打开文件*/{printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;a1=a2=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp); while(!feof(fp)){n++;if(n==1)h=a1;else a2->next=a1;a1=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp);}a2->next=NULL;printf("\n------OK------\n");printf("Press any key to continue...");getch(p); /*读入任意字符*/}///////////////////////////////////////////void sort(STUDENT *h) /*排序函数*/{int i=0,j;STUDENT *p,*q,*t,*h1,*z;clrscr(); /*清屏*/printf("Enter you choice :\n");scanf("%d",&j);z=h;h1=h->next;h->next=NULL;while(h1!=NULL){t=h1;h1=h1->next;q=h;while(t->score[--j]<p->score[--j]&&p!=NULL){q=p;p=p->next;}if(p==q){t->next=p;h=t;}else{t->next=p;q->next=t;}}p=h;while(p!=NULL){i++;p=p->next;}h=z;printf("------OK------\n");}//////////////////////////////////////////////////九、体会、总结本课程设计完成了设计一个学生成绩治理系统,学生的学习成绩进行治理,具有查询和检索功能,而且能够对指定文件操作。
程序设计基础课程设计报告

程序设计基础课程设计报告
本次课程设计旨在深化我们对程序设计基础的理解和应用。
通过实际操作,我们学习了算法设计、数据结构选择及代码优化等关键技能。
在解决问题的过程中,我们遇到了诸如逻辑错误、运行效率低等问题,但通过团队合作、反复调试和查阅资料,最终成功解决了这些问题。
这次课程设计不仅提高了我们的编程能力,还锻炼了我们的逻辑思维和团队协作能力。
我们深刻认识到,良好的程序设计不仅需要扎实的理论知识,还需要灵活的应用能力和不懈的探索精神。
展望未来,我们将继续巩固和扩展程序设计知识,努力提升编程水平,为解决实际问题和推动科技发展贡献自己的力量。
C语言课程设计报告:职工信息管理系统程序设计

1.课程论文题目职工信息管理系统程序设计一、题目要求职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单的方式工作。
(2)职工信息录入功能(职工信息用文件保存)。
(3)职工浏览功能。
(4)职工信息查询功能,查询方式可按学历查询或者工号查询。
(5)职工信息的删除、修改功能(可选项)。
2.程序设计思路1、设计思路(1)根据题目要求,应该把职工工资信息用结构体形式输入,在定义一个全局变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;(2)在程序中需实现职工工资浏览、查询、统计等功能的操作,所以需要建立相应的功能模块来实现;(3)另外还需要提供键盘式选择菜单实现功能,在运行时达到所要的目的。
3.功能模块图5.算法设计1.主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。
2浏览模块【分析】该模块的功能是浏览职工的全部信息3排序模块4查询模块【分析】该模块的功能是根据输入的职工按照工号和学历查找对应的记录,找到以后,可进行继续查找或修改信息的操作。
流程图如下:5修改模块【分析】该模块的功能是显示所有职工的信息,考虑到记录较多,建议采用分屏显示。
显示完所有记录后,输入要修改的职工的工号,根据工号查到职工的记录,并提示用户修改该记录的哪部分信息,根据用户做的选择修改相应信息。
流程图如下:6.程序代码#include<stdio.h>#define N 50struct worker{char id[50];char name[20];char sex[10];char age[10];char edu[20];char salary[10];char address[20];char tel[20];}worker[N];void save(int n) //保存函数,保存n个记录{ FILE *fp;int i;if((fp=fopen("worker.txt","wb"))==NULL) //以只写方式为输出打开一个二进制文件{ printf("\nCannot open file\n");}for(i=0;i<n;i++)if(fwrite(&worker[i],sizeof(struct worker),1,fp)!=1)printf("file write error\n");fclose(fp);}int load() //加载函数{ FILE *fp;int i;if((fp=fopen("worker.txt","rb"))==NULL){printf("\nCannot open file\n");return NULL;}for(i=0;!feof(fp);i++)fread(&worker[i],sizeof(struct worker),1,fp);fclose(fp);return(i-1);}void no_input(int i,int n) //工号输入函数,i表示第i个职工的信息,n 表示比较到第n个职工{ int j,k,w1;do{w1=0;printf("工号:");scanf("%s",worker[i].id);for(j=0;worker[i].id[j]!='\0';j++)if(worker[i].id[j]<'0'||worker[i].id[j]>'9') //判断工号是否为数字{puts("请重新输入!\n");w1=1;break;}if(w1!=1)for(k=0;k<n;k++) //比较到第N个职工if(k!=i&&strcmp(worker[k].id,worker[i].id)==0) //判断职工号是否有雷同{puts("请重新输入!\n");w1=1;break;}}while(w1==1);}void input(int i) //输入一个记录的函数{ no_input(i,i);printf("姓名:");scanf("%s",worker[i].name);printf("性别:");scanf(" %s",&worker[i].sex);printf("年龄:");scanf("%s",&worker[i].age);printf("工资:");scanf("%s",worker[i].salary);printf("学历:");scanf("%s",&worker[i].edu);printf("住址:");scanf("%s",worker[i].address);printf("电话:");scanf("%s",worker[i].tel);}void printf_one(int i) //显示一个记录的函数{printf("%10s %10s %5s %5s %8s %6s %10s %10s\n",worker[i].id,worker[i].name,worker[i].sex,worker[i].age,worker[i].salary,worker[i].edu,worker[i].address,worker[i].tel); }void printf_back() //一个任务结束后选择是好似浏览还是返回{ int k,w;printf("\n\n\tSuccessful^-^.\n\n");printf("接下来做什么?\n\n\t1).浏览全部\t2).返回: [ ]\b\b");scanf("%d",&w);if(w==1)browse();else menu();}modify_data(int i,int n) //修改函数{ int c,w1;do{puts("\nmodify by=>\n\n 1).工号 2).姓名 3).性别 4).年龄 5).工资6).学历 7).地址 8).电话 9).取消");printf("请选择?:[ ]\b\b");scanf("%d",&c);if(c>9||c<1){puts("\nChoice error!please again!");getchar();}}while(c>9||c<1);do{switch(c){case 1:no_input(i,n);break;case 2:printf("name:");scanf("%s",worker[i].name);break;case 3:printf("sex:");scanf("%s",worker[i].sex);break;case 4:printf("age:");scanf("%s",worker[i].age);break;case 5:printf("salary:");scanf("%s",worker[i].salary);break;case 6:printf("edu:");scanf("%s",worker[i].edu);break;case 7:printf("address:");scanf("%s",worker[i].address);break;case 8:printf("tel:");scanf("%s",worker[i].tel);break;case 9:menu();break;}puts("\nNow:\n");printf_face();printf_one(i);printf("\n确定?\n\n\t1).是2).否,重新修改3).不保存退出[ ]\b\b");scanf("%d",&w1);if(w1==1)save(n);}while(w1==2);return(w1);}printf_face() //显示数据结构项目{ printf("\n\t工号姓名性别年龄工资学历地址电话号码\n"); }void enter() //输入模块{ int i,n;printf("输入多少个职工信息(0-%d):",N-1);scanf("%d",&n);printf("\n 请输入职工信息\n\n");for(i=0;i<n;i++)input(i);if(i!=0)save(n);printf_back();}browse() //浏览模块{ int i,j,n;n=load();printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)){printf("\n\n按任意键显示下一页...");getch();puts("\n\n");}printf_one(i);}printf("\t这里有 %d 条记录.\n",n);printf("\n按任意键返回...");getch();menu();}modify() //修改模块{struct worker s;FILE *fp;int i,n,k,w0=1,w1,w2=0;n=load();do{k=-1;printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)) //目的是分屏显示{printf("\n\n记住要修改的工号.按任意键显示下一页");getch();puts("\n\n");}printf_one(i); //调用显示一个记录的函数}do{printf("\n\n输入要修改的职工工号! 工号:");scanf("%s",s.id); //输入要修改的IDfor(i=0;i<n;i++) //查找要修改的数据if(strcmp(s.id,worker[i].id)==0){k=i; //找到要修改的记录s=worker[i]; //把worker[i]备份,以便恢复}if(k==-1)printf("\n\n未找到请重输");}while(k==-1); //当k=-1表示没有找到printf_face(); //调用显示数据结构项目的函数printf_one(k); //调用显示一个记录的函数w1=modify_data(k,n); //修改记录并返回保存控制值w1,w1=1表示用户已确认修改if(w1==1){printf("\Successful^_^.\n\n修改另一个?\n\n\t1).是 2).否,保存退出\t[ ]\b\b");scanf("%d",&w0);w2=1; //用来控制保存,使w2=1是标记已有过修改}else{w0=0;if(w2==1)worker[k]=s;}if(w0!=1&&w2==1)save(n);}while(w0==1);menu();}search() //查询模块{ int c,w1;do{puts("\nsearch by=>\n\n1).工号 2}.学历 3).取消并返回"); printf("Which you needed?:[ ]\b\b");scanf("%d",&c);if(c>3||c<1){ puts("\nchoice error!please again!");getchar();}}while(c>3||c<1);{switch(c){case 1:search1();break;case 2:search2();break;case 3:menu();break;}}}search1() //按工号查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n输入要查询的工号! id:");scanf("%s",s.id);printf_face();for(i=0;i<n;i++)if(strcmp(s.id,worker[i].id)==0){k=i;printf_one(k);break;}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search1();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}search2() //按学历查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n请输入你要查询的学历:\n");scanf("%s",);printf_face();for(i=0;i<n;i++)if(strcmp(,worker[i].edu)==0){k=i;printf_one(k);}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search2();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}menu(){int n,w1;do{puts("\t\t*******************菜单*******************\n\n");puts("\t\t\t\t1.录入职工信息");puts("\t\t\t\t2.浏览职工信息");puts("\t\t\t\t3.查询职工信息");puts("\t\t\t\t4.修改职工信息");puts("\t\t\t\t5.退出");puts("\t\t****************************************\n\n");printf("请选择(1~5): [ ]\b\b");scanf("%d",&n);if(n<1||n>5) //对选择的数字作判断{w1=1;getchar();}else w1=0;} while(w1==1);switch(n){case 1:enter();break; //录入 case 2:browse();break; //浏览 case 3:search();break; //查询 case 4:modify();break; //修改 case 5:exit(0); //退出}}main(){menu();}7.程序运行结果下面是各个模块的的界面截图(1)、主菜单(2)、输入模块(3)、浏览模块(3)、查找模块(4)、修改模块8.编程中遇到的困难及解决方法温故而知新,可以为师矣。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告课程名称《C#程序设计》课题名称图书管理系统专业信息管理及信息系统班级信管学号姓名指导教师李峰、赵锦元、谢雅2015年6 月10 日湖南工程学院课程设计任务书课程名称《C#程序设计》课题图书管理系统专业班级信管1302班学生姓名刘洁学号指导老师李峰审批任务书下达日期2015 年6 月10 日任务完成日期2015 年6 月27 日一、设计内容及设计要求1.课程设计目的:全面熟悉、掌握计算机系统及系统软件基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,增强面向对象程序设计概念,熟悉C++语言编程,养成提供文档资料的习惯和规范编程的思想,为后继课程的实验以及课程设计打下较扎实的基础。
进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程(数据结构、数据库和汇编语言等课程)的实验以及课程设计,特别是自学、毕业论文的完成打下扎实的基础。
2.课题题目1、学生成绩管理系统2、职工信息管理系统3、图书管理系统程序系统4、教师工作量统计系统3.设计要求:主要模块1、学生成绩管理系统具有功能:1、显示统计数据2、查找学生成绩3、修改学生成绩4、删除学生成绩5、插入学生成绩6、按平均分降序排列7、显示全部学生成绩8、退出本系统2、职工信息管理具有功能:1、添加信息2、显示统计数据3、查找学生成绩4、修改信息5、删除信息6、插入信息7、显示全部信息8、退出本系统3、图书管理系统程序具有功能:1、浏览书籍信息2、修改书籍信息3、统计书记情况4、查询书的基本信息5、录入新书信息4、教师工作量统计系统具有功能:1、输入教师信息2、查看教师信息3、清空记录4、退出程序课程设计报告规范1、完成系统需求分析:包括系统设计目的及意义;系统功能需求;输入输出的要求。
2、完成系统概要设计:程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能;课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。
3、完成系统详细设计:包括采用C++语言定义相关的数据类型;写出各模块的类C++码算法;画出函数的调用关系图。
4、调试分析、设计体会、测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果;程序调试中遇到的问题以及解决问题的方法;课程设计过程经验教训、心得体会。
5、关键源程序(带注释)6、其他1)设计正确,方案合理。
2)界面友好,使用方便。
3)程序精炼,结构清晰。
4)设计报告5000字以上,含程序设计说明、系统的功能框图、流程图、源程序清单等。
5)实际操作过程中遇到的问题及解决方法:设计总结及心得体会.6)上机演示。
二、进度安排第16 周星期一14时:00分星期二14时:00分星期四14时:00分星期五14时:00分第17 周星期一14时:00分星期二14时:00分目录1 系统需求分析01.1系统设计目的及意义11.2系统功能需求11.3输入输出要求12 总体设计22.1总体设计图22.2 各函数之间的调用关系22.3 数据结构及数据库42.4C#语言的简介43 详细设计53.1 采用C++语言定义的相关数据类型53.2 各模块的类C码算法53.2.1采用类建立一个读者类,实现对读者信息的描述53.2.2建立读者数据库,保存读者个人信息63.2.3建立图书类,实现对图书的描述73.2.4建立图书数据库,实现对图书的维护,查找,删除等73.2.5系统目录的设置84 系统调试及结果84.1 程序运行结果84.2调试中出现的问题115 使用说明126 心得体会127 附录137.1 源代码117.2 参考文献248 评分表251 系统需求分析1.1系统设计目的及意义全面熟悉、掌握计算机系统及系统软件基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,增强面向对象程序设计概念,熟悉C++语言编程,养成提供文档资料的习惯和规范编程的思想,为后继课程的实验以及课程设计打下较扎实的基础。
进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程(数据结构、数据库和汇编语言等课程)的实验以及课程设计,特别是自学、毕业论文的完成打下扎实的基础。
1.2系统功能需求利用C++语言和access数据库的相关知识设计及开发一个图书管理系统的借书模块、还书模块和图书存储模块,具有读者编号、读者信息、书籍编号、书籍信息的输入功能;可以在数据库中查询和删除所保存的记录;在借书功能里,用户可以通过此功能是否借出检索的书籍,还书功能里,读者可以查看所接书籍信息,并具有退出该系统模块的功能。
1.3输入输出要求本系统是一个图书信息管理系统,采用VC++6.0 编译器作为开发环境,这个环境是我们在学习的C++平台。
输入数据类型主要是char、int、float等数据类型,输入内容包括:图书编号、图书名、读者编号、读者名等数据。
用户在输入图书信息保证输入数据格式的正确性,系统不会自动检测输入的数据是否正确可用。
输出形式及输入形式类似,根据需要可以选择显示输入的各项内容,还可以修改、删除、查找、显示所有、保存等功能。
2 总体设计2.1总体设计图本管理系统共分为五大功能:分别为借书功能、还书功能、图书维护、读者维护、退出系统,系统设置模块各功能性需求见下表所示由图2.1所示图2.1总体设计图2.2 各函数之间的调用关系该模块完成了图书管理系统中新增图书、查询图书、删除图书信息、借书、还书以及读者信息录入的功能,其中在图书维护模块的功能中,又可实现新增图书、更改图书信息、删除图书、查询图书、显示全部图书、删除全部图书的功能。
同样在读者维护模块中也有类似的新增读者、更改读者信息、删除读者、查询读者信息等功能。
流程图如图2.2所示。
图2.3 数据结构及数据库数据结构是指同一数据元素类中各数据元素之间存在的关系。
数据结构分别为逻辑结构、存储结构和数据的运算。
数据的逻辑结构是从具体问题抽象出来的数学模型,是描述数据元素及其关系的数学特性的,有时就把逻辑结构简称为数据结构。
而数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
图书管理系统程序利用C++语言编写,定义多个类,数据保存到access数据库实现数据保存和查询。
Access数据库中存储了输入的图书信息,读者信息以及图书的借阅情况。
2.4 C#语言的简介C#语言是在C、C++和Java基础上重新构造的、语法及C++和Java都比较相似的基于。
NET框架支持的一种完全面向对象的、类型安全的编程语言,也是。
NET的首选编程语言。
从开发效率来讲,C#为应用程序开发人员提供了快速的开发手段,但又不牺牲C++语言的特点和优点。
从继承性来讲,C#在更高层次上重新实现了C和C++。
从语法形式和易用性来讲,C#几乎综合了目前流行的所有高级语言的优点,提供了一种语法优雅、功能完善而又容易使用的外在表现形式。
3 详细设计3.1 采用C++语言定义的相关数据类型C/C++ 数据类型C语言包含5个基本数据类型: void 空类型、int 整型、float 浮点类型、double 双精度浮点类型、char 字符类型,在图书管理系统这个程序中用到了其中的大多数。
同时还用类和对象的方法来定义多个类,在这之前,曾采用结构体的方法来做个,但后来放弃了,因为采用数组或者结构体的方法定义多个事件,那样将会非常繁琐,代码重复比较大,因此,为了简化这些连接操作,在开发时设计个可重用的类,把对数据库的操作都封装在这个类中,需要用到时生成对象调用便可。
这样就避免了在出现错误时,为了去修改错误而产生的庞大的工作量。
3.2各模块的类C码算法3.2.1采用类建立一个读者类,实现对读者信息的描述根据课设要求定义一个读者类,在类中,定义了读者的编号、姓名,建立数组来存储读者所借阅的书籍,同时也建立多个成员函数像addreade() 、borrowbook() 、disp()实现新增读者,存储读者借阅信息显示读者信息等功能class Reader{private:int tag; //删除标记1:已删0:未删int no; //读者编号char name[10]; //读者姓名int borbook[Maxbor]; //所借图书public:Reader() {}char *getname() {return name;} //获取姓名int gettag() {return tag;} //获取删除标记int getno() {return no;} //获取读者编号void setname(char na[]) //设置姓名{strcpy(name,na);}void delbook(){ tag=1; } //设置删除标记1:已删0:未删3.2.2建立读者数据库,保存读者个人信息并实现查询功能、删除在读者数据库中,通过构造函数,将reader.txt(输入的读者个人信息)读到read[]数组中,通过clear()函数来删除所有读者信息,不过在删除前会先用for循环来对数据库中的数据进行遍历,来查找读者是否存在。
通过在析构函数中,将read[]写到reader.txt 文件中,进行读者库的维护class RDatabase{private:int top; //读者记录指针Reader read[Maxr]; //读者记录public:RDatabase() //构造函数,将reader.txt读到read[]中{Reader s;top=-1;fstream file("reader.txt",ios::in); //打开一个输入文件while (1){((char *)&s,sizeof(s));if (!;top++;read[top]=s;}(); //关闭reader.txt }3.2.3建立图书类,实现对图书的描述,图书的编号,书名,借出,还入等同样根据课程设计要求,定义一个图书类,用来存储书籍的编号、名称,以及是否借阅的信息,通过delbook()、addbook()、borrowbook()、retbook()等函数来实现对图书的删除、增加、是否借阅和还书信息的记录class Book{private:int tag; //删除标记1:已删0:未删int no; //图书编号char name[20]; //书名int onshelf; //是否再架1:再架2:已借public:Book(){}char *getname() { return name; } //获取姓名int getno(){ return no; } //获取图书编号int gettag(){ return tag; } //获取删除标3.2.4建立图书数据库,实现对图书的维护,查找,删除等同样在图书数据库中,也是通过构造函数,将reader.txt(输入的图书信息)读到read[]数组中,通过clear()函数来删除所有图书信息,不过在删除前会先用for循环来对数据库中的数据进行遍历,来查找图书是否存在。