ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:55.22KB ,
资源ID:20607091      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20607091.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言程序管理系统课程设计报告Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言程序管理系统课程设计报告Word文件下载.docx

1、int select; /保存选择结果变量*/char ch; /*保存(y,Y,n,N)*/int count=0; /*保存文件中的记录条数(或结点个数)*/Node *p,r; /*定义记录指针变量/l=(Node)malloc(sizeof(Node);if(!l) printf(”n 内存分配失败 ”); /*如没有申请到,打印提示信息/ return ; /返回主界面/ lnext=NULL;r=l;fp=fopen(”C:student”,ab+); /*以追加方式打开一个二进制文件,可读可写,若此文件不存在,会创建此文件*/if(fp=NULL) printf(”n=无法打开文

2、件!n exit(0);while(!feof(fp)p=(Node*)malloc(sizeof(Node);p) printf(” memory malloc failure!n”); /没有申请成功/ /退出/if(fread(p,sizeof(Node),1,fp)=1) /一次从文件中读取一条学生成绩记录*/ pnext=NULL; rnext=p; r=p; /r指针向后移一个位置/ count+;fclose(fp); /关闭文件/printf(n=打开文件成功,共记录的数目: d。n”,count);menu();while(1) system(cls”); menu(); p

3、=r; printf(”n 请输入您的选择 (09):”); /显示提示信息/ scanf(”d”,select);if(select=0) if(saveflag=1) /若对链表的数据有修改且未进行存盘操作,则此标志为1/ getchar(); printf(”n=是否保存修改记录文件?(y/n): scanf(”%c”,ch); if(ch=y|ch=Y) Save(l); printf(”=谢谢使用! getchar(); break;switch(select)case 1:Add(l);break; /增加学生记录*/case 2:Del(l); /删除学生记录/case 3:Qu

4、r(l);break; /*查询学生记录/case 4:Modify(l); /*修改学生记录/case 5:Insert(l); /*插入学生记录/case 6:Tongji(l); /统计学生记录*/case 7:Sort(l); /*排序学生记录*/case 8:Save(l); /*保存学生记录/case 9:system(”cls”);Disp(l); printf(”按任何键返回”); char a; scanf(”d”,a); /显示学生记录*/ default: Wrong();getchar(); /按键有误,必须为数值09/程序中建立了多个函数分别来完成每个所要求的功能:读

5、文件和写文件函数,建链表函数,插入、修改和删除函数,排序、统计和输出函数。程序利用各个函数来完成前面要求所需要的功能。二:程序调用图:三:功能菜单*菜单* ; 1 输入成绩 2 删除成绩 3 查询成绩 4 修改成绩 * 5 插入成绩 * 6 统计成绩 ” * 7 成绩排序 * 8 保存成绩 9 显示成绩 * 0 退出系统 * 四实验结果;(见程序运行)五:体会:做完这个c 语言程序设计的作业,我学会了很多新知识,对c语言有了更进一步的了解。开始时,我想用结构数组来做这个程序,但后来我发现用做它,修改数据和读取数据都显得很方便.于是,相比较之下,我便选择了链表。编程时会遇到一些困难,最令人头疼的

6、莫过于程序运行时出错了.有时 哪怕是一些很小的错误经常能导致难以预料到的后果,因此,编程时我尽量做到一丝不苟,不敢有丝毫疏忽。通过这次c语言编程的练习,我的编程水平有了进一步的提高,同时也使我对编程有了一个更清醒的了解和认识。六,程序。/密码123#include stdio.h” /标准输入输出函数库/stdlib。h” /标准函数库*/#include ”string。h /字符串函数库/include conio.h /屏幕操作函数库/define HEADER1 ” -学生成绩- ndefine HEADER2 学号 | 姓名 |C语言数学英语 总分 平均分 名次 | n”#defin

7、e HEADER3 -|-|-|-|- define FORMAT ” | 10s |%15s|4d 4d|%4d 4d | %.2f %4d n”#define DATA pdata。num,pdata.name,p-data。egrade,pdata。mgrade,pcgrade,p-data。total,pdata。ave,pdata.mingcidefine END ” - n”int saveflag=0; /是否需要存盘的标志变量*/定义与学生有关的数据结构*/typedef struct student /*标记为student*/char num10; /学号*/char na

8、me15; /*姓名/int cgrade; /*C语言成绩/int mgrade; /数学成绩/int egrade; /英语成绩/int total; /*总分*/float ave; /*平均分/int mingci; /*名次*/;/定义每条记录或结点的数据结构,标记为:node/typedef struct nodestruct student data; /数据域/struct node next; /*指针域/Node,Link; /*Node为node类型的结构变量,*Link为node类型的指针变量/void menu() /主菜单/system(cls”); /调用DOS命

9、令,清屏。与clrscr()功能相同/cprintf( 学生成绩管理系统 n #*菜单*n”); * 1 输入成绩 2 删除成绩 *n”); 3 查询成绩 4 修改成绩 *n”); * 5 插入成绩 6 统计成绩 n”); 7 成绩排序 * 8 保存成绩 *n”);cprintf(” 9 显示成绩 * 0 退出系统 *ncprintf(” *#n”);/cprintf()送格式化输出至文本窗口屏幕中/void printheader() /格式化输出表头/printf(HEADER1);printf(HEADER2);printf(HEADER3);void printdata(Node *p

10、p) /格式化输出表中数据/Node* p;p=pp;printf(FORMAT,DATA);void Wrong() /输出按键错误信息*/nnnnn*输入有错!按任意键继续!*ngetchar();void Nofind() /输出未查找此学生的信息/printf(”n=没有找到这名学生!n”);void Disp(Link l) /显示单链表l中存储的学生记录,内容为student结构中定义的内容/Node *p;p=lnext; /l存储的是单链表中头结点的指针,该头结点没有存储学生信息,指针域指向的后继结点才有学生信息/p) /p=NULL,NUll在stdlib中定义为0*/pri

11、ntf(”n=没有学生记录!return;nn”);printheader(); /输出表格头部/while(p) /逐条输出链表中存储的学生信息/printdata(p);p=pnext; /移动直下一个结点/printf(HEADER3);/*作用:用于定位链表中符合要求的节点,并返回指向该节点的指针参数:findmess保存要查找的具体内容; nameornum保存按什么查找; 在单链表l中查找;*/Node Locate(Link l,char findmess,char nameornum)Node *r;if(strcmp(nameornum,num”)=0) /按学号查询/r=l

12、next;while(r) if(strcmp(rdata。num,findmess)=0) /若找到findmess值的学号*/ return r; r=rnext;else if(strcmp(nameornum,”name”)=0) /按姓名查询*/r=lnext; if(strcmp(rdata.name,findmess)=0) /*若找到findmess值的学生姓名*/ return r; r=rreturn 0; /若未找到,返回一个空指针/输入字符串,并进行长度验证(长度lens)*/void stringinput(char *t,int lens,char notice)

13、char n255; do printf(notice); scanf(”s,n); /输入字符串/ if(strlen(n)lens)printf(”n 超过所需长度! n /*进行长度校验,超过lens值重新输入/ while(strlen(n)lens); strcpy(t,n); /将输入的字符串拷贝到字符串t中/*输入分数,0分数100)*/int numberinput(char *notice)int t=0; do printf(notice); /*显示提示信息/ scanf(d”,t); /*输入分数/ if(t100 | t0) printf(”n 评分必须在0100!

14、n”); /*进行分数校验/ while(t100 | tnext!=NULL)r=r-next; /将指针移至于链表最末尾,准备添加记录*/while(1) /一次可输入多条记录,直至输入学号为0的记录结点添加操作/while(1) /输入学号,保证该学号没有被使用,若输入学号为0,则退出添加记录操作/stringinput(num,10,输入号码(按0返回菜单): /格式化输入学号并检验/flag=0;if(strcmp(num,”0”)=0) /输入为0,则退出添加操作,返回主界面*/ return; while(s) /*查询该学号是否已经存在,若存在则要求重新输入一个未被占用的学号*

15、/ if(strcmp(sdata。num,num)=0) flag=1; break; s=s-next; if(flag=1) /*提示用户是否重新输入/ printf(=人数s是不存在的,再试一次?(y/n):”,num); scanf(”c”,ch);y|ch= continue; return; break;p=(Node )malloc(sizeof(Node); /申请内存空间*/ /返回主界面*/strcpy(pdata。num,num); /将字符串num拷贝到p-data.num中*/stringinput(pdata。name,15,Name:pdata.cgrade=n

16、umberinput(”C语言0-100: /输入并检验分数,分数必须在0100之间*/p-data.mgrade=numberinput(”数学 Score0-100: /*输入并检验分数,分数必须在0100之间/pegrade=numberinput(”英语 Score0100:pdata.total=pdata。egrade+pdata.cgrade+p-data.mgrade; /计算总分/pdata.ave=(float)(p-data。total/3); /计算平均分*/p-data。mingci=0;pnext=NULL; /表明这是链表的尾部结点*/r /将新建的结点加入链表尾

17、部中/r=p;saveflag=1;void Qur(Link l) /按学号或姓名,查询学生记录/ /*1:按学号查,2:按姓名查,其他:返回主界面(菜单)/char searchinput20; /*保存用户输入的查询内容/Node p;l-next) /若链表为空/system(”clsprintf(”n=没有学生记录!system(”cls”);printf(”n =1按学号搜寻= 2按名称搜索nprintf(” please choice1,2:scanf(%d”,select);if(select=1) /按学号查询/stringinput(searchinput,10,输入现有的

18、学生学号:p=Locate(l,searchinput,”num/在l中查找学号为searchinput值的节点,并返回节点的指针/if(p) /若p!=NULL/ printheader(); printdata(p); printf(END); printf(”按任意键返回”);else Nofind();else if(select=2) /*按姓名查询/stringinput(searchinput,15,”输入现有的学生姓名:p=Locate(l,searchinput,”nameif(p) printf(END); printf(”按任意键返回 Nofind(); getchar(

19、);Wrong();/删除学生记录:先找到保存该学生记录的节点,然后删除该节点/void Del(Link l)int sel;Node p,r;char findmess20;l-next) system(”cls”);没有该学生的记录nreturn;Disp(l);printf(”n =1按学号删除 =2 按姓名删除n 请选择1,2:scanf(”d,sel);if(sel=1)stringinput(findmess,10,”输入现有的学生学号:”);p=Locate(l,findmess,num”);if(p) /p!=NULL*/ r=l; while(rnext!=p)next;n

20、ext=p-next;/将p所指节点从链表中去除/ free(p); /释放内存空间/ printf(”n=删除成功! saveflag=1;else if(sel=2) /先按姓名查询到该记录所在的节点/stringinput(findmess,15,输入现有的学生姓名:p=Locate(l,findmess,”name r=rnext; rnext=p-next;/*修改学生记录。先按输入的学号查询到该记录,然后提示用户修改学号之外的值,学号不能修改/void Modify(Link l)char findmess20;l-next) system(n=没有该学生记录!printf(”修改学生记录”);stringinput(findmess,10,input the existing student number: /*输入并检验该学号*/p=Locate(l,findmess,num”); /查询到该节点/if(p) /*若p!=NULL,表明已经找到该节点/Number:%s,n”,pdata.num);printf(”Name:s,p-data.name);name,15,输入新姓名:printf(”C语言分数:%d,”,p-data。cgrade);data.cgrade=numberinput(”

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1