教师信息管理系统(C语言课程设计)
信息查询系统C语言实现
本程序为C 语言课设题目信息管理系统:1、 要求实现信息录入2、 能实现信息查询3、 信息排序4、 删除信息5、 修改信息6、 显不所有7、 插入信息 &设置界面 具体代码如下: #include<stdio.h> #in clude<stri ng ・h> #include<stdlib.h> struct student{char name[20]; char phone[20];char email[20]; char QQ[20];};void menu(void)printf("\n\n\n ------ 欢迎使用通讯录系统一 -An");printf("+■An");printf(" 1、信息录入 \n“); printf(" 2、信息查询 \n");printf(" 3、信息排序 \n“);printf(" 4、删除信息\n");printf(" 5、修改信息 \n“);printf(" 6、显Z5所有 \n“);printf(" 7、插入信息 \n");printf(" &退出系统 \n");printf(“+■An"); printff 1'请输入你的选择:\rT);〃菜单程序〃int input(struct student stu[]) 〃输入程序〃{int i,n=O;printf("请输入录入条数\n");scanf(l,%d l,/&n);for(i=0;i<n;i++){printf("请输入第%(1个成员的姓名,电话,邮箱,QQ号\n“,i+l);scanf("%s:stu[i].name);scanf(”%s 蔦stu[i].phone);scanf(”%s 蔦stu[i].email);scanf(”%s 蔦stu[i]・QQ);}return n;}void find(struct student stu[]z int n) 〃查询程序〃{int i;char ch[16];printff"输入查询条件:姓名或电话\n“);scanf(l,%s,,/ch);for(i=0;i<n;i++){if(!strcmp(ch,stu[i].name)| | !strcmp(ch,stu[i].phone)){printf("查询到姓名为%s 的同学:\n“,stu[i].name);printf("信息如下\n”);printf("姓名: %s 电话: %s 邮箱: %s QQ 号码:%s^stu[i]・name,stu[i]・phone,stu[i]・email,stu[i]・QQ);return;}}printff"未找到相关记录”);void output(struct stud ent stu[],i nt n){int i;if(n==O)printf ("通讯录中空无一物\n“);else{printfC'ifi 讯录所有记录如下\n''); for(i=0;i<n;i++)/ tprintf"姓名:%s^); printf)"电话:%sn z stu[i].phone); printf"邮箱:%s,l /stu[i].email); printf(H QQ : %s “,stu[i].QQ);printf(II \n N );}}} int dele(struct stud ent stu[]Jnt n){int i,j;char mark[20];printf ("输入要删除记录的人名或电话号码\n");scanf(,,%s ,,/mark);if(n==O){printf ("通讯录中空无一物\n");return 0;}else{for(i=0;i<=n;i++) if(!strcmp(mark,stu[i].name)| | !strcmp(mark,stu[i].phone))〃显不程序〃 〃删除程序〃printf(u以下是您要删除的记录'n”);printf("姓名:%s 电话:%s 邮箱:%s 码:%s\n:stu[i]・name,stu[i]・phone,stu[i]・email,stu[i]・QQ);for(j=i;j<n-l;j++)stu[j]=stu[j+l];printf(“删除成功\n“);n=n-l;return n;}}printf("未查询到该条记录\n");return n;}}int in sert(struct stud ent stu[]z int n){int i,x;printf("请输入插入记录条数\n");scanf("%cT:&x);for(i=n;i<n+x;i++){printf(''请输入插入的第%d个成员的姓名,电话,邮箱,QQ号\n"J-n+l); scanf(,,%s,,/stu[i].name);scanf(,,%s,,/stu[i].phone);scanf(,,%s,,/stu[i].email);scanf(,,%s,,/stu[i].QQ);}printf(“插入完成\n“);n=x+n;return n;} void change(struct student stu[],int n) 序〃int i;char x[20];printf("请输入需要修改的记录:姓名或电话\n");scanf("%s 蔦x);for(i=0;i<n;i++){if(!strcmp(x,stu[i].name)| | !strcmp(x,stu[i].phone))QQ 号〃插入程序〃〃修改程{p r i ntf ("查询到可修改记录\n");printfC*请输入修改后的名字,电话,邮箱,QQ 号码\n“); scanf(ll %s ,,/stu[i].name);scanf(ll %s ,,/stu[i].phone);scanf(,,%s ,,/stu[i].email);scanf(ll %s ,,/stu[i].QQ);printf ("修改记录成功\n");return;}}printf("未查找到相关记录\n");}void sort(struct student stu[],int n){int ij ;struct student tmp;for(i=0;i<n-l;i++){for(j=i;j<n-l;j++) if(strcmp(stu[j]. name,stu[j+l]・name)<0) tmp=stu[j]/stu[j]=stu[j+l],stu[j+l]=tmp; }printf (”排序后的记录如下:\n H );for(i=0;i<n;i++){printf ("名字:%s ,l /stu[i].name);printf("电话:%s n z stu[i].phone);printf("邮箱:%s n z stu[i].email);printfC'QQ : %s printff'Xn");}} void main(void){struct stud ent stu[35];int n ,c;while(l)〃排序算法〃蔦 stu[i]・QQ);{menu();scanf(,,%d,,/&c);switch(c){case 1:n二input(stu); break; case 2:find(stu,n);break;case 3:sort(stu,n);break;case 4:n=dele(stu,n); break; case 5:cha nge(stu, n); break; case 6:output(stu,n); break; case 7:n=insert(stu,n);break;case &exit(O);。
《C语言程序设计》课程设计任务书-建电11412
《C语言》课程设计任务书一、性质与目的:本课程设计是学生学习完《C语言程序设计》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:(1)巩固和加深学生对C语言课程的基本知识的理解和掌握;(2)掌握C语言编程和程序调试的基本技能;(3)利用C语言进行简单软件设计的基本思路和方法;(4)提高运用C语言解决实际问题的能力。
通过实习,加深学生对课堂所学基础知识的掌握与理解,提高学生对所学内容的综合运用能力;同时通过查询资料,培养学生自学、接受新知识能力,提高学习兴趣;增强学生程序设计能力,掌握编程技巧,培养学生实际上机调试能力。
二、基本要求:1、选题规定2、设计结束后,要求每个学生上交一份打印的实习报告。
3、设计期间,学生要服从指导教师统一安排,遵守机房制度。
4、严格遵守纪律,不迟到,不早退。
对于无故缺勤者,成绩按不及格处理。
三、设计内容:题目见后边附录四、课程设计的成绩评定a)实习期间的平时表现;b)设计任务的考核成绩;c)设计报告的批阅成绩。
根据以上的成绩由指导教师进行综合评定,成绩分优、良、中、及格和不及格五个等级。
五、实习进程实习为期一周,共22学时,周一至周四每天利用半天时间查阅资料,另外半天到计算机房调试程序(上机的具体时间遵照机房的安排),周五对所设计的软件进行上机考核验收,考核合格者书写设计报告(电子版和打印版),下周一交给指导教师。
六、设计报告格式首先是封面(如下图)其次是目录(要求根据报告内容自动生成)一、设计思路二、程序流程图三、源程序清单四、程序运行结果五、设计总结六、教师评语(学生不要填写)然后是根据目录而写的具体内容附录:(一)基础部分:1.输入一个五位整数,将它反向输出。
例如输入12345,输出应为54321。
(15分)2.用两种循环结构分别编程计算1+2+3…+100的值。
运行结果为“1+2+…+100=5050”(15分)3. 从终端读入20个数据到数组中,统计其中正数的个数,并计算它们之和。
课程信息管理系统(C语言)
课程信息管理系统源代码#include<stdio.h>#include<stdlib.h>#include<string.h>struct Class{int Number;int ClassNumber;char Name[10];float TeachTime;float PracticeTime;float Credit;char Semester[10];char TextWay[10];} Class[10],CL;/**********输入模块***********/void save()//定义函数save,向文件输出课程信息{FILE *fp;int i;if ((fopen("Class.txt", "r")) == NULL)//打开输出文件Class fp = fopen("Class.txt", "w+");elsefp = fopen("Class.txt", "r+");for (i = 0; i<10; i++){fprintf(fp, "%d", Class[i].Number);fputc('\n', fp);fprintf(fp, "%d", Class[i].ClassNumber);fputc('\n', fp);fprintf(fp, "%s", Class[i].Name);fputc('\n', fp);fprintf(fp, "%f",Class[i].TeachTime);fputc('\n', fp);fprintf(fp, "%f", Class[i].PracticeTime);fputc('\n', fp);fprintf(fp, "%f", Class[i].Credit);fputc('\n', fp);fprintf(fp, "%s", Class[i].Semester);fputc('\n', fp);fprintf(fp, "%s", Class[i].TextWay);fputc('\n', fp);}fclose(fp);}void Input(){int i = 0;char c;for (int t = 1; t;i++){printf("请输入要输入的课程的相关信息:\n");printf("请输入记录编号:");scanf("%d", &Class[i].Number);printf("请输入课程编号:");scanf("%d", &Class[i].ClassNumber);printf("请输入课程名:");scanf("%s", Class[i].Name);printf("请输入讲课学时:");scanf("%f", &Class[i].TeachTime);printf("请输入实践学时:");scanf("%f", &Class[i].PracticeTime);Class[i].Credit = (Class[i].TeachTime + Class[i].PracticeTime) / 16;printf("请输入开课学期:");scanf("%s", Class[i].Semester);printf("请输入考核方式:");scanf("%s", Class[i].TextWay);printf("是否继续输入Y/N\n");fflush(stdin);scanf("%c",&c);switch (c){case 'Y':break;case 'N':t = 0;break;default:printf("输入错误\n");}}save();}/*******修改模块*******/void Modification()int n,i;printf("请输入您要修改的课程的记录编号:");scanf("%d", &n);for ( i = 0; i < 10; i++){if (Class[i].Number == n)break;}FILE*fp;if ((fp = fopen("Class.txt", "r")) == NULL){printf("cannot open file\n");exit(0);}fscanf(fp, "%d%d%s%f%f%f%s%s\n",&Class[i].Number,&Class[i].ClassNumber, Class[i].Name, &Class[i].TeachTime, &Class[i].PracticeTime, &Class[i].Credit, Class[i].Semester, Class[i].TextWay);printf("请输入要修改的课程的相关信息:\n");printf("请输入课程编号:");scanf("%d", &CL.ClassNumber);Class[i].Number=CL.ClassNumber;printf("请输入课程名:");scanf("%s", );strcpy(Class[i].Name,);printf("请输入讲课学时:");scanf("%f", &CL.TeachTime);Class[i].TeachTime=CL.TeachTime;printf("请输入实践学时:");scanf("%f", &CL.PracticeTime);Class[i].PracticeTime=CL.PracticeTime;CL.Credit = (CL.TeachTime+ CL.PracticeTime) / 16;Class[i].Credit=CL.Credit ;printf("请输入开课学期:");scanf("%s", CL.Semester);strcpy(Class[i].Semester,CL.Semester);printf("请输入考核方式:");scanf("%s", CL.TextWay);strcpy(Class[i].TextWay,CL.TextWay);save();fclose(fp);}/***********统计模块***********/void Statistics()int i,n1=0,n2=0;float m1=0,m2=0;FILE*fp;if ((fp = fopen("Class.txt", "r")) == NULL){printf("cannot open file\n");exit(0);}for ( i = 0; i < 10; i++){fscanf(fp, "%d%d%s%f%f%f%s%s\n",&Class[i].Number,&Class[i].ClassNumber, Class[i].Name, &Class[i].TeachTime, &Class[i].PracticeTime, &Class[i].Credit, Class[i].Semester, Class[i].TextWay);if (strcmp(Class[i].Semester,"春季")==0){n1++;m1= m1 + Class[i].Credit;}else if (strcmp(Class[i].Semester,"秋季")==0){n2++;m2 = m2 + Class[i].Credit;}}printf("春季学期总课程数为%d\n", n1);printf("春季学期总学分数为%f\n", m1);printf("秋季学期总课程数为%d\n", n2);printf("秋季学期总学分数为%f\n", m2);}/**********查询模块**************/void Query(){int i, k,a;float b;char m[10];FILE*fp;if ((fp = fopen("Class.txt", "r")) == NULL){printf("cannot open file\n");exit(0);}for (i= 0; i<10; i++)fscanf(fp, "%d%d%s%f%f%f%s%s\n",&Class[i].Number,&Class[i].ClassNumber, Class[i].Name, &Class[i].TeachTime, &Class[i].PracticeTime, &Class[i].Credit, Class[i].Semester, Class[i].TextWay);printf("查询模块:");printf("\n");printf("***********************************************\n");printf("* *\n");printf("* 1:课程编号2:课程学分*\n");printf("* *\n");printf("* 3:开课学期*\n");printf("* *\n");printf("***********************************************\n");printf("\n\n请输入查询选项:");scanf("%d", &k);for (; k<1 || k>4;){printf("请输入1到4之间的整数:");scanf("%d", &k);}if (k==1){printf("请输入要查询的课程编号:");scanf("%d", &a);for ( i = 0; i < 10; i++){if (Class[i].ClassNumber == a)break;}printf("记录编号:%d\n",Class[i].Number);printf("课程编号:%d\n",Class[i].ClassNumber);printf("课程名:%s\n",Class[i].Name);printf("讲课学时:%f\n",Class[i].TeachTime);printf("实践学时:%f\n",Class[i].PracticeTime);printf("学分:%f\n",Class[i].Credit);printf("开课学期:%s\n",Class[i].Semester);printf("考核方式:%s\n\n",Class[i].TextWay);}else if (k==2){printf("请输入要查询的课程的学分:");scanf("%f", &b);for ( i = 0; i < 10; i++){if (Class[i].Credit == b){printf("记录编号:%d\n",Class[i].Number);printf("课程编号:%d\n",Class[i].ClassNumber);printf("课程名:%s\n",Class[i].Name);printf("讲课学时:%f\n",Class[i].TeachTime);printf("实践学时:%f\n",Class[i].PracticeTime);printf("学分:%f\n",Class[i].Credit);printf("开课学期:%s\n",Class[i].Semester);printf("考核方式:%s\n\n",Class[i].TextWay);}}}else{printf("请输入要查询的开课学期:");scanf("%s", m);for ( i = 0; i < 10; i++){if (strcmp(Class[i].Semester,m)==0){printf("记录编号:%d\n",Class[i].Number);printf("课程编号:%d\n",Class[i].ClassNumber);printf("课程名:%s\n",Class[i].Name);printf("讲课学时:%f\n",Class[i].TeachTime);printf("实践学时:%f\n",Class[i].PracticeTime);printf("学分:%f\n",Class[i].Credit);printf("开课学期:%s\n",Class[i].Semester);printf("考核方式:%s\n\n",Class[i].TextWay);}}}}/**********添加模块*************/void Add(){int i;FILE*fp;if ((fp = fopen("Class.txt", "r")) == NULL){printf("cannot open file\n");exit(0);}for (i=0; i<10; i++){fscanf(fp, "%d%d%s%f%f%f%s%s\n",&Class[i].Number,&Class[i].ClassNumber, Class[i].Name, &Class[i].TeachTime, &Class[i].PracticeTime, &Class[i].Credit, Class[i].Semester, Class[i].TextWay);if (Class[i].Number == 0)break;}printf("请输入要添加的课程的相关信息:\n");printf("请输入记录编号:");scanf("%d", &Class[i].Number);printf("请输入课程编号:");scanf("%d", &Class[i].ClassNumber);printf("请输入课程名:");scanf("%s", Class[i].Name);printf("请输入讲课学时:");scanf("%f", &Class[i].TeachTime);printf("请输入实践学时:");scanf("%f", &Class[i].PracticeTime);Class[i].Credit = (Class[i].TeachTime + Class[i].PracticeTime) / 16;printf("请输入开课学期:");scanf("%s", Class[i].Semester);printf("请输入考核方式:");scanf("%s", Class[i].TextWay);save();}/********删除模块**********/void Delete(){int n,i;printf("请输入要删除的课程的课程编号:");scanf("%d", &n);FILE*fp;if ((fp = fopen("Class.txt", "r")) == NULL){printf("cannot open file\n");exit(0);}for ( i = 0; i < 10; i++){fscanf(fp, "%d%d%s%f%f%f%s%s\n",&Class[i].Number,&Class[i].ClassNumber, Class[i].Name, &Class[i].TeachTime, &Class[i].PracticeTime, &Class[i].Credit, Class[i].Semester, Class[i].TextWay);if (Class[i].ClassNumber == n)Class[i].Number = 0;Class[i].ClassNumber=0;Class[i].Credit = 0;strcpy(Class[i].Name, "0");Class[i].PracticeTime = 0;strcpy(Class[i].Semester, "0");Class[i].TeachTime=0;strcpy(Class[i].TextWay, "0");break;}}save();fclose(fp);}/*******显示模块**********/void Display(){FILE*fp;if ((fp = fopen("Class.txt", "r")) == NULL){printf("cannot open file\n");exit(0);}for (int i = 0; i<10; i++)fscanf(fp, "%d%d%s%f%f%f%s%s\n",&Class[i].Number,&Class[i].ClassNumber, Class[i].Name, &Class[i].TeachTime, &Class[i].PracticeTime, &Class[i].Credit, Class[i].Semester, Class[i].TextWay);for (i = 0; i < 10&&Class[i].Number!='\0'; i++){printf("记录编号:%d\n",Class[i].Number);printf("课程编号:%d\n",Class[i].ClassNumber);printf("课程名:%s\n",Class[i].Name);printf("讲课学时:%f\n",Class[i].TeachTime);printf("实践学时:%f\n",Class[i].PracticeTime);printf("学分:%f\n",Class[i].Credit);printf("开课学期:%s\n",Class[i].Semester);printf("考核方式:%s\n\n",Class[i].TextWay);}fclose(fp);}/**********退出模块*************/{exit(0);}/**********主函数*************/int main(){char c;while(1){int n;printf("*********************MENU********************\n");printf("* *\n");printf("* 1:课程信息输入2:课程信息修改*\n");printf("* *\n");printf("* 3:课程信息统计4:课程信息查询*\n");printf("* *\n");printf("* 5:课程添加6:课程信息删除*\n");printf("* *\n");printf("* 7:浏览8:退出*\n");printf("* *\n");printf("*********************************************\n");printf("\n\n请选择功能序号:");scanf("%d", &n);/*对选择的数字进行判断*/for (; n<1 || n>8;){printf("请输入1到8之间的整数:");scanf("%d", &n);}/*选择功能*/switch (n){case 1:Input(); Display(); break;case 2:Modification(); Display(); break;case 3:Statistics(); break;case 4:Query(); break;case 5:Add(); Display(); break;case 6:Delete(); Display(); break;case 7:Display();break;case 8:Quit();}printf("是否继续Y/N\n");fflush(stdin);scanf("%c",&c);if(c=='N')Quit();system("cls");}return 0;}。
c语言方面毕业设计选题
c语言方面毕业设计选题篇一:C语言课程设计选题C语言课程设计一、设计要求与设计报告设计要求1、任意选定以下一个题目,限3人选的题目可由1-3人完成(用*表示)2、模块化程序设计3、锯齿型程序书写格式4、必须上机调试通过所有题目必须要用到链表,能将生成的文件存储于外部存储器上,并且从外部存储器上可以读写该文件的功能。
设计报告格式:1、设计目的2、总体设计(程序设计组成框图、流程图)3、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施5、源程序清单和执行结果:清单中应有足够的注释6、体会。
二、检查要求:1、每个人必须有程序运行结果2、每个人必须交《C语言课程设计报告》和设计程序清单3、课程设计任务必须由个人独立完成,禁止相互抄袭,如有发现,严肃处理三、打分标准:1、根据程序运行结果2、根据《C语言课程设计报告》,学生能对自己的程序面对教师提问并能熟练地解释清楚,以上二项缺一不可3、由于课程设计各题目的难度不一,所以成绩的评定将根据各人完成题目的难度和完成情况的不同,分别评定成绩,如未能完成任何题目,则以不及格计算四、提交时间课程设计任务完成时间(以安排为准),届时上交课程设计报告和程序。
课设题目*题目一:职工信息管理系统设计试设计一职工信息管理系统,使之能提供以下功能:1、系统以菜单方式工作2、职工信息录入功能(职工信息用文件保存)--输入3、职工信息浏览功能--输出4、查询或排序功能:(至少一种查询方式)——算法,按工资查询,按学历查询等5、系统进入画面(静态或动画)6、职工信息删除、修改功能(可选项)创新要求在基本要求达到后,可进行创新设计,如对菜单进行美化。
信息描述职工信息包括职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等(职工号不重复)。
功能描述1. 录入职工信息并保存2. 显示所有职工信息(以一定的格式)3. 查询职工信息(以一种或多种方式)4. 修改职工信息并保存5. 删除职工信息*题目二:图书信息管理系统设计图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
c语言课程设计
课程设计报告正文1、目的:1) 对C各部分知识的综合应用能力2) 提咼程序设计的能力3) 提升对于较大程序的抽象分析设计能力4) 学习调试和测试的技巧2、所做题目的意义:通讯录管理系统在当今这个信息发达的社会是必不可少的,这个通讯录管理系统可以方便的为我们添加、管理联系人,不必一定要记住这些庞大的信息,可以很方便的调用出自己所需要的信息,随时的修改这些信息,这些在这个时代是非常的必要的。
3、本人所作的工作:(1)、写出了预习报告。
从图书馆搜集了些这方面的资料(2)、想好思路,写出了程序代码(3)、调试程序,找出其中的错误,最终成功的运行出程序(4)、写出课程设计报告4、系统的主要功能:该系统的是一个小型的通讯系统,它具有一般的通讯系统都具有的功能该程序具有查找、添加、修改、删除功能,其讯录包括:街道,城市,省,邮编。
5、、系统的总体设计:系统的基本要求和容:该系统要求具有查找,添加,修改,删除功能,其讯录包括:、,街道,城市,省,邮编。
但在实际设计中增加了一项,那就是末尾添加,可以在已有的记录末尾再次添加,不必每次都重新添加,方便用户描绘及绘制出系统的功能结构框图、程序设计组成框图,流程图等:此系统共分为九大模块,分别为以下的模块:第一模块:主函数ma in ()的功能是:根据选单的选项调用各函数,并完成相应的功能。
第二模块:quitRec()的功能是:退出选单。
第三模块:createRec()的功能是:创建新的通讯录。
第四模块:addRec()的功能是:在通讯录的末尾写入新的信息,并返回选单第五模块:findRec()的功能是:查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。
第六模块:alterRec()的功能是:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回。
第七模块:deleteRec()的功能是:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。
教师信息管理系统
课程设计任务书计算机科学与技术专业 2010 年级一班陈金利一、设计题目教师信息管理系统设计二、主要内容教师信息包括教师号、姓名、性别、年龄、学历、职称、工资、住址、电话等(教师号不重复)。
试设计一教师信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)教师信息录入功能--输入(3)教师信息删除功能(4)教师信息浏览功能--输出(5)查询和排序功能:(至少一种查询方式) --算法按教师号查询按职称查询等三、具体要求围绕课程设计的目的和意义,基本要求如下:1、认真阅读《C语言课程设计》指导书,明确课程设计的目的、意义和要求;2、快速总结C程序设计语言的精髓,如:函数的概念、函数的设计和函数的调用;3、快速熟悉Tuber C 或C++的上机环境。
能熟练进行高级编辑操作(特别是字块操作);熟悉步进式、断点跟踪的程序调试方法,提高工作效率。
4、根据“课程设计题目”,采用结构化的程序设计思想,确定系统的总体设计方案、确"定时间进度。
如果是多人共一题,则要首先完成小组内的人员分工及安排,不允许重题现象。
5.学习并了解良好的程序设计风格。
按质、按量、并按时间完成课程设计的任务。
6.提供可运行的课程设计系统,参加上机面试答辩。
本次课程设计的重点是:学会设计并编写函数,掌握好各函数之间的调用关系;利用文件操作函数,建立数据库并完成对数据库的各种操作;掌握几种典型算法的应用(如:冒泡法、选择排序法和折半查找法)。
同时锻炼学生根据题目进行分析、设计、编码、调试程序和书写必要文档的综合处理能力,从实践中学习并体会程序设计的结构化思想和设计方法。
四、进度安排依照教学计划,课程设计时间为3周。
按照软件工程的思想,软件系统的分析设计至关重要,并要充分重视书写“文档”。
避免甚至杜绝“拿到题目就编码”的现象。
建议将时间分为三个阶段:第一阶段,根据题目要求,拿出系统的总体设计方案:即构思各程序模块的算法,并画出相应的N-S图,同时编写相应的文档;第二阶段,根据N-S图编写程序代码并单独调试,再将调试通过的各个子模块进行集成调试;第三阶段,归纳文档资料,按要求填写在《课程设计说明书》上,并参加答辩。
c语言课程设计信息管理
c语言课程设计信息管理一、教学目标本节课的教学目标是让学生掌握C语言在信息管理方面的基本概念和应用,包括数据结构、算法和程序设计等方面的知识。
具体来说,知识目标要求学生了解C语言的基本语法、数据类型、运算符、控制语句和函数等;技能目标要求学生能够使用C语言编写简单的信息管理程序,如员工信息管理系统、图书管理系统等;情感态度价值观目标要求学生培养对编程的兴趣和热情,提高自主学习和解决问题的能力。
二、教学内容本节课的教学内容主要包括C语言的基本语法、数据类型、运算符、控制语句和函数等。
具体安排如下:1.引言:介绍C语言的发展历程、特点和应用领域。
2.数据类型和变量:讲解整型、浮点型、字符型等数据类型,以及变量的声明和使用。
3.运算符:介绍算术运算符、关系运算符、逻辑运算符等,并通过示例演示其用法。
4.控制语句:讲解顺序结构、分支结构和循环结构,以及相应的控制语句。
5.函数:介绍函数的定义、声明和调用,讲解函数的参数传递和返回值。
6.实例讲解:通过实际案例,演示如何使用C语言编写简单的信息管理程序。
三、教学方法为了激发学生的学习兴趣和主动性,本节课将采用多种教学方法,如讲授法、讨论法、案例分析法和实验法等。
具体安排如下:1.讲授法:讲解C语言的基本语法、数据类型、运算符、控制语句和函数等知识点。
2.讨论法:学生进行小组讨论,分享学习心得和编程经验。
3.案例分析法:分析实际案例,让学生了解C语言在信息管理方面的应用。
4.实验法:安排课后的编程实践,让学生动手编写简单的信息管理程序。
四、教学资源为了支持教学内容和教学方法的实施,本节课将准备以下教学资源:1.教材:《C语言程序设计》等相关教材,为学生提供理论知识的学习材料。
2.参考书:提供一些拓展阅读的资料,帮助学生深入了解C语言的编程技巧。
3.多媒体资料:制作PPT课件,展示C语言的基本语法和示例代码。
4.实验设备:为学生提供计算机和编程环境,让他们能够实际操作和实践。
c语言课程设计的内容
c 语言课程设计的内容一、课程目标知识目标:1. 理解C语言的基本语法和结构,掌握变量定义、数据类型、运算符和表达式等基础知识;2. 学会使用C语言进行顺序、选择和循环结构的编程,并能运用逻辑判断和循环控制解决实际问题;3. 掌握C语言中的数组和字符串操作,能够运用数组进行批量数据处理;4. 了解函数的定义和调用方法,能够编写简单的自定义函数。
技能目标:1. 能够运用C语言编写简单的程序,解决实际问题;2. 培养良好的编程习惯,编写规范、可读性强的代码;3. 学会使用调试工具,能够调试并修复程序中的错误;4. 提高逻辑思维能力,学会分析问题、设计算法并转化为C语言程序。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发学生的创新意识;2. 培养学生严谨、细心的学习态度,提高团队协作能力;3. 使学生认识到编程在现代社会中的重要作用,树立正确的价值观;4. 引导学生遵守编程道德规范,遵循国家法律法规,养成良好的社会责任感。
课程性质:本课程为C语言编程入门课程,旨在让学生掌握C语言的基本知识和编程技能,为后续学习打下基础。
学生特点:学生处于初中或高中年级,具有一定的逻辑思维能力和数学基础,对编程感兴趣,但可能缺乏实际编程经验。
教学要求:结合学生特点,采用任务驱动的教学方法,注重实践操作,让学生在动手实践中掌握编程技能。
同时,注重培养学生的编程兴趣和团队协作能力,提高学生的综合素质。
通过本课程的学习,使学生能够达到上述课程目标,并在后续的学习中不断提高。
二、教学内容1. C语言基础知识:变量、数据类型、常量、运算符、表达式;2. 控制结构:顺序结构、选择结构(if、switch)、循环结构(for、while、do-while);3. 数组:一维数组、二维数组、字符数组与字符串;4. 函数:函数定义、函数调用、函数声明、局部变量与全局变量;5. 编程实践:编写简单的计算器程序、排序算法实现、字符串处理等;6. 调试与优化:使用调试工具(如Turbo C)、程序错误类型及解决方法、代码优化。
程序设计c语言课程设计
程序设计c语言课程设计一、教学目标本课程的教学目标是使学生掌握C语言程序设计的基本概念、语法和编程技巧,培养学生运用C语言解决实际问题的能力。
具体分解为以下三个方面的目标:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数、数组和指针等概念。
2.技能目标:学生能够熟练使用C语言编写程序,解决简单的数学计算、数据处理和排序等问题。
3.情感态度价值观目标:培养学生对编程语言的兴趣,增强其自主学习和解决问题的能力,使其认识到程序设计在现代社会的重要性。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数、数组和指针等。
具体安排如下:1.第一章:C语言概述,介绍C语言的发展历程、特点和基本语法。
2.第二章:数据类型和运算符,讲解整型、浮点型、字符型数据以及各类运算符的用法。
3.第三章:控制结构,学习顺序结构、分支结构和循环结构的使用。
4.第四章:函数,讲解函数的定义、声明和调用,以及常用的库函数。
5.第五章:数组和指针,学习一维、二维数组的操作以及指针的基本用法。
6.第六章:字符串和文件操作,了解字符串的表示方式、文件的基本操作。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式:1.讲授法:教师通过讲解、举例等方式,向学生传授C语言的基本概念和编程技巧。
2.案例分析法:教师通过分析实际案例,引导学生运用C语言解决具体问题。
3.实验法:学生动手编写程序,巩固所学知识,培养实际编程能力。
4.讨论法:学生分组讨论,共同解决问题,提高沟通和合作能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:《C程序设计语言》(K&R)2.参考书:《C Primer Plus》、《C语言入门教程》3.多媒体资料:教学PPT、视频教程、在线编程练习平台4.实验设备:计算机、编程环境(如Visual Studio、Code::Blocks等)五、教学评估本课程的教学评估将采用多元化评价方式,全面客观地评价学生的学习成果。
c语言课程设计设计理念
c语言课程设计设计理念一、教学目标本课程旨在让学生掌握C语言的基本语法、数据结构和算法,培养学生独立编程和解决问题的能力。
具体目标如下:1.知识目标:•理解C语言的基本语法和编程规范;•熟悉常用数据类型、运算符和表达式;•掌握函数的定义和调用;•了解数组、指针和字符串的基本使用;•理解结构体和文件操作等高级概念。
2.技能目标:•能够使用C语言编写简单的程序;•熟练使用调试工具进行程序调试;•掌握基本的算法设计和分析方法;•能够独立解决编程问题,具备一定的编程能力。
3.情感态度价值观目标:•培养学生对计算机科学的兴趣和热情;•培养学生良好的编程习惯和团队协作精神;•培养学生面对挑战、解决问题的积极心态;•培养学生对知识产权的尊重和保护意识。
二、教学内容根据课程目标,本课程的教学内容主要包括以下几个方面:1.C语言基本语法和编程规范;2.数据类型、运算符和表达式;3.函数的定义和调用;4.数组、指针和字符串的使用;5.结构体和文件操作等高级概念;6.基本算法设计和分析方法;7.编程实践和调试技巧。
教学大纲将按照教材的章节顺序进行,每个章节都有相应的教学内容和作业要求。
具体安排如下:1.第1-2周:C语言基本语法和编程规范;2.第3-4周:数据类型、运算符和表达式;3.第5-6周:函数的定义和调用;4.第7-8周:数组、指针和字符串的使用;5.第9-10周:结构体和文件操作等高级概念;6.第11-12周:基本算法设计和分析方法;7.第13-14周:编程实践和调试技巧。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法:1.讲授法:教师讲解基本概念和语法,引导学生理解和掌握;2.案例分析法:分析典型实例,让学生了解实际应用场景;3.实验法:学生动手实践,巩固所学知识和技能;4.讨论法:分组讨论问题,培养学生的团队协作和沟通能力。
四、教学资源本课程将充分利用教学资源,以支持教学内容和教学方法的实施。
教师信息管理系统报告
目录目录 (I)一、选题背景 (1)1.1 主要问题及技术要求 (1)1.2基本思路 (1)2.1 函数设计思路及流程图 (2)2.1.1 程序基本功能和流程 (2)2.1.2主函数结构及流程 (2)2.2 部分主要函数的流程图 (3)2.3参数设置说明 (5)2.3.1结构体变量 (5)2.3.2整型变量n,m (5)三、程序及功能说明 (5)3.1 数据结构的设计 (5)3.2 信息初始化及进入菜单模块 (5)3.3显示教师信息模块 (7)3.4修改和查询教师信息模块 (8)3.5添加教师信息模块 (10)3.6按职工号排序模块 (11)3.7删除教师信息模块 (12)3.8退出管理系统模块 (12)3.9主函数模块 (13)四、结果分析 (14)4.1信息初始化及进入菜单模块 (14)4.1.1登录界面 (14)4.1.2选择界面 (15)4.2显示教师信息模块 (16)4.3修改教师信息模块 (17)4.4添加教师信息模块 (18)4.5按职工号排序模块 (19)4.6查询教师信息模块 (20)4.7删除教师信息模块 (21)4.8保存并退出板块 (22)4.9退出板块 (22)五、总结及心得体会 (23)参考文献 (26)源程序 (27)一、选题背景1.1 主要问题及技术要求学院教学信息是教学过程中重要的反馈,对这些信息的的整理、分析,对教学质量的监控、教学过程的管理有着重要的作用。
信息技术的发展渗透在生活的各个方面,教务管理系统的应用可以使教学管理更加方便、有效,我们小组应用C语言相关知识,编写程序来实现教职工信息的管理。
本课题主是要满足管理系统对教职工基本信息的输入、显示、修改、添加、查询、排序等技术要求。
1.2基本思路运用学习的C语言知识,特别是数组结构体和链表的综合使用,用结构体存储每个老师的基本信息,用链表将所有结构体连接起来,进而用链表对教师信息进行整体操作。
以switch语句为主设计主函数,进而调用显示、修改、添加、查询、排序等各个模块的子函数来实现所需要的功能。
高校教师捐款信息管理系统(c语言原代码)
#include<stdio.h>#include<stdlib.h>#include<string.h># define OK 1 //操作完成# define ERROR 0 //操作出错typedef struct deplist //定义院系链表的数据部分{char depno[5] ; //单位编号char depname[30]; //单位名称char depincharge[20]; //负责人char depadd[30]; //办公地点char deptel[9]; //办公电话int depsum; //学院捐款的总金额}DepType;typedef struct teachlist//定义教师链表的数据部分{char depno[5];//单位编号char teachno[8];//教师编号char teachname[20];//教师姓名char teachsex;//教师性别char teachbir[11];//出生日期char teachtel[12];//联系电话char teachmail[30];//E-mail地址int teachsum;//教师捐款的总金额}TeachType;typedef struct donlist//定义捐献链表的数据部分{ char depno[5];//单位编号char teachno[8];//教师编号int donmoney;//捐款金额char donway;//捐款方式char dondate[11];//捐款日期char dongoal[25];//捐款目的}DonType;//-----------------------定义一个捐款的链表-------------------------- typedef struct DonNode{DonType dondata;//定义数据部分struct DonNode *donnext;//定义后继指针}DonNode,*DonLinkList;//-----------------------定义一个教师的链表-------------------------- typedef struct TeachNode{TeachType teachdata;//定义数据部分struct TeachNode *teachnext;//定义后继指针DonLinkList tdon;//定义指向捐款表的指针}TeachNode,*TeachLinkList;//-----------------------定义一个院系的链表--------------------------typedef struct DepNode{DepType depdata;//定义数据部分struct DepNode *depnext;//定义后继指针TeachLinkList dteach;//定义指向教师表的指针}DepNode,*DepLinkList;DepLinkList dep_head;//定义头指针//---------------------------函数申明--------------------------------int Depblock();//开创带头结点的空院系链表void createlist();//基本信息的录入DepNode *traversaldep();//遍历院系表TeachNode *traversalteach();//遍历教师表DonNode *traversaldon();//遍历捐款表void changelist();//修改基本表的内容void changedep();//修改院系表的内容void changeteach();//修改教师表的内容void changedon();//修改捐款表的内容void deletelist();//删除基本表中的相应数据void deletedep();//删除院系表中的相应数据void deleteteach();//删除教师表中的相应数据void deletedon();//删除捐款表中的相应数据void insetlist();//在基本表中插入数据void insetdep();//在院系表中插入数据void insetteach();//在教师表中插入数据void insetdon();//在捐款表中插入数据void searchlist();//查询基本表中的信息void prindep(DepLinkList);//打印院系表的数据void printeach(TeachLinkList);//打印教师表的数据void prindon(DonLinkList);//打印捐款表的数据void countdep();//统计各单位某次捐款的总金额,从高到低排序后输出void countmaxteach();//列出捐款总金额最高的教师的捐款历史void countteach();//统计每位教师历次捐款总金额,按总金额从高到低排序后输出void messagecount();//选择不同的统计功能void beginning();//选择相应的功能模块//-------------------------创建空捐款链表--------------------------int Depblock(){int i;dep_head=(DepLinkList)malloc(sizeof(DepNode));//开辟内存空间dep_head->depnext=NULL;dep_head->dteach=NULL;for(i=0;i<5;i++)dep_head->depdata.depno[i]=0;for(i=0;i<30;i++)dep_head->depdata.depname[i]=0;for(i=0;i<20;i++)dep_head->depdata.depincharge[i]=0;for(i=0;i<30;i++)dep_head->depdata.depadd[i]=0;for(i=0;i<9;i++)dep_head->depdata.deptel[i]=0;return OK;}//-------------------------基本信息的录入---------------------------void createlist(){DepLinkList dep=NULL;TeachLinkList teach;DonLinkList don;char ch;int i=1;while(i){i=0;dep=(DepLinkList)malloc(sizeof(DepNode));//创建单位基本信息的结点printf("请输入单位的编号:");scanf("%s",dep->depdata.depno);getchar();printf("请输入单位的名称:");scanf("%s",dep->depdata.depname);getchar();printf("请输入单位的负责人:");scanf("%s",dep->depdata.depincharge);getchar();printf("请输入单位的办公地点:");scanf("%s",dep->depdata.depadd);getchar();printf("请输入单位的办公电话:");scanf("%s",dep->depdata.deptel);getchar();dep->dteach=NULL;dep->depnext=dep_head->depnext;dep_head->depnext=dep;printf("是否还需要继续输入数据?[y/n]:");ch=getchar();getchar();if(ch=='y')i=1;}dep=dep_head->depnext;while(dep){printf("是否有在%s中添加教师项?[y/n]:",dep->depdata.depname);ch=getchar();getchar();while(ch=='y'){teach=(TeachLinkList)malloc(sizeof(TeachNode));strcpy(teach->teachdata.depno,dep->depdata.depno);printf("请输入教师的编号:");scanf("%s",teach->teachdata.teachno);getchar();printf("请输入教师的姓名:");scanf("%s",teach->teachdata.teachname);getchar();printf("请输入教师的性别:");scanf("%c",&teach->teachdata.teachsex);getchar();printf("请输入教师的出生日期:");scanf("%s",teach->teachdata.teachbir);getchar();printf("请输入教师的联系电话:");scanf("%s",teach->teachdata.teachtel);getchar();printf("请输入教师的E-mail地址:");scanf("%s",teach->teachdata.teachmail);getchar();teach->tdon=NULL;teach->teachnext=dep->dteach;dep->dteach=teach;printf("是否继续在%s中添加教师信息?[y/n]:",dep->depdata.depname);ch=getchar();getchar();}dep=dep->depnext;}dep=dep_head->depnext;teach=NULL;while(dep){teach=dep->dteach;while(teach){printf("是否要为%s老师添加捐款情况?[y/n]:",teach->teachdata.teachname);ch=getchar();getchar();while(ch=='y'){don=(DonLinkList)malloc(sizeof(DonNode));strcpy(don->dondata.depno,dep->depdata.depno);strcpy(don->dondata.teachno,teach->teachdata.teachno);printf("请输入捐款的金额:");scanf("%d",&don->dondata.donmoney);getchar();printf("请输入捐款的方式:");scanf("%c",&don->dondata.donway);getchar();printf("请输入捐款的日期:");scanf("%s",don->dondata.dondate);getchar();printf("请输入捐款的目的:");scanf("%s",don->dondata.dongoal);getchar();don->donnext=teach->tdon;teach->tdon=don;printf("是否还要继续在%s中输入捐款情况?[y/n]:",teach->teachdata.teachname);scanf("%c",&ch);getchar();}teach=teach->teachnext;}dep=dep->depnext;}printf("是否要继续输入新的数据?[y->继续输入][n->返回上一级菜单]:");ch=getchar();getchar();if(ch=='y')createlist();elsebeginning();}//--------------------遍历院系表-----------------------------DepNode *traversaldep(){DepLinkList dep=dep_head->depnext;int i=1;char ch[5];while(i!=0){printf("请输入院系的编号:");scanf("%s",ch);getchar();while(dep!=NULL){if(!strcmp(dep->depdata.depno,ch)){i=0;return dep;}dep=dep->depnext;}if(i==1)printf("您输入的数据不存在!请重新输入\n");}return NULL;}//--------------------遍历教师表----------------------------- TeachNode *traversalteach(){DepLinkList dep=dep_head->depnext;TeachLinkList t;int i=1;char dno[5];char tno[8];while(i!=0){printf("请输入院系的编号:");scanf("%s",dno);getchar();printf("请输入教师的编号:");scanf("%s",tno);getchar();while(dep!=NULL){if(!strcmp(dep->depdata.depno,dno)){t=dep->dteach;while(t!=NULL){if(!strcmp(t->teachdata.teachno,tno)){i=0;return t;}t=t->teachnext;}}dep=dep->depnext;}if(i==1)printf("您输入的数据不存在!请重新输入\n");}return NULL;}//--------------------遍历捐款表----------------------------- DonNode *traversaldon(){DepLinkList dep=dep_head->depnext;TeachLinkList teach;DonLinkList don;int i=1;char dno[5];char tno[8];char dgoal[25];while(i!=0){printf("请输入院系的编号:");scanf("%s",dno);getchar();printf("请输入教师的编号:");scanf("%s",tno);getchar();printf("请输入教师的捐款目的:");scanf("%s",dgoal);getchar();while(dep!=NULL){if(!strcmp(dep->depdata.depno,dno)){teach=dep->dteach;while(teach!=NULL){if(!strcmp(teach->teachdata.teachno,tno)){don=teach->tdon;while(don!=NULL){if(!strcmp(don->dondata.dongoal,dgoal)){i=0;return don;}don=don->donnext;}}teach=teach->teachnext;}}dep=dep->depnext;}if(i==1)printf("输入的数据不存在!请重新输入\n");}return NULL;}//-----------------------修改基本表------------------------------void changelist(){int choice;printf("\n");printf("1.院系表 2.教师表 3.捐款表0.退出\n");printf("请输入需要修改的基本表:");scanf("%d",&choice);getchar();if(choice<0||choice>3){choice=4;printf("您输入的数据不正确!请重新输入\n");}switch(choice){case 1:changedep();break;case 2:changeteach();break;case 3:changedon();break;case 4:changelist();break;case 0:beginning();break;}}//--------------------修改院系表的内容----------------------------void changedep(){DepLinkList dep;int n;char ch1[5];char ch2[30];char ch3[20];char ch4[30];char ch5[9];dep=traversaldep();printf("\n");printf("1.单位编号 2.单位名称 3.负责人 4.办公地点 5.办公电话0.退出\n");printf("请输入您需要修改的项目:");scanf("%d",&n);getchar();if(n<0||n>5){n=6;printf("您输入的数据不正确!请重新输入\n");}switch(n){case 1:printf("请输入修改的值:");scanf("%s",ch1);strcpy(dep->depdata.depno,ch1);break;case 2:printf("请输入修改的值:");scanf("%s",ch2);strcpy(dep->depdata.depname,ch2);break;case 3:printf("请输入修改的值:");scanf("%s",ch3);strcpy(dep->depdata.depincharge,ch3);break;case 4:printf("请输入修改的值:");scanf("%s",ch4);strcpy(dep->depdata.depadd,ch4);break;case 5:printf("请输入修改的值:");scanf("%s",ch5);strcpy(dep->depdata.deptel,ch5);break;case 6:changedep();break;case 0:beginning();break;}prindep(dep);}//--------------------修改教师表的内容-----------------------------------void changeteach(){TeachLinkList t;int n;char ch1[8];char ch2[20];char ch3;char ch4[11];char ch5[12];char ch6[30];t=traversalteach();printf("\n");printf("1.教师编号 2.姓名 3.性别 4.出生日期 5.联系电话 6.E-mail 0.退出\n");printf("请输入您需要修改的项目:");scanf("%d",&n);getchar();if(n<0||n>6){n=7;printf("您输入的数据不正确!请重新输入\n");}switch(n){case 1:printf("请输入修改的值:");scanf("%s",ch1);strcpy(t->teachdata.teachno,ch1);break;case 2:printf("请输入修改的值:");scanf("%s",ch2);strcpy(t->teachdata.teachname,ch2);break;case 3:printf("请输入修改的值:");scanf("%c",&ch3);t->teachdata.teachsex=ch3;break;case 4:printf("请输入修改的值:");scanf("%s",ch4);strcpy(t->teachdata.teachbir,ch4);break;case 5:printf("请输入修改的值:");scanf("%s",ch5);strcpy(t->teachdata.teachtel,ch5);break;case 6:printf("请输入修改的值:");scanf("%s",ch6);strcpy(t->teachdata.teachmail,ch6);break;case 7:changeteach();break;case 0:beginning();break;}printeach(t);}//-------------------------修改捐款表的内容-----------------------------------void changedon(){DonLinkList don;int n;int ch1;char ch2;char ch3[11];char ch4[25];don=traversaldon();printf("\n");printf("1.捐款金额 2.捐款方式 3.捐款日期 4.办捐款目的0.退出\n");printf("请输入您需要修改的项目:");scanf("%d",&n);getchar();if(n<0||n>4){n=5;printf("您输入的数据不正确!请重新输入\n");}switch(n){case 1:printf("请输入修改的值:");scanf("%d",&ch1);don->dondata.donmoney=ch1;break;case 2:printf("请输入修改的值:");scanf("%c",&ch2);don->dondata.donway=ch2;break;case 3:printf("请输入修改的值:");scanf("%s",ch3);strcpy(don->dondata.dondate,ch3);break;case 4:printf("请输入修改的值:");scanf("%s",ch4);strcpy(don->dondata.dongoal,ch4);break;case 5:changedon();break;case 0:beginning();break;}prindon(don);}//------------------删除基本表数据-----------------------------void deletelist(){int choice;printf("\n");printf("1.院系表 2.教师表 3.捐款表0.退出\n");printf("请输入需要删除结点的基本表:");scanf("%d",&choice);getchar();if(choice<0||choice>3){choice=4;printf("您输入的数据不正确!请重新输入\n");}switch(choice){case 1:deletedep();break;case 2:deleteteach();break;case 3:deletedon();break;case 4:deletelist();break;case 0:beginning();break;}}//------------------------删除院系表数据----------------------------------------- void deletedep(){DepLinkList d,p,q;p=dep_head->depnext;q=NULL;d=traversaldep();while(p!=d){q=p;p=p->depnext;}d->dteach=NULL;q->depnext=d->depnext;free(d);p=dep_head->depnext;while(p){prindep(p);p=p->depnext;}}//------------------------删除教师表数据----------------------------------------- void deleteteach(){DepLinkList d;TeachLinkList t,p,q;d=traversaldep();p=d->dteach;q=NULL;t=traversalteach();while(p!=t){q=p;p=p->teachnext;}if(q!=NULL){t->tdon=NULL;q->teachnext=t->teachnext;free(t);}else{d->dteach=t->teachnext;t->teachnext=NULL;t->tdon=NULL;free(t);}p=d->dteach;while(p){printeach(p);p=p->teachnext;}return;}//------------------------删除捐款表数据----------------------------------------- void deletedon(){DepLinkList dep=dep_head->depnext;TeachLinkList t;DonLinkList don,p,q;q=NULL;don=traversaldon();t=traversalteach();p=t->tdon;while(p!=don){q=p;p=p->donnext;}if(q!=NULL){q->donnext=don->donnext;free(don);}else{t->tdon=don->donnext;don->donnext=NULL;free(don);}p=t->tdon;while(p){prindon(p);p=p->donnext;}return;}//------------------------基本表插入数据------------------------------------------- void insetlist(){int choice;printf("\n");printf("1.院系表 2.教师表 3.捐款表0.退出\n");printf("请输入需要插入结点的基本表:");scanf("%d",&choice);getchar();if(choice<0||choice>3){choice=4;printf("您输入的数据不正确!请重新输入\n");}switch(choice){case 1:insetdep();break;case 2:insetteach();break;case 3:insetdon();break;case 4:insetlist();break;case 0:beginning();break;}}//------------------------院系表插入数据------------------------------------------- void insetdep(){DepLinkList p;char ch;int i=1;while(i){i=0;p=(DepLinkList)malloc(sizeof(DepNode));//开辟新结点p->dteach=NULL;printf("在院系表中添加新项:\n");printf("请输入单位的编号:");scanf("%s",p->depdata.depno);getchar();printf("请输入单位的名称:");scanf("%s",p->depdata.depname);getchar();printf("请输入单位的负责人:");scanf("%s",p->depdata.depincharge);getchar();printf("请输入单位的办公地点:");scanf("%s",p->depdata.depadd);getchar();printf("请输入单位的办公电话:");scanf("%s",p->depdata.deptel);getchar();p->depnext=dep_head->depnext;dep_head->depnext=p;printf("是否还需要继续输入数据?[y/n]:");ch=getchar();getchar();if(ch=='y')i=1;}p=dep_head->depnext;while(p){prindep(p);p=p->depnext;}return;}//------------------------教师表插入数据------------------------------------------- void insetteach(){DepLinkList d;TeachLinkList t;d=traversaldep();char ch;int i=1;printf("是否有在%s中添加教师项?[y/n]:",d->depdata.depname);ch=getchar();getchar();while(ch=='y'){t=(TeachLinkList)malloc(sizeof(TeachNode));strcpy(t->teachdata.depno,d->depdata.depno);printf("请输入教师的编号:");scanf("%s",t->teachdata.teachno);getchar();printf("请输入教师的姓名:");scanf("%s",t->teachdata.teachname);getchar();printf("请输入教师的性别:");scanf("%c",&t->teachdata.teachsex);getchar();printf("请输入教师的出生日期:");scanf("%s",t->teachdata.teachbir);getchar();printf("请输入教师的联系电话:");scanf("%s",t->teachdata.teachtel);getchar();printf("请输入教师的E-mail地址:");scanf("%s",t->teachdata.teachmail);getchar();t->teachnext=d->dteach;d->dteach=t;t->tdon=NULL;printf("是否继续在%s中添加教师信息?[y/n]:",d->depdata.depname);ch=getchar();getchar();}t=d->dteach;while(t){printeach(t);t=t->teachnext;}return;}//------------------------捐款表插入数据-------------------------------------------void insetdon(){DepLinkList d;TeachLinkList t;DonLinkList don,p;d=traversaldep();t=traversalteach();char ch;int i=1;printf("是否要为%s老师添加捐款情况?[y/n]:",t->teachdata.teachname);ch=getchar();getchar();while(ch=='y'){don=(DonLinkList)malloc(sizeof(DonNode));strcpy(don->dondata.depno,d->depdata.depno);strcpy(don->dondata.teachno,t->teachdata.teachno);printf("请输入捐款的金额:");scanf("%d",&don->dondata.donmoney);getchar();printf("请输入捐款的方式:");scanf("%c",&don->dondata.donway);getchar();printf("请输入捐款的日期:");scanf("%s",don->dondata.dondate);getchar();printf("请输入捐款的目的:");scanf("%s",don->dondata.dongoal);getchar();don->donnext=t->tdon;t->tdon=don;printf("是否还要继续在%s中输入捐款情况?[y/n]:",t->teachdata.teachname);ch=getchar();getchar();}p=t->tdon;while(p){prindon(p);p=p->donnext;}return;}//------------------------查询基本表数据-------------------------------------------void searchlist(){DepLinkList dep;TeachLinkList teach;DonLinkList don;int choice;printf("1.院系表 2.教师表 3.捐款表0.退出\n");printf("请输入需要查找的基本表的编号:");scanf("%d",&choice);getchar();if(choice<0||choice>3){choice=4;printf("您输入的数据不正确!请重新输入\n");}switch(choice){case 1:dep=traversaldep();prindep(dep);break;case 2:teach=traversalteach();printeach(teach);break;case 3:don=traversaldon();prindon(don);break;case 4:searchlist();break;case 0:beginning();break;}}//------------------------打印院系表数据-------------------------------------------void prindep(DepLinkList d){if(!d)return;printf("------------------------------------------------------------------------\n");printf("单位编号单位名称负责人单位地址单位电话\n");printf(" %s %s %s %s %s",d->depdata.depno,d->depdata.depname,d->dep data.depincharge,d->depdata.depadd,d->depdata.deptel);printf("\n------------------------------------------------------------------------\n");}//------------------------打印教师表数据-------------------------------------------void printeach(TeachLinkList t){if(!t)return;printf("------------------------------------------------------------------------\n");printf("单位编号教师编号教师名称教师性别出生日期联系电话E-mail\n");printf(" %s %s %s %c %s %s %s",t->teachdata.depno,t->teachd ata.teachno,t->teachdata.teachname,t->teachdata.teachsex,t->teachdata.teachbir,t->teachdata.te achtel,t->teachdata.teachmail);printf("\n注:教师性别=>M表示男,F表示女\n");printf("------------------------------------------------------------------------\n");}//------------------------打印捐款表数据-------------------------------------------void prindon(DonLinkList d){if(!d)return;printf("------------------------------------------------------------------------\n");printf("单位编号教师编号捐款金额捐款方式捐款日期捐款目的\n");printf(" %s %s %d %c %s %s",d->dondata.depno,d->dondata.teac hno,d->dondata.donmoney,d->dondata.donway,d->dondata.dondate,d->dondata.dongoal);printf("\n注:捐款方式=>0表示现金,1表示银行汇款\n");printf("------------------------------------------------------------------------\n");}//----------------------------------统计某次捐款的总额------------------------------------------------------void countdep(){int sum=0,i;char ch[25];DepLinkList dep,p;TeachLinkList t;DonLinkList don;dep=dep_head->depnext;printf("请输入需要统计的捐款名称:");scanf("%s",ch);getchar();i=1;while(dep!=NULL){t=dep->dteach;while(t!=NULL){don=t->tdon;while(don!=NULL){if(!strcmp(don->dondata.dongoal,ch))sum=sum+don->dondata.donmoney;don=don->donnext;}t=t->teachnext;}dep->depdata.depsum=sum;sum=0;dep=dep->depnext;}printf(" 统计各院系在%s捐款中的总金额\n",ch);dep=dep_head->depnext;while(i){sum=0;i=0;while(dep!=NULL){if(dep->depdata.depsum>sum){p=dep;sum=dep->depdata.depsum;i=1;}dep=dep->depnext;}if(i==1){printf("%s 的捐款总额为:%d\n",p->depdata.depname,p->depdata.depsum);p->depdata.depsum=0;p=NULL;}}}//----------------------------------统计每位教师捐款总金额------------------------------------------------------ void countteach(){int sum=0,i;DepLinkList dep;TeachLinkList t,p;DonLinkList don;dep=dep_head->depnext;i=1;while(dep!=NULL){t=dep->dteach;while(t!=NULL){don=t->tdon;while(don!=NULL){sum=sum+don->dondata.donmoney;don=don->donnext;}t->teachdata.teachsum=sum;sum=0;t=t->teachnext;}dep=dep->depnext;}printf(" 每位教师历次捐款总金额\n");dep=dep_head->depnext;while(i){sum=0;i=0;while(dep!=NULL){t=dep->dteach;while(t!=NULL){if(t->teachdata.teachsum>sum){p=t;sum=t->teachdata.teachsum;i=1;}t=t->teachnext;}dep=dep->depnext;}if(i==1){printf("%s 的捐款总额为:%d\n",p->depdata.depname,p->depdata.depsum);p->depdata.depsum=0;p=NULL;}}}//----------------------------------统计教师历次捐款历史------------------------------------------------------ void countmaxteach(){int sum=0;DepLinkList dep;TeachLinkList t,p;DonLinkList don,q;dep=dep_head->depnext;while(dep!=NULL){t=dep->dteach;while(t!=NULL){don=t->tdon;while(don!=NULL){sum=sum+don->dondata.donmoney;don=don->donnext;}t->teachdata.teachsum=sum;sum=0;t=t->teachnext;}dep=dep->depnext;}printf(" 捐款最多的教师历次捐款记录\n");dep=dep_head->depnext;while(dep!=NULL){sum=0;t=dep->dteach;while(t!=NULL){if(t->teachdata.teachsum>sum){p=t;sum=t->teachdata.teachsum+sum;}t=t->teachnext;}dep=dep->depnext;}q=p->tdon;while(q!=NULL){printf("%s 金额:%d\n",q->dondata.dongoal,q->dondata.donmoney);q=q->donnext;}}//----------------------------------统计功能选择---------------------------------------------- void messagecount(){int i;do{printf("\n");printf("--------------------------------------------\n");printf(" 请选择需要统计是功能:\n");printf("1->统计每位教师历次捐款总金额\n");printf("2->统计各单位某次捐款\n");printf("3->列出捐款总金额最高的教师的捐款历史\n");printf("4->返回上一级\n");printf("0->退出程序\n");printf("--------------------------------------------\n");printf("\n");printf("请输入您选择的功能号:");scanf("%d",&i);getchar();if(i>0)switch(i){case 1:countteach();break;case 2:countdep();break;case 3:countmaxteach();break;case 4:beginning();break;}printf("\n");if(i<0)printf("您输入的数值不正确,请重新输入!\n");}while(i!=0);}//----------------------------------主界面------------------------------------------------------ void beginning(){int i;do{printf("\n");printf("--------------------------------------------\n");printf(" 高校教师捐款信息管理系统\n");printf("============================================\n");printf(" 1->基本信息录入\n");printf(" 2->基本信息修改\n");printf(" 3->基本数据的插入\n");printf(" 4->基本数据的删除\n");printf(" 5->数据查询\n");printf(" 6->数据统计计算\n");printf(" 0->退出程序\n");printf("--------------------------------------------\n");printf("\n");printf("请输入您选择的功能号:");scanf("%d",&i);getchar();if(i>0)switch(i){case 1:createlist();break;case 2:changelist();break;case 3:insetlist();break;case 4:deletelist();break;case 5:searchlist();break;case 6:messagecount();break;case 0:getchar();break;}printf("\n");if(i<0)printf("您输入的数值不正确,请重新输入!\n");}while(i!=0);}//----------------------------------主函数------------------------------------------------------ void main(){Depblock();beginning();}。
C语言课程设计任务书(18份)详细版
C语言课程设计任务书详细版(18份)C语言课程设计任务书1题目:某学院教学信息管理系统功能:1、每一条记录包括一位教师的职工号、姓名、职称、性别、3门主讲课程(课程名称、开课学期、课程性质(学位与非学位课)和教学效果),教学效果综合评分。
2、输入功能:可以一次完成若干条记录的输入。
3、显示功能:完成全部教师记录的显示。
4、查找功能:完成按姓名或课程查找教师的相关记录,并显示。
5、排序功能:按职工号或教学效果综合评分进行排序。
6、插入功能:按教学效果综合评分高低插入一条教师记录。
7、将教师记录存在文件中。
8、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!要求:1、用C语言实现系统;2、利用结构体数组实现教学信息的数据结构设计;3、系统具有增加,查询,插入,排序等基本功能;4、系统的各个功能模块要求用函数的形式实现;5、将教学信息存在文件中。
课程设计的最后成果是实验报告一份,内容包括:1、预习报告(题目、流程图、程序的设计思想等);2、实验总结报告(测试方案、源程序代码(需打印)、调试中问题及解决方案、小结等)。
C语言课程设计任务书2题目:酒店房间登记与计费管理系统功能:1、屏幕上出现一个界面,让操作员能够方便的选择所需要进行的操作,包括登记入住、查询房间的入住情况、查询当前费用、结账退房等操作。
2、对不同标准的房间实施不同的收费标准,也可以按天收费或按小时收费,可根据顾客需要在登记的入住的时候进行选择。
3、在结账退房时,根据入住的时间,计费方式和房间单价计算出总费用。
分步实施:1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2、完成最低要求:建立房间列表,完成登记入住、查询房间入住情况功能。
3、进一步要求:完成计费和费用查询功能。
要求:1、用C语言实现系统;2、函数功能要划分好(结构化程序设计);3、界面友好(良好的人机交互),加必要的注释;4、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
c语言课程设计教务管理系统
c语言课程设计教务管理系统一、教学目标本课程的目标是使学生掌握C语言的基本语法、数据结构、算法和编程思想,能够运用C语言设计和实现简单的教务管理系统。
具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据结构、算法和编程思想,了解教务管理系统的原理和实现方法。
2.技能目标:学生能够运用C语言进行编程,设计和实现一个简单的教务管理系统。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,提高学生的问题解决能力和创新意识。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、算法和编程思想,以及教务管理系统的原理和实现方法。
具体安排如下:1.C语言的基本语法:包括变量、数据类型、运算符、表达式、控制语句等。
2.数据结构:包括数组、链表、栈、队列等。
3.算法:包括排序算法、查找算法等。
4.编程思想:包括结构化编程、面向对象编程等。
5.教务管理系统的原理和实现方法:包括学生信息管理、课程信息管理、成绩管理等。
三、教学方法本课程的教学方法主要包括讲授法、讨论法、案例分析法和实验法。
具体安排如下:1.讲授法:用于讲解C语言的基本语法、数据结构、算法和编程思想。
2.讨论法:用于讨论教务管理系统的原理和实现方法。
3.案例分析法:通过分析典型的教务管理系统案例,让学生了解和掌握教务管理系统的实现方法。
4.实验法:让学生动手实践,设计和实现一个简单的教务管理系统。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
具体安排如下:1.教材:选用《C程序设计语言》作为主要教材,辅助以《C语言编程实例解析》等参考书。
2.多媒体资料:包括PPT课件、教学视频等。
3.实验设备:包括计算机、网络设备等,用于实验和实践教学。
五、教学评估本课程的评估方式包括平时表现、作业和考试。
具体安排如下:1.平时表现:通过课堂参与、提问、讨论等环节评估学生的学习态度和积极性。
2.作业:布置适量的作业,评估学生的理解和应用能力。
c语言课程设计学生信息管理
c语言课程设计学生信息管理一、教学目标本课程的教学目标是使学生掌握C语言的基本语法,能够使用C语言进行简单的程序设计,通过学生信息管理系统的设计与实现,培养学生运用C语言解决实际问题的能力。
具体来说,知识目标包括:理解C语言的基本数据类型、运算符、控制结构、函数等基本概念;技能目标包括:能够使用C语言编写简单的程序,能够使用C语言进行学生信息的管理和处理;情感态度价值观目标包括:培养学生对计算机科学的兴趣,培养学生独立思考、解决问题的能力。
二、教学内容教学内容主要包括C语言的基本语法、学生信息管理系统的设计与实现。
具体安排如下:1.C语言的基本语法:包括数据类型、运算符、控制结构、函数等基本概念,通过讲解和示例让学生掌握这些基本概念。
2.学生信息管理系统的设计与实现:包括学生信息的增删改查等功能,通过案例教学,让学生学会如何使用C语言实现这些功能。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法。
在教学过程中,教师会通过讲解和示例让学生掌握C语言的基本语法,通过案例分析让学生学会如何设计学生信息管理系统,通过实验让学生亲手编写代码,巩固所学知识。
四、教学资源教学资源包括教材、实验设备等。
教材为学生提供了学习C语言的理论知识,实验设备让学生能够亲手编写代码,将理论知识付诸实践。
此外,还可以利用多媒体资料,如教学视频、PPT等,丰富学生的学习体验,帮助学生更好地理解和掌握C语言。
五、教学评估为了全面、客观地评估学生在C语言学习过程中的表现和成果,本课程采取多种评估方式,包括平时表现、作业、考试等。
平时表现主要评估学生在课堂上的参与程度、提问和回答问题的积极性等;作业主要评估学生的编程能力和对知识的掌握程度;考试则是对学生学习成果的全面检验。
这些评估方式将综合运用,以全面反映学生的学习成果。
六、教学安排本课程的教学安排将根据课程内容和学生的实际情况进行合理规划。
教学进度将确保在有限的时间内完成所有教学任务,教学时间将安排在学生精力充沛的时间段,教学地点则选择安静、舒适的教室。
《C语言程序设计》课程设计安排表1121801-20日语方向
东华理工大学软件学院
2011-2012学年(一)学期课程设计安排表软件工程系系软件工程专业 1121801-8 班级课程设计名称: C语言程序设计
制表人:许志文系负责人签名: 2011年12月1日
说明:
(1)指导教师资格审核,要求讲师以上或者具有硕士学位的讲师,一般讲师不能单独指导;
(2)一个指导教师原则上指导学生人数在20人之内,经过教务处批准后最多指导一个自然班;
(3)每个学生必须独立完成课程设计,选择同一课程设计题目的学生人数不超过5名。
(4)辅导超过1周且时间和地点变化的可用2个以上的辅导时间安排表。
(5)本表以教学班为单位,双面打印一式三份,教学科研部、系、辅导老师各一份,并在课程设计前二周交各系。
东华理工大学软件学院
2011-2012学年(一)学期课程设计安排表
软件工程系系软件工程专业 1121809-20 班级课程设计名称: C语言程序设计
制表人:许志文系负责人签名: 2011年12月1日
辅导时间安排表(第16周)
说明:
(1)指导教师资格审核,要求讲师以上或者具有硕士学位的讲师,一般讲师不能单独指导;
(2)一个指导教师原则上指导学生人数在20人之内,经过教务处批准后最多指导一个自然班;
(3)每个学生必须独立完成课程设计,选择同一课程设计题目的学生人数不超过5名。
(4)辅导超过1周且时间和地点变化的可用2个以上的辅导时间安排表。
(5)本表以教学班为单位,双面打印一式三份,教学科研部、系、辅导老师各一份,并在课程设计前二周交各系。
教师信息管理系统(设计说明书范本)
. ..C程序设计课程设计任务书及说明书设计题目教师信息管理系统学院计算机与通信专业、年级物联网工程学生王明明学号 _____ 14530008_指导教师时间 2015 年春季学期目录1 摘要 (3)2 前言 (4)3 正文 (5)3.1系统分析(需求分析)3.2系统总体设计3.3详细设计3.4系统测试及使用(操作)说明4 总结 (18)5 参考文献 (18)致谢附录: 程序源代码1 摘要本次课程设计采用C语言,开发了一个基本的教师信息管理系统,该系统具备了按教师姓名查找并输出教师信息,按教师号查找并输出教师信息,按教师姓名查找并删除数据,输出全部教师信息数据,对教师的管理也可以更加方便快捷。
关键词:C语言;课程设计;教师信息管理系统2 前言随着教育的广泛性的提高,教师的数量逐渐增多,但是在教师管理是出现教师姓名、年龄等出现错误的诸多问题。
本文针对上述问题,采用软件工程的开发原理,根据软件流程过程规范,按照需求分析、概要设计、详细设计、程序编码、测试、软件应用、软件维护等过程开发了一个教师信息管理系统。
采用c语言作为开发工具,设计了这个教师信息管理系统,解决了教师信息管理中存在的数据安全性、数据一致性等问题。
3、正文3.1 系统分析3.3.1.设计要求该设计要求教师以学校教师信息管理业务为背景,设计、开发一套“教师信息管理系统”软件。
通过该题目的设计过程,可以培养教师结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,针对c语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
得到软件工程的综合训练,提高解决实际问题的能力。
3.3.2设计任务1、以教师信息管理业务为背景,通过调研、分析现有的管理模式和已有的管理软件,建立系统模型;2、完成软件结构设计和算法设计;3、完成系统的软件开发和测试工作;教师信息包括:教师号,,年龄,性别,出生年月,地址,,E-mail等。
c语言顺序结构课程设计
c语言顺序结构课程设计一、课程目标知识目标:1. 掌握C语言的基本语法和结构,理解顺序结构程序设计的概念;2. 学会使用C语言中的基本数据类型、变量和常量,并能正确进行赋值和运算;3. 掌握C语言中的输入输出语句,能够实现数据的输入和输出;4. 理解顺序结构程序设计中常用的控制语句,如条件语句和循环语句。
技能目标:1. 能够编写简单的顺序结构C语言程序,实现基本的数学运算和数据处理;2. 学会使用顺序结构程序设计解决实际问题,培养问题分析和算法设计的能力;3. 掌握C语言调试工具的使用,能够对顺序结构程序进行调试和优化。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发主动学习和探究的精神;2. 培养学生的逻辑思维能力和团队协作精神,提高解决实际问题的能力;3. 增强学生的自信心和成就感,培养面对困难和挑战时的积极态度。
课程性质:本课程为C语言程序设计的基础课程,侧重于顺序结构程序设计的基本概念和技能培养。
学生特点:学生为初中生,具有一定的数学基础和逻辑思维能力,对编程有一定兴趣,但实践经验不足。
教学要求:结合学生特点,注重理论与实践相结合,通过案例分析和实际操作,使学生掌握顺序结构程序设计的基本方法和技巧。
在教学过程中,关注学生的个体差异,提供个性化指导,确保课程目标的实现。
将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. C语言简介:介绍C语言的发展历程、特点和应用领域,使学生了解C语言的重要性。
教材章节:第一章 C语言概述2. 基本数据类型与变量:讲解整型、浮点型、字符型等基本数据类型,以及变量和常量的定义与使用。
教材章节:第二章 数据类型与运算符3. 输入输出语句:学习C语言中的输入输出函数,掌握printf和scanf函数的使用。
教材章节:第二章 输入输出语句4. 运算符与表达式:介绍各类运算符及其优先级,学会编写简单的数学运算表达式。
教材章节:第二章 运算符与表达式5. 顺序结构程序设计:讲解顺序结构的概念,分析顺序结构程序设计的步骤和方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计任务书计算机科学与技术专业年级班一、设计题目教师信息管理系统设计二、主要容教师信息包括教师号、、性别、年龄、学历、职称、工资、住址、等(教师号不重复)。
试设计一教师信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)教师信息录入功能--输入(3)教师信息删除功能(4)教师信息浏览功能--输出(5)查询和排序功能:(至少一种查询方式) --算法按教师号查询按职称查询等三、具体要求围绕课程设计的目的和意义,基本要求如下:1、认真阅读《C语言课程设计》指导书,明确课程设计的目的、意义和要求;2、快速总结C程序设计语言的精髓,如:函数的概念、函数的设计和函数的调用;3、快速熟悉Tuber C 或C++的上机环境。
能熟练进行高级编辑操作(特别是字块操作);熟悉步进式、断点跟踪的程序调试方法,提高工作效率。
4、根据“课程设计题目”,采用结构化的程序设计思想,确定系统的总体设计方案、确"定时间进度。
如果是多人共一题,则要首先完成小组的人员分工及安排,不允许重题现象。
5.学习并了解良好的程序设计风格。
按质、按量、并按时间完成课程设计的任务。
6.提供可运行的课程设计系统,参加上机面试答辩。
本次课程设计的重点是:学会设计并编写函数,掌握好各函数之间的调用关系;利用文件操作函数,建立数据库并完成对数据库的各种操作;掌握几种典型算法的应用(如:冒泡法、选择排序法和折半查找法)。
同时锻炼学生根据题目进行分析、设计、编码、调试程序和书写必要文档的综合处理能力,从实践中学习并体会程序设计的结构化思想和设计方法。
四、进度安排依照教学计划,课程设计时间为3周。
按照软件工程的思想,软件系统的分析设计至关重要,并要充分重视书写“文档”。
避免甚至杜绝“拿到题目就编码”的现象。
建议将时间分为三个阶段:第一阶段,根据题目要求,拿出系统的总体设计方案:即构思各程序模块的算法,并画出相应的N-S图,同时编写相应的文档;第二阶段,根据N-S图编写程序代码并单独调试,再将调试通过的各个子模块进行集成调试;第三阶段,归纳文档资料,按要求填写在《课程设计说明书》上,并参加答辩。
三个阶段时间分配的大概比例是: 35:45:20。
五、完成后应上交的材料1.课程设计的题目、系统的总功能和各子模块的功能;2.题目的设计思想(或算法)简述;3.主要程序的框图(要求用N-S图);4.源程序代码(要求在关键的位置有注释,从而增加程序的可读性);5.课程设计的总结报告,主要包括以下容:(1)课程设计中遇到的主要问题和解决方法;(2)你的创新和得意之处;(3)设计中存在的不足及改进的设想;(4)本次课程设计的感想和心得体会。
以上完成的源程序及相关文档,填写在《课程设计说明书》上,要求干净整洁,符合课程设计的要求和规。
六、总评成绩指导教师签名日期年月日系主任审核日期年月日目录一.题目设计思想简述 (5)二.程序的N—S图 (7)2.1总程序的N—S图 (7)2.2各子函数的N—S图 (7)2.2.1教师信息录入函数 (8)2.2.2教师信息浏览函数 (8)2.2.3教师信息删除函数 (9)2.2.4教师信息查询函数 (9)2.2.5教师信息排序函数 (10)三.源程序代码 (11)四.程序运行效果图 (33)4.1登陆界面 (33)4.2菜单栏 (33)4.3录入功能 (34)4.4浏览功能 (34)4.5删除功能 (35)4.6查询功能 (35)4.7排序功能 (36)五.总结报告 (37)5.1课程设计中遇到的主要问题和解决方法 (37)5.2你的创新和得意之处 (37)5.3设计中存在的不足及改进的设想 (37)5.4本次课程设计的感想和心得体会 (38)一.题目设计思想简述如上图所示,该教师信息管理系统主要是一个以动态链表的应用为基础来实现对教师信息的录入,查询,删除等功能。
定义教师结构体如下:struct teacher{long num;//教师号char name[20];//char sex[5];//性别int age;//年龄char edu[20];//学历char title[20];//职称long wage;//工资char addr[100]; //地址char telep[15];//struct teacher *next;}*head=NULL;主函数只进行口令函数和菜单栏函数的调用,主要工作通过菜单函数实现。
口令为123456。
菜单栏函数通过用switch语句实现不同功能的选择,不同的功能用不同的子函数实现。
录入教师信息通过建立动态单链表来实现。
浏览教师信息则通过将链表所有数据顺序输出来实现。
查询功能只要从链表头开始不断往下一个结点读取信息跟所要查找的信息比较,直到读取到的信息跟所要查找的信息相同或链表尾为止,并把此结点的信息输出。
删除教师信息的函数是通过查找链表中有该信息的结点后将该结点移出链表,即使该结点前一个结点直接指向该结点后面的结点来达到删除信息的目的。
排序函数是通过交换结点在链表中的位置来实现的,即使得各结点在链表中的位置便是所要得到的排序该信息应在的位置,这样直接顺序输出链表的信息时就能按所要的排序输出了。
二.程序的N—S图2.1总程序的N—S图说明:各功能都是通过调用子函数来实现的。
2.2各子函数的N—S图子函数主要包括教师信息录入,教师信息浏览,教师信息删除,教师信息查询和教师信息排序等5个。
在退出系统时调用了一个保存信息到文件中的函数,该函数只是简单的应用了文件的读写功能,在此不写出其N—S图。
2.2.1教师信息录入函数说明:p1=(struct teacher *)malloc(LEN)中LEN是在程序开头的宏定义(#define LEN sizeof(struct teacher))。
其中n为全局变量,用来统计链表的结点数,以下出现的n都是同一个。
2.2.2教师信息浏览函数说明:实际程序中在链表头为空是提供了可以浏览之前保存在文件中的信息的功能,当选择该功能时就调用了一个读取文件的函数。
该函数只是对文件读写的简单应用,详细请看后面第三部分代码,这里不写出其N-S图。
2.2.3教师信息删除的函数2.2.4教师信息查询的函数在查询方面程序为用户提供了4种不同方式的查询,每一种方式式并调用该种方式的函数。
菜单栏函数跟主程序菜单栏的算法一样,此处只给出查询函数的N—S图。
说明:该N—S图是对应,教师号,职称,年龄四种查找方式的函数的。
当选择教师号查找时,输入i的即为教师号,与i做比较的为p 中的教师号,选择其他查找方式时类似。
2.2.5教师信息排序函数排序也跟查询一样给出多种排序方式并采用菜单栏函数,此处也只给出排序函数的N—S图。
说明:p1,p2指向的结点用来比较,p3,p4是用来记录结点的,当选用的排序方式不同,p1,p2用来比较的信息为所选方式的信息。
三.源程序代码#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <string.h>#define LEN sizeof(struct teacher)//宏定义结构体字节数int n=0;struct teacher//定义结构体{long num;//教师号char name[20];//char sex[5];//性别int age;//年龄char edu[20];//学历char title[20];//职称long wage;//工资char addr[100];//地址char telep[15];//struct teacher *next;//指向下一个结点}*head=NULL;void key()//口令检查的函数{int i;long a;for(i=0;i<3;i++){printf("请输入口令(还可输入%d次):\n",3-i);scanf("%ld",&a);if(a==123456)//检查口令是否正确{printf("欢迎进入系统\n");break;}else printf("口令错误\n");}if(i==3)//判断可以输入口令的次数是否用完{printf("可使用的口令输入次数已用完,将自动退出!\n");exit(0);}}void save()//把数据存入文件的函数{FILE *fp;int i;char filename[20];struct teacher *p;printf("\n 是否把此次登录系统录入和修改后的教师信息保存到文件中\n");printf(" 1:【是】0:【否】\n请选择:");scanf("%d",&i);while((i!=0)&&(i!=1))//判断输入的选择是否有效{printf("选择无效,请重新输入正确选项:");scanf("%d",&i);}if(i==1)//判断是否选择了要保存{printf("\n请输入要保存数据的文件名:");scanf("%s",filename);if((fp=fopen(filename,"wb"))==NULL){printf("\n无法打开文件\n");exit(0);}for(p=head;p!=NULL;p=p->next)if(fwrite(p,sizeof(struct teacher),1,fp)!=1)printf("\n此处数据有误\n");fclose(fp);}exit(0);}void read()//从文件读出数据的函数{struct teacher teach[299],temp;int i=0;FILE *fp;char filename[20];printf("\n请输入存有教师信息的文件名:");scanf("%s",filename);if((fp=fopen(filename,"rb"))==NULL){printf("\n无法打开文件\n");exit(0);}fseek(fp,-sizeof(struct teacher),2);/*将位置指针从文件末尾后退一个结构体的字节数*/fread(&temp,sizeof(struct teacher),1,fp);/*从所指向的文件中读出数据存储到结构体变量temp中*/fseek(fp,0,0);//将位置指针移到文件的开头if(fread(&teach[i],sizeof(struct teacher),1,fp)==1)/*判断文件开头读入的数据是否为空*/{printf("\n存有的教师信息如下:\n");while(teach[i].num!=temp.num)//进行循环读取文件{printf("教师号:%ld,:%s,性别:%s,年龄:%d,学历:%s,",teach[i].num,teach[i].name,teach[i].sex,teach[i].age ,teach[i].edu);printf("职称:%s\n 月薪:%ld,住址:%s,:%s\n",teach[i].title,teach[i].wage,teach[i].addr,teac h[i].telep);i=i+1;fread(&teach[i],sizeof(structteacher),1,fp);/*从文件中读入数据存储到结构体变量teach【i】中*/}//输出文件中的最后一个信息printf("教师号:%ld,:%s,性别:%s,年龄:%d,学历:%s,",teach[i].num,teach[i].name,teach[i].sex,teach[i].age ,teach[i].edu);printf("职称:%s\n 月薪:%ld,住址:%s,:%s\n",teach[i].title,teach[i].wage,teach[i].addr,teac h[i].telep);fclose(fp);}else printf("该文件中无教师信息\n");//文件为空时输出此处}void creat()//录入教师信息的函数{struct teacher *p1,*p2,*p3;p1=p2=(struct teacher *)malloc(LEN);/*申请一个结构体字节数的空间用来存储一个教师的信息*/printf("请输入一位教师的教师号(结束录入请输入0):");scanf("%ld",&p1->num);if(p1->num!=0)//判断用户是要结束录入还是要存储信息if(head==NULL) head=p1;/*判断链表是否为空,是则将链表头指向p1*/else //链表不为空则将链表尾指向p1{p3=head;//p3用来记录链表的尾部while(p3->next!=NULL)/*若p3不是链表尾则将p3指向下一个结点*/p3=p3->next;p3->next=p1;//将最后一个结点指向p1}while(p1->num!=0)//判断用户是否结束录入功能{//录入该教师号的教师对应的信息printf(": ");scanf("%s",p1->name);printf("性别:");scanf("%s",p1->sex);printf("年龄:");scanf("%d",&p1->age);printf("学历:");scanf("%s",p1->edu);printf("职称:");scanf("%s",p1->title);printf("月薪:");scanf("%ld",&p1->wage);printf("住址:");scanf("%s",p1->addr);printf(":");scanf("%s",p1->telep);n=n+1;//给统计录入的教师数n加一/*判断是否为第一个录入的信息,是则将链表头指向p1,否则将p2指向p1*/if(n==1) head=p1;else p2->next=p1;p2=p1;//p2用来记录链表的最后一个结点p1=(struct teacher *)malloc(LEN);//重新申请空间printf("请输入一位教师的教师号(结束录入请输入0): ");scanf("%ld",&p1->num);}p2->next=NULL;//将最后一个结点指向空}void print()//输出教师信息的函数{struct teacher *p;int i;p=head;if(head!=NULL)//判断链表是否为空{printf("\n这%d位教师的信息为:\n",n);do{printf("教师号:%ld,:%s,性别:%s,年龄:%d,学历:%s,职称:%s\n",p->num,p->name,p->sex,p->age,p->edu,p->title);printf(" 月薪:%ld,住址:%s,:%s\n",p->wage,p->addr,p->telep);p=p->next;//将下一个结点的首地址赋给p}while(p!=NULL);//到链表尾时结束循环}else//链表为空时执行以下部分{printf("\n你此次登录系统还没有录入教师信息,可进行以下操作:\n");printf(" 1:【浏览以前保存在文件中的教师信息】 2:【开始录入教师信息】\n");printf(" 3:【退出系统】4:【返回菜单】\n");printf("请选择:");scanf("%d",&i);while((i<1)&&(i>4)){printf("选择无效,请重新输入正确选项:");scanf("%d",&i);}if(i==1) read();//调用从文件读取数据的函数 if(i==2) creat();//调用录入信息的函数if(i==3) exit(0);//退出系统}}void del()//删除教师信息的函数{struct teacher *p1,*p2;long i;if(head==NULL)//判断链表是否为空{printf("\n还未录入过教师信息\n");//链表为空时输出return;}printf("请输入要删除教师信息的教师号:");scanf("%ld",&i);p1=head;while(i!=p1->num)//直到p1指向的结点是要删除的信息位置{if(p1->next==NULL) break;//p1的下个结点为空则退出循环p2=p1;//p2用来记录p1的前一个结点p1=p1->next;//p1指向下一个结点}if(i==p1->num)//判断p1是否为要删除的信息{if(p1==head) head=p1->next;/*若p1为头结点则将头指针指向p1的下一个结点*/else p2->next=p1->next;/*p1非头结点则将p1后面的结点连接到p1前一个结点的后面*/printf("\n已删除教师号为%ld的教师信息\n",i);n=n-1;//记录教师数的n要减一}//p1不是要删除的信息则表示要删除的信息不再链表中else printf("\n已录入的教师信息中没有教师号为%ld的\n",i);return;}void sort1()//按教师号进行排序的函数{struct teacher *p1,*p2,*p3,*p4;int i,j;if(head==NULL){printf("\n还未录入过教师信息\n");return;}if(head->next!=NULL) //判断是否只有一个信息{//用冒泡法排序p1=head;//p1记录用来比较的两个结点中的前面一个 p2=head->next;//p2记录比较的两个结点中的后面个for(i=1;i<n;i++)//实现n-1趟比较的外循环{for(j=0;j<n-i;j++)//在每一趟中进行n-i次比较的循环{if(p1->num>p2->num)/*比较相邻两个结点中教师号大小*/{//当p1的教师号大时则对调两个结点的位置if(p1==head) head=p2;else p3->next=p2;/*p1为头结点时则将头指针指向p2,否则就将p2连接到用来记录p1前一个结点的p3的后面*/p4=p2->next;//p4用来记录p2后面的结点p2->next=p1;//p1的结点换到原来p2的位置p1->next=p4;//原来p2后面的结点连接到p1p3=p2;//p3记录下p2的位置p2=p4;//p2指向原来位置的下一个结点}else/*p1中教师号没有打过p2中教师号,则将p1,p2都指向它们各自位置的下一个结点*/{p3=p1;//记录p1后移一位后它前个结点的位置p1=p2;p2=p2->next;}}p1=head;//p1指向链表头,开始下一趟外循环的准备p2=p1->next;//p2指向链表第二个结点}}printf("\n按教师号排序后的教师信息如下:\n");print();//调用教师信息浏览函数}void sort2()//按月薪排序的函数,算法跟按教师号排序的一样{struct teacher *p1,*p2,*p3,*p4;int i,j;if(head==NULL){printf("\n还未录入过教师信息\n");return;}if(head->next!=NULL){p1=head;p2=head->next;for(i=1;i<n;i++){for(j=0;j<n-i;j++){if(p1->wage>p2->wage){if(p1==head) head=p2;else p3->next=p2;p4=p2->next;p2->next=p1;p1->next=p4;p3=p2;p2=p4;}else{p3=p1;p1=p2;p2=p2->next;}}p1=head;p2=p1->next;}}printf("\n按月薪排序后的教师信息如下:\n");print();}void sort3()//按年龄排序的函数,算法跟按教师号排序的一样{struct teacher *p1,*p2,*p3,*p4;int i,j;if(head==NULL){printf("\n还未录入过教师信息\n");return;}if(head->next!=NULL){p1=head;p2=head->next;for(i=1;i<n;i++){for(j=0;j<n-i;j++){if(p1->age>p2->age){if(p1==head) head=p2;else p3->next=p2;p4=p2->next;p2->next=p1;p1->next=p4;p3=p2;p2=p4;}else{p3=p1;p1=p2;p2=p2->next;}}p1=head;p2=p1->next;}}printf("\n按年龄排序后的教师信息如下:\n");print();}void choose1()//选择排序方式的函数{int i;printf(" 排序方式\n");printf(" 1:【按教师号排序】2:【按年龄排序】\n");printf(" 3:【按月薪排序】\n");printf("请选择:");scanf("%d",&i);while((i<1)||(i>3)){printf("选择无效,请重新输入正确选项:");scanf("%d",&i);}switch(i){case 1:sort1();break;case 2:sort3();break;case 3:sort2();break;}}void search1()//按教师号查找的函数{struct teacher *p;long i;//存储用户输入的想要删除的教师号if(head==NULL){printf("\n还未录入过教师信息\n");return;}printf("请输入要查找的教师信息的教师号:");scanf("%ld",&i);for(p=head;p!=NULL;p=p->next)//p顺序指向结点与i比较,找出有i的数据的结点并输出if(p->num==i){printf("教师号:%ld,:%s,性别:%s,年龄:%d,学历:%s,职称:%s\n",p->num,p->name,p->sex,p->age,p->edu,p->title);printf(" 月薪:%ld,住址:%s,:%s\n",p->wage,p->addr,p->telep);return;}printf("已录入的教师信息中不存在该教师号\n");}void search2()//按查找的函数{struct teacher *p;char i[20];//记录用户输入的想要删除的int j=0;//j用来记录找到了多少个信息if(head==NULL){printf("\n还未录入过教师信息\n");return;}printf("请输入要查找的信息的教师:");scanf("%s",i);for(p=head;p!=NULL;p=p->next)if(strcmp(p->name,i)==0)//比较p指向的结点中的跟i的是否一致,是则输出{printf("教师号:%ld,:%s,性别:%s,年龄:%d,学历:%s,职称:%s\n",p->num,p->name,p->sex,p->age,p->edu,p->title);printf(" 月薪:%ld,住址:%s,:%s\n",p->wage,p->addr,p->telep);j=j+1;//每输出一个教师的信息则j加一}if(j==0) printf("已录入的教师信息中不存在该的教师\n");}void search3()//按职称查找的函数,算法与按查找的一样{struct teacher *p;char i[20];int j=0;if(head==NULL){printf("\n还未录入过教师信息\n");return;}printf("请输入要查找的信息的教师职称:");scanf("%s",i);for(p=head;p!=NULL;p=p->next)if(strcmp(p->title,i)==0){printf("教师号:%ld,:%s,性别:%s,年龄:%d,学历:%s,职称:%s\n",p->num,p->name,p->sex,p->age,p->edu,p->title);printf(" 月薪:%ld,住址:%s,:%s\n",p->wage,p->addr,p->telep);j=j+1;}if(j==0) printf("已录入的教师信息中不存在该职称的教师\n");}void search4()//按年龄查找的函数,算法与按教师号查找的一样{struct teacher *p;int i,j=0;if(head==NULL){printf("\n还未录入过教师信息\n");return;}printf("请输入要查找的信息的教师年龄:");scanf("%d",&i);for(p=head;p!=NULL;p=p->next)if(p->age==i){printf("教师号:%ld,:%s,性别:%s,年龄:%d,学历:%s,职称:%s\n",p->num,p->name,p->sex,p->age,p->edu,p->title);printf(" 月薪:%ld,住址:%s,:%s\n",p->wage,p->addr,p->telep);j=j+1;}if(j==0) printf("已录入的教师信息中不存在该年龄的教师\n");}void choose2()//选择查找方式的函数{int i;printf(" 查询方式\n");printf(" 1:【按教师号查询】2:【按查询】\n");printf(" 3:【按职称查询】4:【按年龄查询】\n");printf("请选择:");scanf("%d",&i);while((i<1)||(i>4)){printf("选择无效,请重新输入正确选项:");scanf("%d",&i);}switch(i){case 1:search1();break;case 2:search2();break;case 3:search3();break;case 4:search4();break;}}void menu()//菜单栏函数{int i;printf(" 菜单\n");printf(" 1:【教师信息录入】2:【教师信息输出】\n");printf(" 3:【教师信息删除】4:【查询个人信息】\n");printf(" 5:【排序】6:【退出系统】\n");printf("请选择: ");scanf("%d",&i);while((i<1)||(i>6)){printf("选择无效,请重新输入正确选项:");scanf("%d",&i);}switch(i){case 1:creat();break;case 2:print();break;case 3:del();break;case 4:choose2();break;case 5:choose1();break;case 6:save();}menu();}void main()//主函数{key();menu();}四.程序运行效果图4.1登陆界面4.2菜单栏4.3录入功能4.4浏览功能4.5删除功能4.6查询功能4.7排序功能五.总结报告5.1课程设计中遇到的主要问题和解决方法在这次的C语言课程设计的编程中,由于以前对链表和文件这两部分的容了解过少,因此在编程中涉及到这两方面的容时,照成了很大的阻碍,最主要是在对链表的结点进行交换,对文件某些特殊的读写不清楚。