2022年c语言课程设计论文_第1页
2022年c语言课程设计论文_第2页
2022年c语言课程设计论文_第3页
2022年c语言课程设计论文_第4页
2022年c语言课程设计论文_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计项目设计报告 项目名称:同学成果信息治理系统2022 年 1 月 13 日目 录 1 项目分析 . 1.1 问题描述 . 1.2 功能需求分析 . 2 系统设计 . 2.1 数据结构设计 . 2.3部分功能设计 . 3 系统实现源程序 . 3.1 主函数设计 . 3.2 添加同学信息 . 3.3 姓名学号查询 . 3.4 成果查询 . 3.5 删除同学成果信息3.6 修改同学成果信息. . 4 功能测试 . 4.1 菜单测试 . 4.2 系统功能测试 . 5 系统设计遇到的问题及解决方法. 6 项目设计总结 . 1 项目分析1.1 问题描述信息储存与查询是运算机处理数据的优势之一

2、,目前,同学信息的管理系统已经完全走进了校内,其中成果信息的储存是主要部分,本课题使用 C 语言实现同学成果的储存,查询,修改,以及删除等操作;程序中涉及到数据块和文件指针的操作,定位,修改等;1.2 功能需求分析包括结构体数据定义, 使用及文件的读写,同学成果信息治理系统的主要功能如下:添加同学信息:录入同学的基本信息,如姓名,学号,成果;显示全部同学成果信息:直接显示已经全部录入同学的成果信息;学号或姓名查询:可以依据同学的姓名和学号直接查询该名同学的成绩;成果查询:可以依据一个特定的分数来查询同学的信息;删除同学成果信息:可以直接依据学号确定是否删除对应同学的成果信息;修改同学成果信息:

3、 直接依据同学学号来修改同学的姓名,学号,成果;同学成果信息管 图 1-1 系统功能模块图2 系统设计 添显学成删修2.1 数据结构设计 加示号绩除改学所或查学学struct stu 生有姓询/ 定义结构体类型 生重新添加信息/ 姓名char name10; 连续添加信息char num10; / 学号char score10; / 成果 2.2 函数设计表 1 函数列表序函 数 原 型功 能 说 明号1void addnew新增同学姓名,学号,成果信息2void addold在原有基础上连续增加其他同学的信息3void printall显示全部已经存入同学的成果等信息4void search

4、依据姓名或者学号查询同学分数5void jgsearch依据成果查询对应的同学6void del删除同学信息7void modify修改同学信息8system“ cls” ;清屏2.3部分功能设计1.删除同学的信息,输入同学的学号进行删除操作,假如没有此人,系统将会提示无此人,假如找到,系统将会确认你是否需要删除,流程图如 1-2 所示;开头No输入学号Yes在文件里查找图 1-2 删除同学信息流程图2.输入学号进行查询对应同学的成果,流程图如图 是否找1-3 所示;输出文件开头确认删除图 1-3 查询功能流程图输 入 学 号 或 姓输入 1 输入 0在文件中查找输出删除成Yes是否找到N3

5、系统实现源程序3.1 主函数设计void mainint x;systemcls; /* 清屏 */doprintfn 欢 迎 使 用 学 生 成 绩 信 息 管 理 系 统nnnnn; printf 1 -添加同学信息 nn; printf 2 -显示全部同学成果信息nn; printf 3 - 学号或姓名查询nn;printf 4 -成果查询 nn; printf 5 - 删除同学成果信息nn;printf 6 - 修改同学成果信息nn;printf 0 -退出 ;printf 请您挑选: ;choice:scanf%d,&x;switchxcase 1:add;break;case 2:

6、printall;break;case 3:search;break;case 4:jgsearch;break;case 5:del;break;case 6:modify;break;case 0:break;default:printfn 择: ;goto choice; whilex.=0;systemcls;错误的挑选,请重新选printfnn 欢迎再次使用同学成果治理系统n; 3.2 添加同学信息/* 同学成果信息治理系统 */#include #include #include int c,j,t;struct stu /* 定义结构体类型 */ char name10;char

