C语言课程设计学生信息管理系统_第1页
C语言课程设计学生信息管理系统_第2页
C语言课程设计学生信息管理系统_第3页
C语言课程设计学生信息管理系统_第4页
C语言课程设计学生信息管理系统_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、c语言及数据结构与算法课程设计题 目: 学生信息管理系统专 业:姓 名:学 号:同组其他学生(学号):2013年 月 日一、需求分析 3二、总体设计 4三、详细设计 5四、调试与测试 6五、测试结果 7六、用户手册 9七、附录 9Word文档资料一、需求分析每年九月份都有大量新生来到学校报道,使学校管理学生工作量增大,为此我们设计一学生信息管理系统,学生信息包括:学号,姓名,年龄,性别,出 生年月,地址,E-mail等。使之能提供以下功能:(1)系统以菜单方式工作(2)学生信息录入功能-输入(3)学生信息浏览功能-输出(4)查询、排序功能-算法按学号查询、按姓名查询、学生信息的删除与修改(可选

2、项)二、总体设计组成框图主菜单欢迎界面录入按姓名流程图开始密码是否正确重新输入Y主菜单1录入学生信息 2浏览学生信息1Y密码是否正确3-查询学生信息删除4- -删除学生信息5- -修改学生信息录入浏览0-退岀系统修改查询退出结束录入开始申请新空间浏览开始输入各项数据指针P指向头结点1InV1输出指针的数据P=P- next显示数据结束N P=NULL?结束查询修改&删除指针P指冋头结点.指针P指向头结点输入姓名或学号输入要删除或修改的学号P=p-nextP指针的学号与|姓名是否与输N入的相同?P=p-n extP指针的学号与输入的是否N相同f结束输出数据结束三、详细设计主函数通过在while循

3、环结构中嵌入switch分支结构实现操作选择功能。(1)Record录入函数建立一个包含学生全部信息的结构体,申请空间,其指针为pO,存入学生各项对应的数据。(2)Insert插入函数:按输入的数据存储在一个stu类型的指针里,若原来链表里没有元素,则将此作 为第一个元素;若原来的链表里有元素,则将指向头结点指针存储的学号与头指 针下一个的学号大小进行比较,小的在前大的在后,之后指向头结点处的指正后移,进行比较,直到尾结点为止 在进行比较的while函数,每比较一次,计算总人数的 TOTAL_NUM加。(3)Display浏览函数:将传给Display函数的指针P所指向的结构体的各项数据输出以

4、便核对信息。(4)DisplayAII 浏览函数:指针指向链表头结点,在if语句中嵌套do-while语句将学生信息按学号从大到 小进行逐一输出。(5)Query查询函数:首先使用switch语句生成菜单,实现操作选择功能。分三个部分按学号查询、按姓名查询和取消返回上一层。按学号查询时调用while语句对学号检索,再调 用if语句进行判断,最后输出想要查询的信息。按姓名查询的方法跟按学号查 询的一样。(6)Del删除函数:使用while语句进行检索,直接删除学生信息。(7)Change修改函数:建立devise函数,生成菜单,用switch语句进行分叉选择功能,选择项目进行 相应的信息输入。在

5、 Change函数中使用while语句进行检索后再调用devise 函数修改信息。实现学生信息修改。四、调试与测试1、进行多次运行,发现那栏的一打长就会显示一样的数字, 打短的数字就可以。 我们原本是使用长整型来定义,想说空间不够,后来改用字符型,用字符串记录程序运行结果正确2、程序设计初就在考虑退出与返回有什么差别,如果返回了主菜单那退出用什么,关于这个问题看了许多网上的资料,发现许多程序都有exit ( 0)的函数,所以去查了不少关于exit的函数容,最后退出就用了 exit(0),但是又提醒说要 编写exit函数,之后发现要加入stdlib.h的头文件,程序可以正常运行。3、程序在180

