




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大连交通大学 软件学院 C语言课程设计报告SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNINGC语言课程设计报告Experiment Designing reporterC语言课程设计报告C Program Experiment Designing 课程编号:01200308005 学时: 40学时适用专业:软件工程专业 授课单位:软件学院一、 C语言课程设计目的及要求目的:根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。要求:1 熟悉Turbo C 的编程环境、主要菜单功能。2 通过上机验证运算符、表达式、运算规则、函数使用。3 熟练使用C语言的典型语句编写简单程序。4 调试典型例题或习题。5 提高上机编程能力二、 实验类型设计类型三、 实验学时40学时四、 实验设备微型计算机、WINDOWS98以上版本的操作系统、Turbo C2.0 软件一套五、 C语言课程参考教材:1C语言程序设计 清华大学出版社 马靖善主编2.谭浩强.C语言程序设计(第三版).北京:高等教育出版社,2002课程设计(报告)任务书任务及要求:1. 设计(研究)内容和要求研究内容:C语言课程设计题目相关内容任务和要求:(1)学习C语言基础知识,掌握C语言编程和程序调试的基本技能。(2)对指导教师下达的题目进行系统分析。(3)根据分析结果完成系统设计。(4)编程:在计算机上实现题目的代码实现。(5)完成对该系统的测试和调试。(6)提交课程设计报告。(7)指标:要求完成课程设计报告3千字以上(约二、三十页).完成若干综合性程序设计题目,每个综合设计题目的语句行数的和在300行语句以上.2.原始依据了解C语言的基础知识,有一定的语言编程基础,能够熟练运用C语言进行程序设计。通过用C语言完成的题目,提高用C语言解决实际问题的能力。3.参考文献1 黄明等. C语言程序设计辅导教材.大连理工大学出版社,20062 马靖善等.C语言程序设计.清华大学出版社,20053 谭浩强.C语言程序设计(第二版).北京:高等教育出版社,2002 2009年9月4日目录C语言课程设计报告1学生管理系统11 题目简介 12 功能说明 程序框架 23 程序截图 44 源程序代码 11学生成绩管理系统(用链表实现)1. 题目简介:本系统主要实现用户登录,显示主菜单,学生信息的输入、输出、按学号查询学生信息、按成绩降序排序,追加学生信息,把学生信息保存到文件,从文件中导出学生信息等功能。在输入和追加信息时进行数据的有效性验证。2. 功能说明:1:登录功能:用户输入口令,如果与系统内保存的密码相一致,则登陆成功;否则重新输入口令,直至输入口令正确才可以登录系统。2:显示主菜单:用户登录成功,系统显示图形界面,显示系统功能的提示信息。3:学生信息输入:用户输入要添加的学生的学号、姓名、成绩等信息,系统创建链表,逐个保存学生信息。当用户输入学号为0时,输入结束。4:学生信息输出:将数组中的学生信息输出到屏幕上5:按学号查询学生信息:用户输入要查询学生的学号,系统查询该学号在链表中是否存在,存在则输出该学生的全部信息;否则,输出not found。6:成绩排序:对链表中的所有学生按成绩有高到低的顺序排序,用选择法来实现。7:追加学生信息:在已建好的链表尾追加学生信息(学号、姓名、成绩),当学号为0, 则输入结束。8:导出数据:把学生信息保存到磁盘文件里9:导入数据:从外部文件中导出学生信息到系统链表里,如果链表不存在,就创建一个新链表。10:数据验证:输入数据时,来验证数据的输入格式正确,保证学号唯一性程序框架3. 程序截图输入密码,进行验证:验证成功,登陆系统创建学生信息列表:显示结果:向链表中添加信息:添加结果:删除链表数据:显示删除结果:查询数据:输出查询结果:4. 源程序代码:#include#include#include#includestruct scorefloat english,computer,math,PE;float ave;struct studentchar number20;char classes20;char name20;int age; struct score score; struct student *next;typedef struct student stu;void menu();stu * mycreat();void myinsert(stu * head);void iscontinue(stu * head);void myprint(stu * head);stu * findbyname(stu *head);stu * findbynumber(stu *head);void informationshow(stu *pointer);void WriteToFile(stu *head);void deletebyname(stu *head);void deletebynumber(stu *head);stu * LoadFromFile();void WriteTodata(stu *head);void menu1();void sortbynumber(stu *head);void changenode(stu *p1,stu *p2);void exchange(stu *p1, stu *p2);void sortbyave(stu *head);void sortbyname(stu *head);stu * changenodebyave(stu *head);stu * changenodebyname(stu *head);stu * changenodebynumber(stu *head);int login(char orgPassword,char curPassword);void getPwd(char pwd);main()int select,ch;stu *head=NULL,*q=NULL;head=LoadFromFile();if(head=NULL)char strPassword = 123; /原密码 char curPwd20; /用户输入密码 int k;head=mycreat(); getPwd(curPwd);/puts(curPwd); k = login(strPassword,curPwd); while (k != 0)system(cls);printf(密码错误,重新输入:n);getPwd(curPwd);k = login(strPassword,curPwd);printf(n密码正确n);printf(press any key to continuen);getch();while(1) system(cls);menu();scanf(%d,&select);while(getchar()!=n)continue;switch(select)case 1:myinsert(head);iscontinue(head);break;case 2:myprint(head);break;case 3:myinsert(head);iscontinue(head);break;case 4:printf(1.按学号 2.按姓名n);scanf(%d,&ch);if(ch=1)q=findbynumber(head);break;else if(ch=2)q=findbyname(head);break;case 5:printf(1.按学号 2.按姓名n);scanf(%d,&ch);if(ch=1)deletebynumber(head);printf(删除成功!n);break;else if(ch=2)deletebyname(head);printf(删除成功!n);break;elsecontinue;case 6:printf(1.按学号 2.按姓名 3.按平均成绩n);scanf(%d,&ch);if(ch=1)head=changenodebynumber(head);else if(ch=2)head=changenodebyname(head);else if(ch=3)head=changenodebyave(head);elsecontinue;break;break;case 7:WriteToFile(head);break;case 8:WriteTodata(head);break;case 0:exit(0);break;default:printf(按键错误!请重新输入!n);break;else if(head!=NULL)char strPassword = 123; /原密码 char curPwd20; /用户输入密码 int k;head=mycreat(); getPwd(curPwd);/puts(curPwd); k = login(strPassword,curPwd); while (k != 0)system(cls);printf(密码错误,重新输入:n);getPwd(curPwd);k = login(strPassword,curPwd);printf(n密码正确n);printf(press any key to continuen);getch();while(1)system(cls);menu1();scanf(%d,&select);while(getchar()!=n)continue;switch(select)case 1:myprint(head);break;case 2:myinsert(head);iscontinue(head);break;case 3:printf(1.按学号 2.按姓名n);scanf(%d,&ch);if(ch=1)q=findbynumber(head);break;else if(ch=2)q=findbyname(head);break;case 4:printf(1.按学号 2.按姓名n);scanf(%d,&ch);if(ch=1)deletebynumber(head);printf(删除成功!n);break;else if(ch=2)deletebyname(head);printf(删除成功!n);break;elsecontinue;case 5:printf(1.按学号 2.按姓名 3.按平均成绩n);scanf(%d,&ch);if(ch=1)head=changenodebynumber(head);else if(ch=2)head=changenodebyname(head);else if(ch=3)head=changenodebyave(head);elsecontinue;break;case 6:WriteToFile(head);break;case 7:WriteTodata(head);break;case 0:exit(0);break;default:printf(按键错误!请重新输入!n);break;stu * mycreat()stu *head=NULL;head=(stu *)malloc(sizeof(stu);if(head=NULL)printf(内存分配失败!n);exit(0);elsehead-next=NULL;return head;stu * findbyname(stu *head)stu *q=NULL;char name20;q=head-next;printf(请输入要查找的姓名:);scanf(%s,name);while(1)if(strcmp(q-name,name)=0)informationshow(q);break;q=q-next;if(q=NULL)printf(没有查到相关信息!n);break;stu * findbynumber(stu *head)stu *q=NULL;char number20;q=head-next;printf(请输入要查找的学号:);scanf(%s,number);while(1)if(strcmp(q-number,number)=0)informationshow(q);break;q=q-next;if(q=NULL)printf(没有查到相关信息!n);break;void deletebynumber(stu *head)stu *q=NULL,*back=NULL;char number20;q=head;printf(请输入要删除的学号:);scanf(%s,number);while(1)back=q;q=q-next;if(strcmp(q-number,number)=0)if(q-next=NULL)back-next=NULL;free(q);WriteTodata(head);break;back-next=q-next;free(q);WriteTodata(head);break;if(q=NULL)printf(没有查到相关信息!n);break;void deletebyname(stu *head)stu *q=NULL,*back=NULL;char name20;q=head;printf(请输入要删除的姓名:);scanf(%s,name);while(1)back=q;q=q-next;if(strcmp(q-name,name)=0)if(q-next=NULL)back-next=NULL;free(q);WriteTodata(head);break;back-next=q-next;free(q);WriteTodata(head);break;if(q=NULL)printf(没有查到相关信息!n);break;void myinsert(stu * head)float english,computer,math,PE;float ave;stu *p=NULL,*q=NULL;q=head;p=(stu *)malloc(sizeof(stu);if(p=NULL)printf(内存分配失败!);exit(0);elsewhile(q-next!=NULL)q=q-next;q-next=p;q=p;printf(学号:);scanf(%s,q-number);printf(班级:);scanf(%s,q-classes);printf(姓名:);scanf(%s,q-name); cheak1:printf(年龄:);scanf(%d,&(q-age);if(q-age=99 | q-agescore.english=english;puter=computer;q-score.math=math;q-score.PE=PE;q-score.ave=ave;q-next=NULL;void iscontinue(stu * head)char c;while(1)printf(是否添加一个新队员? y/n n);c=getch();if(c!=y & c!=n & c!=Y & c!=N)printf(按键错误!请重新输入。n);continue;if(c=Y | c=y)WriteTodata(head);myinsert(head);if(c=N | c=n)WriteTodata(head);printf(添加信息结束!n);break;stu * LoadFromFile()FILE *fp=NULL; stu *q,*head=NULL,*p,*back;fp=fopen(information.dat,rb);if(fp=NULL)printf(硬盘中无数据模块n);return head;elsehead=(stu *)malloc(sizeof(stu);q=head;while(feof(fp)=0)back=q;p=(stu *)malloc(sizeof(stu);q-next=p;q=p;fread(q,sizeof(stu),1,fp);q-next=NULL;back-next=NULL;fclose(fp);return head;void myprint(stu * head)stu *q=NULL;int count=0;q=head-next;system(cls);printf(n);printf(学号 t班级 t 姓名t年龄 t 英语 t 电脑 t 数学 t 体育n);if(head!=NULL)while(q!=NULL)printf(%s t%5s t%10s t%d t%5.1f t%5.1f t%5.1f t%5.1f n,q-number,q-classes,q-name,q-age,q-score.english,puter,q-score.math,q-score.PE);q=q-next;count+;printf(n);printf( 共有档案数: %dn ,count);printf(n);elseprintf(找不到链表起始点!);getch();void informationshow(stu *pointer)printf(n n);printf(学号:%st 班级:%st 姓名:%st 年龄:%dn,pointer-number,pointer-classes,pointer-name,pointer-age);printf(成绩:n);printf(英语:%.2f t计算机:%.2f t 数学:%.2f t 体育:%.2fn,pointer-score.english,puter,pointer-score.math,pointer-score.PE);printf(平均分:%.2f,pointer-score.ave);printf(n n);getch();void menu() 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( * 7.输出到文本 *n); printf( * 8.写入到文件 *n); printf( * 0.退出系统 *n); printf( *n); printf( *n); printf(请选择0-8:n);void menu1() 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( * 7.写入到文件 *n); printf( * 0.退出系统 *n); printf( *n); printf( *n); printf(请选择0-8:n);void changenode(stu *p1,stu *p2) /把P2的值赋到P1里char number20;char classes20;char name20;int age;float english,computer,math,PE;float ave;strcpy(number,p1-number);strcpy(classes,p1-classes);strcpy(name,p1-name);age=p1-age;english=p1-score.english;computer=puter;math=p1-score.math;PE=p1-score.PE;ave=p1-score.ave;strcpy(p1-number,p2-number);strcpy(p1-classes,p2-classes);strcpy(p1-name,p2-name);p1-age=p2-age;p1-score.english=p2-score.english;puter=puter;p1-score.math=p2-score.math;p1-score.PE=p2-score.PE;p1-score.ave=p2-score.ave;strcpy(p2-number,number);strcpy(p2-classes,classes);strcpy(p2-name,name);p2-age=age;p2-score.english=english;puter=computer;p2-score.math=math;p2-score.PE=PE;p2-score.ave=ave;void sortbynumber(stu *head)stu *q;int i,j,max=0;for(q=head-next;q-next!=NULL;q=q-next)+max;for(i=0;inext;jnext)if(strcmp(q-number,q-next-number)0)changenode(q,q-next);void sortbyave(stu *head)stu *q;int i,j,max=0;for(q=head-next;q-next!=NULL;q=q-next)+max;for(i=0;inext;jnext)if(q-score.ave next-score.ave)changenode(q,q-next);void sortbyname(stu *head)stu *q;int i,j,max=0;for(q=head-next;q-next!=NULL;q=q-next)+max;for(i=0;inext;jnext)if(strcmp(q-name,q-next-name)0)changenode(q,q-next);stu * changenodebyave(stu *head)stu *q,*max,*max_frount,*newhead,*p;newhead=(stu *)malloc(sizeof(stu);newhead-next=NULL;q=head-next;max=head-next;while(head-next!=NULL)for(q=head-next,max=head-next;q-next!=NULL;q=q-next)if(q-next-score.ave max-score.ave)max_frount=q;max=q-next;if(max=head-next)head-next=head-next-next;elsemax_frount-next=max-next;p=newhead;while(p-next!=NULL)p=p-next;p-next=max;max-next=NULL;return newhead;stu * changenodebynumber(stu *head)stu *q,*min,*min_frount,*newhead,*p;newhead=(stu *)malloc(sizeof(stu);newhead-next=NULL;q=head-next;min=head-next;while(head-next!=NULL)for(q=head-next,min=head-next;q-next!=NULL;q=q-next)if(strcmp(q-next-number,min-number)next;if(min=head-next)head-next=head-next-next;elsemin_frount-next=min-next;p=newhead;while(p-next!=NULL)p=p-next;p-next=min;min-next=NULL;return newhead;stu * changenodebyname(stu *head)stu *q,*min,*min_frount,*newhead,*p;newhead=(stu *)malloc(sizeof(stu);newhead-next=NULL;q=head-next;min=head-next;while(head-next!=NULL)for(q=head-next
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论