7、 num10;char score10;student100,newstudent100;/* 添加同学个人信息 */ void addnew int a,b,k;FILE *fp,*fp1,*fp2; /*FILE类型指针变量的定义形式*/ fora=0;a200;a+systemcls;printf 欢迎使用同学成果治理系统nnn;printf 录入同学信息 nn;printf 输入同学姓名 :;scanf%s,&;printf 输入同学学号 :;scanf%s,&studenta.num;printf 输入同学成果 :;scanf%s,&studenta.sco

8、re;printf 输入1连续,0终止 n; /* 判定输入是否终止*/ scanf%d,&b;ifb=0 c=a;systemcls;break;iffp1=fopenCa1.txt,w=NULL /* 文件名,使用文件方式*/ printf 信息写入失败 ;exit0;iffp2=fopenCa2.txt,w=NULL printf 信息写入失败 ;exit0;iffp=fopenCa3.txt,w=NULL printf 信息写入失败 ;exit0;j=sizeofstruct stu;fora=0;a=c;a+iffwrite&studenta,j,1,fp.=1printf 存入失败

9、 .;fora=0;a=c;a+ifstrcmpstudenta.score,80=0fwrite&studenta,j,1,fp1;elsefwrite&studenta,j,1,fp2;printf 添加胜利! nn;printf 请输入 0返回 n;scanf%d,&k;fclosefp1;fclosefp2;fclosefp;ifk=0systemcls;/* 连续添加成员 */void addoldint a,b,k,p,q;char wjm20;FILE *fp;j=sizeofstruct stu;systemcls;printf 欢迎使用同学成果信息治理系统nnn;printf

10、 录入同学信息 nn;printfnn 储备文件名有Ca1.txt Ca2.txt Ca3.txt nn;printf 请输入想连续添加的文件名:;scanf%s,wjm;fora=0;a200;a+printf 输入同学姓名 :;scanf%s,&;printf 输入同学学号 :;scanf%s,&newstudenta.num;printf 输入同学成果 :;scanf%s,&newstudenta.score;printf 输入1连续,0终止 n; / 判定输入是否终止scanf%d,&b;ifb=0 c=a;systemcls;break;iffp=fo

11、penwjm,r=NULL printf 文件打开失败! ;exit0;a=0;while.feoffpfread&studenta,j,1,fp;a+;fclosefp;t=a-1;forq=0,p=t;q=c,p=t+c;q+,p+,;strcpystudentp.num,newstudentq.num;strcpystudentp.score,newstudentq.score;iffp=fopenwjm,w=NULL printf 文件打开失败! ;exit0;fora=0;a=t+c;a+iffwrite&stud

12、enta,j,1,fp.=1printf 存入失败 .;printf 添加胜利! nn;printf 请输入 0返回 n;scanf%d,&k;fclosefp;ifk=0systemcls;void addint x;systemcls;printf 欢迎使用同学成果信息治理系统 nnn;printf 添加同学信息 nn;printf 1 重新添加信息 n;printf 2 连续添加信息 n;printf 0 返回 nnn;printf 请挑选: ;scanf%d,&x;choice:switchxcase 1:addnew;break;case 2:addold;break;case 0:

13、break;default:printfn 错误的挑选,请重新挑选:;goto choice; systemcls;/* 显示全部同学的成果 */ void printall int a,b;FILE *fp,*fp1,*fp2;systemcls;printf 欢迎使用同学成果信息治理系统nnn;printf 全部已录入同学信息nn;printf%-10s%-20s%-50sn, 姓名 ,学号 , 成果 ;j=sizeofstruct stu;iffp=fopenCa1.txt,r=NULL printfn 打开失败 ;exit0;iffp1=fopenCa2.txt,r=NULL prin

14、tf 信息写入失败 ;exit0;iffp2=fopenCa3.txt,r=NULL printf 信息写入失败 ;exit0;a=0;while.feoffpiffread&studenta,j,1,fp=1printf%-10s%-20s%-50sn,,studenta.num,studenta.score;a+;a=0;while.feoffp1iffread&studenta,j,1,fp1=1printf%-10s%-20s%-50sn,,studenta.num,studenta.score;a+;a=0;while.feoffp

