




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、优质文本C语言课程设计报告书学 院 计算机学院姓 名*专 业计算机科学与技术班 级计科1002 实验题目:学生信息管理系统一、实验目的:1本学期我们学习了C语言,由于初接触,学习有一定困难;于是学校给我们提供一次稳固提高的时机-课程设计。该可程设计要求学生既动手又动脑,自学,查资料,独立实践。将本学期课本上的理论知识和实际有机的结合起来,锻炼学生实际分析问题和解决问题的能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解。2C语言的实践。掌握C语言函数的定义方法,函数的声明及函数的调用过程。掌握结构体类型变量的定义和使用,综合应用C语言的知识,实现一个完整的系统,提高编程
2、能力,体会软件程序的开发过程。二、实验内容:1根据所学知识,运用结构体数组编辑一个简单的学生信息管理系统,使之能够完成对学生信息的天价查找,删除,更改,管理等操作,并对文件进行保存和读取。2执行编译操作,并根据提示调试此程序,排除所有的错误和警告。直到编译成功为止。3执行运行操作,逐一对每个模块进行调试。直到全部程序运行成功为止。4请老师检查,向老师演练此程序,并能答复老师提出的相关问题。 三、 需求分析:1根据学生信息管理的需要,建立一个“学生信息管理系统, 系统具有对学生信息的添加,查找,删除,更改的管理操作等根本功能;以方便对学生的各项管理操作。每一条记录包括一个学生的学号,姓名,性别,
3、年龄,住址,成绩.系统的各个功能模块都用函数的形式来实现;可以将学生信息保存在文件中,并从文件中读取出来。本程序是由C语言的根本单位函数来设计实现与其功能的屡次使用函数调用以及函数的嵌套调用。本程序分为8个模块,可以处理多个学生信息的输入、添加、删除,修改等问题。本程序的使用特别方便,每做完一个模块,下面都有提示信息。使用环境为Win-Tc。2创立该学生信息管理系统目的就是能够对学生根本信息进行创立、追加、查询、修改等功能,这样可以简化许多人工做起来很复杂的问题。3该学生根本信息管理系统是在WIN-TC中文简体环境下运行。该系统要测试的数据如下:输入模块:输入3个学生信息序号: 001 姓名:
4、张三 性别:男 年龄:20 成绩:90序号: 002 姓名:李斯 性别:男 年龄:19 成绩:87序号: 003 姓名:王美 性别:女 年龄:20 成绩:82添加模块:再加1个信息序号: 004 姓名:赵灵 性别:女 年龄:19 成绩:89查询模块:查询成绩的根本信息 分:按学号查询和按成绩查询 四、概要设计1 主函数主要模块结构图: 主函数输入模块 保存信息 读取信息 输出信息插入删除修改退出程序排序统计信息 更新信息2模块功能详细说明:A、创立模块:此模块可以连续输入假设干个学生的资料,假设学生数少于该数,那么可以在输入学号处输入e 便可退出此模块,并把输入的信息保存到c:stud文件中。
5、 B、追加模块:此模块中先翻开c:stud统计文件中的学生,后输入要添加的学生的学号,系统确认此学号在c:stud不存在时开始纪录新学生的资料,否那么输出“此学号已存在!,以便清楚使用者。C、查询模块:此模块中使用者可以用3种方式查询学生成绩。分别为1按学号查询2按姓名查询3按成绩查询。在这里以按学号查询为列:先选择按学号查询,输入要查询的学生的学号,系统确认此学号在c:student存在后读取信息并在屏幕上输出学生纪录。D、修改模块:此模块中可以修改一门科的成绩也可以同时修改四门科的成绩。修改完毕后输入1 可以继续修改,输入0 那么退出此模块。E、删除模块:此模块中用到的删除原理为覆盖要删除
6、的学生的资料。过程简述,先输入要删除的学生的学号,系统找到此学生的信息后给它复制下一个学生的信息,给下一个学生的纪录复制下下一个学生的信息,一直到最后一个学生的信息复制给倒数第二个学生的信息为止。然后文件中的学生总数减一。F、此模块较简单,先统计文件c:student中的学生个数,后把每个学生的各门科的成绩加起来,然后总成绩除以学生总数,屏幕上输出各科的平均成绩。G、排序模块:在此模块中可以按2种方法进行排序 ,分别为1按学号排序2按平均成绩成绩排序。输出时以从小到大的循序进行输出。3模块功能说明1 输入功能:可以一次完成N条记录的输入。 2保存功能:保存已输入信息。3 读取功能:读取已输入信
7、息。4 打印功能:完成全部学生记录的显示。5 更新功能:更新学生 的信息。 6 查询功能:查询学生信息并显示。7 统计功能:统计学生信息并显示。8 排序功能:根据学号,平均成绩排序。0 退出系统。五、详细设计及运行结果(1)各主要模块的程序流程图添加模块:已有此学号!翻开文件c:stud统计学生个数count输入添加的学号ij0Scorei.number=scorej.number?j+j<count?输入各门科的成绩结束 删 除 模 块:翻开c:stud统计文件中学生个数counti0输入要删除的学号sc.number=scorei.number?jiscorejscorej+1j+j
8、<count?已删除此生成绩!结束i+i<count ?排序模块:i0ji+1scorei.yuwen<scorej.yuwen交换scorei.yuwen和,scorej.yuwenj+j>count?ii+1i>n-1?翻开c:stud文件,统计文件中学生个数count文件中学生个数Count>1输出结果结束达不到排序要求!( 2 ) 函数之间相互调用的图示:主函数调 用 创 建 函 数调 用 修 改 函 数调 用 插 入 函 数调 用 查 询 函 数调 用 删 除 函 数调 用 统 计 函 数 结束结束结束结束结束结束调 用 排 序 函 数结束3主要函
9、数之间相互调用如下:主函数main ()的调用switch(choice)case 1: input_message();break; case 2:save_message(sum);break; case 3: read_message();break; case 4: output_message();break; case 5: renew_message();break; case 6: inquire_message();break; case 7: count_message();break; case 8: sort_message();break; case 0: break
10、; 删除函数调用int del_by_name() char del_name20,i,f=0; printf(" nn please input the student name:"); scanf("%s",del_name); for(i=0;i<sum;i+) if(strcmp(,del_name)=0) studenti.num=-1; printf(" %s student information have been deleted! ",); f=1; brea
11、k; if(f=0) printf(" nn*cannot find the student!*nn"); getchar(); return 0;int del_by_num() int del_num=0,i,f=0; printf("nn please input the student num:"); scanf("%d",&del_num); for(i=0;i<sum;i+) if(studenti.num=del_num) studenti.num=-1; printf("the students
12、' information have been deleted!"); f=1; break; if(f=0) printf(" nn *cannot find the student!*nn"); getchar(); return 0; del_message() int choice; do clrscr(); printf(" *delete students' information*nn"); printf(" 1.delete by namenn"); printf(" 2.delet
13、e by numnn"); printf(" 0.retrun menunn"); printf(" please choose (0-2):"); scanf("%d",&choice); switch(choice) case 1: del_by_name();break; case 2: del_by_num();break; case 0: break; while(choice!=0); return 1;追加函数的调用insert_message() /*添加信息*/ int i=sum; int fla
14、g=0; char choice; clrscr(); printf("nn insert s student's informationn"); do studenti.num=+sum; printf("n new studnet num: %d ",studenti.num); printf("n student's name: "); scanf ("%s",); printf("n student's sex: "); scanf (&
15、quot;%s",studenti.sex); printf("n student's age: "); scanf ("%d",&studenti.age); printf("n student's class: "); scanf ("%d",&studenti.class); printf("n student's num: "); scanf("%d",&studenti.num); printf("
16、n student's plants: "); scanf("%s",studenti.plants); printf("n student's score: "); scanf("%d %d %d %d",&studenti.exam.chinese, &studenti.exam.math, &studenti.exam.english, &studenti.exam.aver); printf("n student's birthday: ")
17、; scanf("%d%d%d",&studenti.birthday.year,&studenti.birthday.month, &studenti.birthday.date); printf("n student's telephone: "); scanf("%d", &studenti.telephone); printf("n student's add: "); scanf("%s",studenti.add); printf(&q
18、uot;n do you want to continue?(Y/N)"); choice=getch(); if(choice='y'|choice='Y') printf("n continue!n"); i+; flag=1; else flag=0; while(flag=1); printf("n push any button to go away"); bioskey(0); 输入指令1,2,3,4,5,6,7,8,0输出学生信息更新学生信息查询学生信息退出读文件无任意键回主菜单有录入学生信息写入文
19、件中输入指令41、 4 5 60 0输 出 1 2 3 0添加信息删除信息修改信息返回输入学号删 除存入文件输入学号选择修改工程结 束输入修改后的内容输 出输入指令,选择查寻工程8排 序输入指令,选择排序工程开 始学生信息学号姓名成绩返回学号成绩返回六 调试情况,设计技巧及体会经过两周的实习时间,我用文件建立了一个应用系统程序,形成系统软件。此程序结构简单明了,让人一目了然,便于对程序的阅读和理解。同时操作起来也比拟方便简单。又由于增加链表更增强了系统的灵活性。通过对此程序的编写,让我把书本上学到的应用到实际中去,但在编出程序的雏形后,再进行编译时出现了许多错误和警告。这才让我认识到理论和实践
20、是存在一定差异的。最后,在屡次查阅资料,询问同学后把程序给改编完成了。它让我体会到自己的缺乏,所以自己以后要踏踏实实地把计算机年学好,为自己将来的开展打下坚实根底。 在此次程序编写中,发现的问题有:1函数应该是先定义后使用,所以一开始时,总是出现很多警告,说没有定义!后来经过仔细检查,发现主函数应该是放在各个模块之后!2要注意全局变量的应用,假设全局变量没定义好的话,对整个程序的编写与都有很大影响!3在删除模块中,刚开始存在很多问题,删除不了,或者删除后还能打印出来,结果后来发现是删除模块本身的问题。该块较难处理4在查询模块中,刚开始那个按商品类别查询无法运行,经检查,是由于未定义成字符串数组
21、形式,因此定义变量的类型非常重要。5特别要注意的问题是循环的初值,循环的控制变量,循环的条件!dowhile的循环在这个程序中屡次运用!6说明如下:( 1 )、调试情况和设计技巧:a. 刚开始没有那个初始化函数,程序运行后没有输入任何数据就试得去执行显示功能,结果显示的是一些乱码!参加初始化函数后,这种现象也随之消失。b. 在输入函数中设了最大值,可以输入66个学生的成绩信息,当输入字母e时停止,并保存信息。c. 在没有输入任何信息的情况下,不能执行查询、修改、删除、统计、排序功能 。 本程序是由C语言的根本单位函数来设计实现与其功能的屡次使用函数调用以及函数的嵌套调用。本程序分为8个模块,分
22、别为1创立学生信息。2保存学生信息。3读取学生信息。4更新学生信息。5查找学生信息。6统计学生的成绩7对学生的资料进行排序。本程序可以处理多个学生的成绩的输入、添加、修改、排序等问题。本程序的使用特别方便,每做完一个模块,下面都有提示信息。使用环境为Win-Tc。此程序的缺乏之处在学生根本信息方面还不够完善, 另一方面就是在运行此程序时,需要执行操作的提示语不够具体和完善.改良方法: 可以在学生根本信息的结构体中添加更多的学生信息,使得学生信息更加完善,此外,还可以在编程时加一些必要的提示语,用printf(“); 语句直接可输入. 2、在设计过程中的感受:首先经过两周的编程实习,并在后一段的
23、报告总结,我对C语言这门科有新的认识,本人实在是获益不浅!要想编写一个准确、高效并有使用价值的程序,一定先要对课本知识熟悉,还要掌握必要的上机操作能力,写程序其实很容易而关键在于调试程序。这次设计,让我重新掌握了C语言,而且还得到了用C语言解决实际问题的珍贵经验。其次, 通过此次编程我也发现了自己在学习中的错误和缺乏,复习了以前学过的知识。同时也学到了一些没学过的知识,让我从中收益非浅,也为期末考试准备了一下!更重要的是培养了独立思考问题和解决问题的能力,熟悉了一些根本操作和解决问题的方法!第三, 因为初次接触等原因此次设计遇到了许多问题,我深刻体会到老师发挥的重要作用,C语言程序对我们来说比
24、拟难,在匆忙的学习中更是难上加难,似乎觉得自己仅是个匆匆过客,但在老师的帮助下我学会了如何调试,如何查找系统没有提示的错误,最后终于排除万难把程序搞定,体会到原来编程也挺有意思的快感.我想没有老师的帮助我很难在短期内把程序设计做的这样好,在此特地感谢老师的帮助。七、源程序清单(略,详见电子版实验报告)#include <stdio.h>#include <string.h>#define N 20#define PAGE 2#define PRINT1 printf("nname-sex-age-class-num-plants-score-birthday-
25、 add-phonen")#define PRINT2 printf("n %s %s %d %d %d %s %d%d%d",,studenti.sex,studenti.age,studenti.class,studenti.num,studenti.plants,studenti.exam.chinese,studenti.exam.math,studenti.exam.english)#define PRINT3 printf(" %d %d %d %d %s %.0lfn",studenti.exam.ave
26、r,studenti.birthday.year,studenti.birthday.month,studenti.birthday.date,studenti.add,studenti.telephone)int sum; /*ji lu xue sheng de ren shu*/struct data int year; int month; int date;struct score int chinese; int math; int english; int aver;struct student_type char name20; char sex20; char add20;
27、char plants20; /*ban ji zhi wu*/ char score20; int num; int class; int age; int R; double telephone; struct data birthday; struct score exam; /*kao shi cheng ji*/studentN;input_message() /*shu ru xin xi*/ int i=0; char choice; int flag; double f; clrscr(); printf("nn input students'informat
28、ion(the most is %d) n",N); do printf("n number %d's information",i+1 ); printf("n student's name: "); scanf ("%s",); printf("n student's sex: "); scanf ("%s",studenti.sex); printf("n student's age: "); scan
29、f ("%d",&studenti.age); printf("n student's class: "); scanf ("%d",&studenti.class); printf("n student's num: "); scanf("%d",&studenti.num); printf("n student's plants: "); scanf("%s",studenti.plants); prin
30、tf("n student's cheng ji:"); scanf("%d%d%d",&studenti.exam.chinese ,&studenti.exam.math ,&studenti.exam.english); printf("n student's aver cheng ji: "); scanf("%d", &studenti.exam.aver); printf("n student's shengri: "); sc
31、anf("%d %d %d",&studenti.birthday.year, &studenti.birthday.month, &studenti.birthday.date); printf("n student's add: "); scanf("%s",studenti.add); printf("n stduent's phone:"); scanf ("%lf",&f); studenti.telephone=f; printf(&q
32、uot;ndo you want to continue(Y/N) "); choice=getch(); if(choice='y'|choice='Y') printf("n continue!n"); i+; flag=1; else flag=0; while(flag=1); printf("n %d stuents'information input had been end!n",i ); sum=i; printf("n push any button to go away!&q
33、uot;); bioskey(0);save_message(int sum) /*保存信息*/ FILE *fp; int i=0; if(fp=fopen("student.txt","wb")=NULL) printf("read message wrong!n"); return 0; for(i=0;i<=sum;i+) if(fwrite(&studenti,sizeof(struct student_type),1,fp)!=1) printf("write message wrong!n&quo
34、t;); fclose(fp);read_message() /*读取信息*/ FILE *fp; int i=0; if(fp=fopen("student.txt","rb")=NULL) printf("nn *now,there are no any information in file n please push any button to goaway!*n"); return; while(feof(fp)!=1) fread(&studenti,sizeof(struct student_type),1,fp
35、); if(studenti.num=0) break; else i+; fclose(fp); return(i);output_message() /*显示信息*/ int i=0,page=1; int j=0; clrscr(); printf("nn -student's information- page%dnn", page ); PRINT1; do if(studenti.num!=0) j+; if(j%PAGE!=0) PRINT2; PRINT3; else PRINT2; PRINT3; if(studenti+1.num!=0) pri
36、ntf("push any button to continue"); bioskey(0); clrscr(); printf("nn -student's information- page%dnn ",+page); PRINT1; i+; while(studenti.num!=0); printf("push any button to go away"); bioskey(0);insert_message() /*添加信息*/ int i=sum; int flag=0; char choice; clrscr(
37、); printf("nn insert s student's informationn"); do studenti.num=+sum; printf("n new studnet num: %d ",studenti.num); printf("n student's name: "); scanf ("%s",&); printf("n student's sex: "); scanf ("%s",&s
38、tudenti.sex); printf("n student's age: "); scanf ("%d",&studenti.age); printf("n student's class: "); scanf ("%d",&studenti.class); printf("n student's num: "); scanf ("%d",&studenti.num); printf("n student'
39、s plants: "); scanf ("%s",&studenti.plants); printf("n student's score: "); scanf ("%d %d %d %d",&studenti.exam.chinese, &studenti.exam.math, &studenti.exam.english, &studenti.exam.aver); printf("n student's birthday: "); scanf
40、("%d%d%d",&studenti.birthday.year,&studenti.birthday.month, &studenti.birthday.date); printf("n student's telephone: "); scanf("%d", &studenti.telephone); printf("n student's add: "); scanf("%s",&studenti.add); sum+; print
41、f("n do you want to continue?(Y/N)"); choice=getch(); if(choice='y'|choice='Y') printf("n continue!n"); i+; flag=1; else flag=0; while(flag=1); printf("n push any button to go away"); bioskey(0); int del_by_name() char del_name20,i,f=0; printf(" nn
42、please input the student name:"); scanf("%s",del_name); for(i=0;i<sum;i+) if(strcmp(,del_name)=0) studenti.num=-1; printf(" %s student information have been deleted! ",); f=1; break; if(f=0) printf(" nn*cannot find the student!*nn"); ge
43、tchar(); return 0;int del_by_num() int del_num=0,i,f=0; printf("nn please input the student num:"); scanf("%d",&del_num); for(i=0;i<sum;i+) if(studenti.num=del_num) studenti.num=-1; printf("the students' information have been deleted!"); f=1; break; if(f=0) p
44、rintf(" nn *cannot find the student!*nn"); getchar(); return 0; del_message() int choice; do clrscr(); printf(" *delete students' information*nn"); printf(" 1.delete by namenn"); printf(" 2.delete by numnn"); printf(" 0.retrun menunn"); printf(&q
45、uot; please choose (0-2):"); scanf("%d",&choice); switch(choice) case 1: del_by_name();break; case 2: del_by_num();break; case 0: break; while(choice!=0); return 1;revise_message() /*修改信息*/ int i=0,choice,flag; char revise_name20; do clrscr(); printf("n shu ru yao xiu gai de
46、xue sheng ming: "); scanf("%s",revise_name); for(i=0;i<sum;i+) if(strcmp(,revise_name)=0&&studenti.num!=0) printf("n -students'information-n"); PRINT2; PRINT3; PRINT1;printf("n which one do you want to revise?n"); printf("n 1.studen
47、t's name n"); printf("n 2.student's agen"); printf("n 3.student's numn "); printf("n 4.student's birthdayn "); printf("n chose(1-4):"); scanf("%d",&choice); switch(choice) case 1: printf("n shu ru xiu gai hou de name: &q
48、uot;); scanf("%s",);break; case 2: printf("n shu ru xiu gai hou de age: "); scanf("%d",&studenti.age);break; case 3: printf("n shu ru xiu gai hou de num:"); scanf("%d",&studenti.num);break; case 4: printf("n shu ru xiugaihoudebirthday:"); scanf("%d%d%d",&studenti.birthday.year,&studenti .birthday.month,&studenti.birthday.date); break; p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省广州市白云区2023-2024学年五年级下学期语文期末试卷(含答案)
- 2025年度品牌形象设计委托合同协议书范本
- 2025年智能设备采购合同范本
- 2025年内蒙古劳动合同书模板
- 2025电子产品租赁合同模板
- 2025租赁合同违约金条款
- 2025授权代理的合同范本协议
- 2025年签订服务合同的关键注意事项
- 2025汽车购买合同协议书
- 2025硕士劳动合同争议调解
- 广州市黄埔区教育局招聘事业编制教职员考试真题2024
- 国际经济学(下册国际金融)克鲁格曼-中文答案
- 2025年宁夏银川市唐徕中学南校区中考一模英语试题(原卷版+解析版)
- 乡村民宿开发管理运营手册
- 殡葬服务笔试题库及答案
- 2025年光大银行校园招聘笔试参考题库(带答案)
- 中医康复理疗师职业指导试题及答案
- 全过程工程咨询投标方案(技术方案)
- 研究生教育高质量发展新动能推动方案
- 宁波十校2025届高三3月联考语文试卷(含答案解析)
- 在线网课学习课堂《人工智能(北理 )》单元测试考核答案
评论
0/150
提交评论