2022年C语言课程设计学生信息管理系统只是分享 .pdf

上传人:Che****ry 文档编号:34259841 上传时间:2022-08-15 格式:PDF 页数:18 大小:466.41KB
返回 下载 相关 举报
2022年C语言课程设计学生信息管理系统只是分享 .pdf_第1页
第1页 / 共18页
2022年C语言课程设计学生信息管理系统只是分享 .pdf_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《2022年C语言课程设计学生信息管理系统只是分享 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言课程设计学生信息管理系统只是分享 .pdf(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C 语 言 课 程 设 计学 生信 息 管 理 系 统名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 18 页 - - - - - - - - - c语言及数据结构与算法课程设计题目 : 学生信息管理系统专业:姓名:学号:同组其他学生 ( 学号) : 2013年月日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 18 页 - - - - - - -

2、- - 目 录一、需求分析 . 4二、总体设计 . 5三、详细设计 . 5四、调试与测试 . 6五、测试结果 . 7六、用户手册 . 9七、附录 . 9名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 18 页 - - - - - - - - - 一、需求分析每年九月份都有大量新生来到学校报道,使学校管理学生工作量增大,为此我们设计一学生信息管理系统,学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 等。使之能提供以下功能:(1)系统以菜单方式工作(

3、2)学生信息录入功能 -输入(3)学生信息浏览功能 -输出(4)查询、排序功能 -算法按学号查询、按姓名查询、学生信息的删除与修改(可选项)二、总体设计组成框图主函数主菜单欢迎界查询按姓名按学号录入删除浏览修改退出名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 18 页 - - - - - - - - - 流程图录入浏览N Y N Y 录入浏览查询开始密码是否正确主菜单1 录入学生信息2 浏览学生信息3-查询学生信息4-删除学生信息5-修改学生信息0-退出系统重新输密码是

4、否正确删除修改退出结束开始申请新空间输入各项数据显示数据结束开始指针 p 指向头结输出指针的数据P=NULP=p-next 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 18 页 - - - - - - - - - 查询修改&删除三、详细设计主函数通过在 while 循环结构中嵌入 switch 分支结构实现操作选择功能。(1)Record 录入函数建立一个包含学生全部信息的结构体,申请空间,其指针为p0,存入学生各项对应的数据。Y Y Y N N 结束输入姓名或学号P

5、指针的学号与姓名是否输出数据结束输入要删除或修改的学号P指针的学号与输入的是P=p-next 修改 p的各项数据或结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 18 页 - - - - - - - - - (2)Insert插入函数 : 按输入的数据存储在一个stu 类型的指针里,若原来链表里没有元素,则将此作为第一个元素;若原来的链表里有元素,则将指向头结点指针存储的学号与头指针下一个的学号大小进行比较,小的在前大的在后,之后指向头结点处的指正后移,进行比较,直到

6、尾结点为止。在进行比较的 while 函数内,每比较一次,计算总人数的TOTAL_NUM自加。(3)Display 浏览函数:将传给 Display 函数的指针 P所指向的结构体的各项数据输出以便核对信息。(4)DisplayAll浏览函数:指针指向链表头结点,在if语句中嵌套 do-while语句将学生信息按学号从大到小进行逐一输出。(5)Query查询函数:首先使用 switch 语句生成菜单,实现操作选择功能。分三个部分按学号查询、按姓名查询和取消返回上一层。按学号查询时调用while 语句对学号检索,再调用 if语句进行判断,最后输出想要查询的信息。按姓名查询的方法跟按学号查询的一样。

7、(6)Del 删除函数:使用 while 语句进行检索,直接删除学生信息。(7)Change修改函数:建立 devise 函数,生成菜单,用switch 语句进行分叉选择功能,选择项目进行相应的信息输入。在Change函数中使用 while 语句进行检索后再调用devise 函数修改信息。实现学生信息修改。四、调试与测试名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 18 页 - - - - - - - - - 1、进行多次运行,发现电话那栏的电话一打长就会显示一样的数字

8、,打短的数字就可以。我们原本是使用长整型来定义电话号码,想说空间不够,后来改用字符型,用字符串记录电话号码程序运行结果正确。2、程序设计初就在考虑退出与返回有什么差别,如果返回了主菜单那退出用什么,关于这个问题看了许多网上的资料,发现许多程序都有exit (0)的函数,所以去查了不少关于exit的函数内容,最后退出就用了exit(0),但是又提醒说要编写 exit函数,之后发现要加入 的头文件,程序可以正常运行。3、程序在 180 行显示说 readData 函数不可以返回值,所以在if条件句中将return 0删除了,不过这个程序在学校的机房即使不删return 0也是可以运行的,关于这点很

9、是不解,还有待解决。五、测试结果1、进入系统界面,输入密码,超过三次会自动退出。2、选 1时录入学生信息,编辑完后会继续显示菜单名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 18 页 - - - - - - - - - 3、选 2浏览学生信息 ,之后继续返回菜单界面,为节省空间菜单界面暂不截图4、选择 3 查询学生信息会有按学号与按姓名查询。下图是先按学号查询的截图。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -

10、 - - 名师精心整理 - - - - - - - 第 9 页,共 18 页 - - - - - - - - - 5、按姓名查询时,如果查无此人会显示“没有该学生信息,请核对。”之后返回上一层,按姓名查询。显示学生信息后可以选择取消返回主菜单。6、选择 4 删除学生,输入学号删除学生的信息。之后会返回主菜单7选择 5修改学生信息,按学号输入,之后按显示输入即可。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 18 页 - - - - - - - - - 用几组测试数据进

11、行测试算法设计的正确性。(附上程序运行的截图)六、用户手册1程序一开始会显示欢迎界面,按要求输入密码,3 次错误会退出程序。2 密码正确后会显示主菜单,按要求输入您的需求。七、附录源程序清单和结果:源程序要加注释。结果要包括测试数据和运行结果。/* Note:Your choice is C IDE */ #include #include #include #include #include #define NULL 0 #define LEN sizeof ( struct student) #define FILE_DATA_PATH c:student.txtstruct studen

12、t 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 18 页 - - - - - - - - - long int num; char name20; int age; char sex4; char birthday10; char address30; char tele_num13; char E_mail20; struct student *next; ; int TOTAL_NUM = 0; struct student *head = NULL; void

13、 welcome(); void mainmenu(); void record(); void insert(struct student *stu); void display(struct student *stu); void displayAll();void query(); void query_by_num(); void query_by_name(); void readData(); void writeData(); void freeAll(); void del(); void change(); void devise( struct student *p); i

14、nt main() char userPWD7; int i; welcome(); for (i = 0; i 3; i+) printf(n 密码为 123n ); printf(n 请输入您的密码 : ); scanf(%s, userPWD); if (strcmp(userPWD, 123 ) =0) / 密码正确,显示主菜单 mainmenu(); break; elseif (i num); printf( 请输入学生的姓名 : ); scanf(%s,p0 -name); printf( 请输入学生的年龄 : ); scanf(%d, &p0-age); printf( 请输入

15、学生的性别 : ); scanf(%s,p0 -sex); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 18 页 - - - - - - - - - printf( 请输入学生的出生年月 : ); scanf(%s,p0 -birthday); printf( 请输入学生的地址 : ); scanf(%s,p0 -address); printf( 请输入学生的电话 : ); scanf(%s,p0 -tele_num); printf( 请输入学生的 E-mail

16、:); scanf(%s,p0 -E_mail); insert(p0); printf( 该学生的信息为 :n ); printf(); printf( 学号t 姓名t 年龄t 性别t 出生年月 tt地址t 电话tE-mailn); display(p0); void insert(struct student *stu) / 根据学号对学生进行排序 / struct student *p0, *p1, *p2; p1 = head; p0 = stu; if (head = NULL) head = p0; p0-next = NULL; elsewhile (p0 -num p1 -nu

17、m)& (p1-next != NULL) p2 = p1; p1 = p1 -next; if (p0-num num) if (head = p1) head =p0; else p2 -next = p0; p0-next = p1; else p1 -next = p0; p0-next = NULL; TOTAL_NUM+; void display(struct student *p) printf(%ldt%st%dt%st%st%st%st%sn, p -num, p-name, p-age, p -sex, p -birthday, p-address, p -tele_nu

18、m, p -E_mail); / 浏览学生信息void displayAll()struct student *p; printf( 学生总数 :%dn , TOTAL_NUM); p = head; if (head != NULL) printf(n 学号t 姓名t 年龄t 性别t 出生年月 t 地址t 电话tE-mailn); printf(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 18 页 - - - - - - - - - do display(p

19、); p = p -next; while (p !=NULL); printf(n ); / 查询学生信息void query() int choice; choice = - 1; do printf(n ); printf(+-+n); printf(| 按学号查询请按 1 |n); printf(| 按姓名查询请按 2 |n); printf(| 取消请按 0 |n); printf(+-+n); printf( 请输入您的选择: ); scanf( %d, &choice); switch (choice) case 0: return ; case 1:query_by_num()

20、;break ; case 2:query_by_name(); break; default : printf(n 无效选项! ); break ; while (choice != 0); / 按学号查询学生信息void query_by_num() int num; struct student *p1; printf( 请输入学生的学号: ); scanf( %ld , &num); if (head=NULL) printf(无学生记录! n ); return ; p1=head; while (num!=p1-num & p1 -next !=NULL) p1 =p1-next;

21、 if (num = p1 -num) printf(n 学号t 姓名t 年龄t 性别t 出生年月 t 地址t 电话tE-mailn); printf(); display(p1); else printf( 没有该学生记录,请核对! ); / 按姓名查询学生信息void query_by_name() char name20; struct student *p1; printf(请输入学生的姓名: ); scanf( %s, name); if (head=NULL) printf( 无学生记录! n ); return ; p1=head; while (strcmp(name, p1

22、-name) & p1 -next != NULL) p1 =p1-next; if (! strcmp(name, p1 -name) printf(n 学号t 姓名t 年龄t 性别t 出生年月 t 地址t 电话tE-mailn); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 18 页 - - - - - - - - - printf(); display(p1); else printf(没有该学生记录,请核对! ); / 写入文件void writeData(

23、) FILE * fp;/ 文件指针struct student *p; fp = fopen(FILE_DATA_PATH, w); if ( ! fp) printf(文件打开错误! ); return ; fprintf(fp,%dn , TOTAL_NUM); for (p = head; p != NULL; p = p -next) fprintf(fp,%ldt%st%dt%st%st%st%st%sn, p-num, p-name, p-age, p -sex, p -birthday, p-address, p-tele_num, p -E_mail); fclose(fp)

24、; void freeAll()struct student *p1, *p2; p1=p2=head; while (p1) p2 =p1-next; free(p1); p1=p2; / 读取文件void readData() FILE * fp;/ 文件指针struct student *p1, *p2; fp = fopen(FILE_DATA_PATH, r ); if ( ! fp) printf(文件打开错误! ); fscanf(fp,%dn , &TOTAL_NUM); head = p1 = p2 = ( struct student *)malloc(LEN); fsca

25、nf(fp,%ldt%st%dt%st%st%st%st%sn, &p1-num, p1-name, &p1-age, p1 -sex, p1 -birthday, p1-address, &p1-tele_num, p1-E_mail); while (! feof(fp) p1 = ( struct student *)malloc(LEN); fscanf(fp,%ldt%st%dt%st%st%st%st%sn, &p1-num, p1-name, &p1-age, p1 -sex, p1 -birthday, p1-address, &p1-tele_num, p1 -E_mail)

26、; p2-next = p1; p2 = p1; p2-next = NULL; fclose(fp);/ 删除学生信息void del() struct student *p1, *p2; longint num; if (head = NULL) printf(无学生记录! n ); return ; printf( 请输入您要删除的学生的学号: ); scanf( %ld , &num); p1 = head; while (num != p1 -num & p1 -next != NULL) p2 =p1; p1=p1-next; 名师资料总结 - - -精品资料欢迎下载 - - -

27、- - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 18 页 - - - - - - - - - if (num=p1-num) if (p1=head) head=p1-next; else p2 -next =p1-next; free(p1); TOTAL_NUM- ; else printf(没有该学生记录,请核对!n ); / 修改学生信息void change() struct student *p1, *p2; long int num; if (head = NULL) printf(无学生记录! n ); r

28、eturn ; printf(请输入您要修改的学生的学号:); scanf(%ld , &num); p1 =head; while (num !=p1-num & p1 -next != NULL) p2 =p1; p1 =p1-next; if (num=p1-num) devise(p1); else printf(没有该学生记录,请核对!n ); void devise( struct student *p) int choice; choice =-1; do printf( 请选择您要修改的学生的信息内容:n ); printf(+-+n); printf(| 姓名请按 1 |n)

29、; printf(| 年龄请按 2 |n); printf(| 性别请按 3 |n); printf(| 出生年月请按 4 |n); printf(| 地址请按 5 |n); printf(| 电话请按 6 |n); printf(| E-mail 请按 7 |n); printf(| 取消请按 0 |n); printf(+-+n); printf(请输入您的选择: ); scanf(%d, &choice); switch (choice) case 0: return ; case 1: printf(请输入新姓名: ); scanf(%s, p -name); break; case

30、2: printf(请输入新年龄: ); scanf(%d, &p-age); break; case 3: printf(请输入新性别: ); scanf(%s, p -sex); break ; case 4: printf(请输入新出生年月: ); scanf(%s, p -birthday); break ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 18 页 - - - - - - - - - case 5: printf(请输入新地址: ); scan

31、f(%s, p -address); break; case 6: printf(请输入新电话: ); scanf(%s, &p-tele_num); break ; case 7: printf(请输入新 E-mail :); scanf(%s, p -E_mail); break; default :printf(n无效选项 ! ); break; while (choice !=0); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 18 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