6、行显示说readData函数不可以返回值,所以在if条件句中将 return 0删除了,不过这个程序在学校的机房即使不删 return 0也是可以运行 的,关于这点很是不解,还有待解决。五、测试结果1、进入系统界面,输入密码,超过三次会自动退出。+I欢迎使用学生信息管理系统+密码为123请输入您的密码:2、选1时录入学生信息,编辑完后会继续显示菜单请输入学生的性别;女该学生的信息为:性别 出生年月 女 帥辿 F酬地址 电话E- -jnail1570E951000570123562-45 -Q-曲I览学些話 -沓-%兰丄订g. -TM除学生信息 (歩改学生信息Hfi出系统请输人学生的出生年月:9

7、4卿 请输入学生茁她址:福州请输入学牛序电话:1?705951000 请输A.学生的E-mai :57012345&请输入您的选择3、选2浏览学生信息,之后继续返回菜单界面,为节省空间菜单界面暂不截图请输入您的选择=2学生总数理学号 姓名 年龄 性别 岀生年月地址 电话貝 iMBg,貝Bg jHg | 貝jHg(Mg 利 ajj jHgI ft, 貝” gSH,貝吕;. gBMg 利,gM, |B 严 |B|1 王悅瑶19女9409福外157059510005701234562 陈贵琛20女9303袁州1F705951900123546854、选择3查询学生信息会有按学号与按姓名查询。下图是先

8、按学号查询的截图。请输入您的选择;3薛矗帚届丁按姓名查询请按2取消请按0谙输入您的选择=1请输入学生的学号:1学号姓名 年龄性别岀生年月地址 电话E-mail1王悦瑶 19女9409 福州15Y059510005701234565、按姓名查询时,如果查无此人会显示 “没有该学生信息, 请核对。”之后返回上一层, 按姓名查询。显示学生信息后可以选择取消返回主菜单。按学号查询倩按1按姓名查询请按2 取消请按012 0土冃主冃鼻冃请输入您的选择:2 请辅入学生的姓名李 没有该学生记录,请核对按学号查询 按姓名查询 取消请输入您的选择* 2请输入学生的姓名王悦瑶学号 姓名 年龄 性别出生年月地址 电话

9、 E-mailmjn. mn nn m jnmjn. mjn jn .r m H r.按按按41 m m WH主冃Fl IL1王悦瑶 19 女 9409 福州 1570595100045641546548按学号查询 按姓名查询 取消请输入您的选择6、选择4删除学生,输入学号删除学生的信息。之后会返回主菜单0if曙默轟豔黑生的学号 17选择5修改学生信息,按学号输入,之后按显示输入即可。学生信息管理系统息息息息息 言亠二即兰GB亠刍 知勾自知句统 学学学学学齐 入览询除改出 佥做-s#include vmalloc . h#include #include #inelude vstdlib .

10、h #define NULL 0#define LEN sizeof (struct student)#define FILE_DATA_PATHc:student.txt struct stude nt long int num;char n ame20;int age;char sex4;char birthday10;char address30;char tele_num13;char E_mail20;struct student *next; ;int TOTAL_NUM= 0;struct stude nt*head = NULL;void welcome();void main

11、menu();void record();void insert( struct student*stu);void display( struct student *stu);void displayAII(); void query();void query_by_num(); void query_by_name();void readData();void writeData();void freeAII();void del();void change();void devise( struct student *p); int main() char userPWD7; int i

12、;welcome。;for (i = 0; i 3; i +)printf(n 密码为 123n);printf(n请输入您的密码:);sca nf(%s, userPWD);if(strcmp(userPWD, 123)=0)/密码正确,显示主菜单mainmenu();break;elseif (i num);scanf(%s,pO- name);printf(请输入学生的年龄:);scanf(%d, &p0- age);printf(请输入学生的性别:);scanf(%s,pO -sex);printf(请输入学生的出生年月:);scanf(%s,pO - birthday);printf

13、(请输入学生的地址:);scanf(%s,pO - address);printf(请输入学生的:);scanf(%s,pO -tele_num);printf(请输入学生的E-mail:);scanf(%s,pO- E_mail);in sert(pO);printf(该学生的信息为:n);printf(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA );printf(学号t姓名t年龄t性别t出生年月tt 地址ttE-mailn );display(pO);void insert

14、(struct student*stu) /根据学号对学生进行排序IIstruct student *pO, *p1, *p2; pl = head;pO = stu;if (head = NULL) head = pO; pO -next = NULL; else while (pO- num p1 - num)&(p1- next != NULL) p2 = p1; p1 = p1 - next; if (pO-num num) if (head=p1) head = pO;else p2- n ext = pO;pO- n ext=p1;else p1 -n ext = pO;pO -

15、n ext=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_num, p - E_mail); / 浏览学生信void displayAll() struct stude nt *p;printf(学生总数:%dn , TOTAL_NUM);p = head;if (head != NULL) ttE-mailn );printf( n学号t姓名t年龄

16、t性别t出生年月t地址Word文档资料printf(AAAAAAAAAAAAAAAAAAA);AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAprintf( n学号t姓名t年龄t性别t出生年月t地址Word文档资料=p- next; while (p != NULL); do display(p); p printf( n ); /查询学生信息 void query() int choice;choice = -1;printf(n);printf(+nprintf(|按学号查询请按1 |nprintf(|按姓名查询请按

17、2 |nprintf(|取消请按0 |nprintf(+-+nprintf(请输入您的选择:);scanf(%d, &choice);switch(choice) case 0:do););II);II););return ;case 1:query_by_ num(); break;case 2:query_by_ name();break;default : printf( n 无效选项! ); break; while (choice != 0); /按学号查询学生信息 void query_by_num() int num;struct stude nt *p1;printf(请输入学

18、生的学号:);scanf( %ld, &num);if (head=NULL) printf(无学生记录! n ); return ; p仁head;while (num!= p1- num &p1 - next != NULL) p1 =p1- next;if (num = p1 - num) printf( n学号t姓名t年龄t性别t出生年月t地址ttE-mailn );printf(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA )display(pl); else prin

19、tf(没有该学生记录,请核对!); /按姓名查询学生信息void query_by_name() char name20; struct student *p1; printf( 请输 入学生的姓名:);scanf( %s, name); if (head=NULL) printf( 无学生记录! n);return ; pl =head;while (strcmp(name, pl -name) &p1 -next != NULL) pl =p1-next;if (! strcmp(name, pl -name) ttE-mailn);printf(AAAAAAAAAAAAAAAAAAAAA

20、AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA);display(pl); else printf(没有该学生记录,请核对!);/写入文件void writeData() FILE * fp; /文件指针struct stude nt *p;fp = fope n(FILE_DATA_PATH, w);return ;if ( !fp) printf(文件打开错误!);fprintf(fp,%dn, TOTAL_NUM);for (p = head; p != NULL; p = p - next)fprin tf(fp,

21、 %ldt%st%dt%st%st%st%st%snp-num, p-name, p-age, p -sex, p - birthday, p -address, p-tele_num, p -E_mail); fclose(fp); 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,

22、 r);if ( !fp) printf(文件打开错误! );fscanf(fp, %dn, &TOTAL_NUM);head = p1 = p2 = (struct stude nt *)malloc(LEN);fsca 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, %

23、ldt%st%dt%st%st%st%st%sn,&p1-num, p1 - n ame, &p1- age, p1 - sex, p1 - birthday, p1 - address,&p1-tele_num, p1 - E_mail); p2 -next = p1; p2 = p1; p2- n ext=NULL; fclose(fp);/删除学生信息void del() struct stude nt *p1,*p2;long intnum;if (head=NULL) printf(无学生记录! n);return ; printf(请输入您要删除的学生的学号:);scanf( %l

24、d, &num);p1 = head;while (num != p1 - num &p1 - next != NULL) p2 =p1;p1=p1-n ext;if (num=p1-num) if (p1 =head)head=p1- n ext;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);return ; printf(请输入您要修改的学生的学号:);scanf( %ld, &num);p1 =head;while (num != p1-num &p1 - next != NULL) p2 =p1; p1 =p1- next; if (num=p1

温馨提示

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

评论

0/150

提交评论