15、2iffread&studenta,j,1,fp2=1printf%-10s%-20s%-50sn,,studenta.num,studenta.score;a+;fclosefp;fclosefp1;fclosefp2;printf 返回上级请输入0.n:;scanf%d,&b;ifb=0systemcls;3.3 姓名学号查询void searchint k,b,a;char cx20;FILE *fp;systemcls;j=sizeofstruct stu;doprintf 欢迎使用同学成果信息治理系统nnn;printf 查找已录入同学成果信息nn;k=0;

16、iffp=fopenCa1.txt,r=NULLprintfn 打开失败 .;exit0;printf 请输入学号或姓名:n;scanf%s,cx;ifcx09 a=0;while.feoffpfread&studenta,j,1,fp;,cx=0printfnn 已查到,该记录为 :nn;printf%-10s%-20s%-50sn, 姓名 , 学号 ,成果 ;printf%-10s%-20s%-50sn,,studenta.num,studenta.score;k=1;a+;if0=cx0=9 a=0;while.feof

17、fpfread&studenta,j,1,fp;ifstrcmpstudenta.num,cx=0printfnn 已查到,该记录为 :nn;printf%-10s%-20s%-50sn, 姓名 , 学号 ,成果 ;printf%-10s%-20s%-50sn,,studenta.num,studenta.score;k=1;a+;if.kprintfn文件中无此人的记录;;fclosefp;printfn输入“1” 连续查找,“ 0” 终止 n;scanf%d,&b;systemcls;whileb.=0;systemcls;3.4 成果查询void jgsearc

18、hint b,a;char cx20;FILE *fp;systemcls;j=sizeofstruct stu;doprintf 欢迎使用同学成果信息治理系统nnn;printf 查找同学成果信息nn;iffp=fopenCa1.txt,r=NULLprintfn 打开失败 .;exit0;printf 请输入同学成果: n;scanf%s,cx;a=0;while.feoffpfread&studenta,j,1,fp;ifstrcmpcx,studenta.score=0 printf%-10s%-20s%-50sn, 姓名 , 学号 ,成果 ;printf%-10s%-20s%-50s

19、n,,studenta.num,studenta.score;a+;fclosefp;printfn 输入“1” 连续查找,“ 0” 终止 n;scanf%d,&b;systemcls;whileb.=0;systemcls;3.5 删除同学成果信息void delint m=0,k=0,b,a,q,p;char xh20,wjm20;FILE *fp;systemcls;j=sizeofstruct stu;doprintf 欢迎使用同学成果信息治理系统 nnn;printf 删除同学成果信息 nn;printfnn 储备文件名有 Ca1.txt Ca2.txt C

20、a3.txt nn;k=0;printfn 请输入学号: ;scanf%s,xh;printfn请输入欲删除的文件名:;scanf%s,wjm;iffp=fopenwjm,r=NULLprintfn 文件打开失败 .;exit0;a=0;while.feoffpfread&studenta,j,1,fp; 输入到数组中a+;fclosefp;t=a-1;fora=0;a=t;a+/ 将文件内容ifstrcmpxh,studenta.num=0k=1;break;ifa=tprintfnn文件中无此人的记录;;ifk=1printfnn 已查到,该记录为 :nn;printf%-10s%-20s

21、%-50s,姓名 ,学号 , 成果 ;printf%-10s%-20s%-50s,,studenta.num,studenta.score;printfn的确要删除记录,请按1;不删除记录,请按0:n;scanf%d,&m;ifmforp=a,q=a+1;pt,q=t;q+,p+,;strcpystudentp.num,studentq.num;strcpystudentp.score,studentq.score;iffp=fopenwjm,w=NULLprintfn 文件打开失败 .;exit0;fo

22、ra=0;at;a+fwrite&studenta,j,1,fp;ifmprintfn 删除胜利 .;fclosefp;printfn输入“1” 连续,“ 0” 终止 n;scanf%d,&b;systemcls;whileb.=0;systemcls;3.6 修改同学成果信息void modifyint k=0,b,a;char xh20,wjm20;FILE *fp;systemcls;j=sizeofstruct stu;doprintf 欢迎使用同学成果信息治理系统 nnn;printf 修改同学成果信息 nn;printfnn 储备文件名有 Ca1.txt Ca2.txt Ca3.t

23、xt nn;printfn 请输入学号: ;scanf%s,xh;printfn请输入欲修改文件名:;scanf%s,wjm;iffp=fopenwjm,r+=NULLprintfn 打开失败 .;exit0;a=0;while.feoffpfread&studenta,j,1,fp;a+;fclosefp;t=a-1;fora=0;a=t;a+ifstrcmpxh,studenta.num=0k=1;break;ifa=tprintfnn文件中无此人的记录;;ifk=1printfnn 已查到,该记录为 :nn;printf%-10s%-20s%-50s,姓名 ,学号 , 成果 ;print

24、f%-10s%-20s%-50s,,studenta.num,studenta.score;printfn 请输入新的姓名: ;scanf%s,;printfn 请输入新的学号: ;scanf%s,studenta.num;printfn 请输入新的成果: ;scanf%s,studenta.score;iffp=fopenwjm,w=NULLprintfn 文件打开失败 .;exit0;fora=0;at;a+fwrite&studenta,j,1,fp;printfn 修改胜利 .;fclosefp;printfn输入“1” 连续,“ 0

25、” 终止 n;scanf%d,&b;systemcls;whileb.=0;systemcls;4 功能测试4.1 菜单测试同学成果治理系统运行后的主菜单界面如图 4-1 所示;图 4-1 系统主界面4.2 系统功能测试1添加同学信息在主菜单按 1 后,会显示图 4-2,再按 2 添加同学的信息如图 4-3 所示,如果按 1 的话那么全部以前的储存的信息都将被清除,接着再重新输入数据;图 4-2 同学信息输入界面图 4-3 同学信息输入界面2显示全部同学成果信息在系统菜单上面按2,就全部的同学成果都会显示如图4-4 所示;图 4-4 同学成果浏览3. 学号或姓名查询在主菜单上输入 3,然后在依

26、据姓名或者学号,可以查到该同学的分数,如图 4-5 和 4-6 图所示;图 4-5 依据学号查询分数图 4-6 依据姓名查询分数4. 成果查询在主菜单上输入4,可以得到图4-7 所示,这是依据分数来确定同学;图 4-7 依据分数来确定同学5. 删除同学成果信息在主菜单上按 5,挑选需要删除的对应文档里的该同学的成果信息,可以得到图 4-8 所示;图 4-8 删除同学信息6. 修改同学的信息在主菜单上按 6,挑选需要修改的人的学号,再进行一系列的修改,可以得到图 4-9 所示;图 4-9 修改同学信息5 系统设计遇到的问题及解决方法1.*和 在定义时只是说明作用,不能误会为运算符&、*、 是 C

27、 语言供应的三种运算符,分别是取地址运算符、指针运算符和下标运算符,其中,&与*互为逆运算;在表达式中它们的意义很明确,但是在定义中 *、 只是起说明作用,不能看作运算符;例如: int number=10;Int *pt=&number;Int *pt=a;在这里, 我们简单被后两个语句困惑,之所以困惑, 就是把 *当作了运算符,其实在这里Int *共同来修饰指针变量pt,定义一个指向整型变量的指针变量,自然会把一个地址 赋值语句中,第一个是正确的;&number 赋值给 pt;因此,上述后面两个2、用整数值直接给指针赋值指针值就是指针所指向的地址,在程序运行中,指针的值其实就是一个整数值,但是决不能在程序语句中把一个整数值当作指针的值直接赋给指针;例如: int num;Int *pt;num=72781;p=num;最终一个语句目的是使指针指向地址 会提示这个语句有错误;3、字符串的读入72781(十进制),编译时系统就当要求

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论